[计算机类试卷]国家二级(C语言)机试模拟试卷144及答案与解析.doc

上传人:dealItalian200 文档编号:502882 上传时间:2018-11-29 格式:DOC 页数:30 大小:78.50KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)机试模拟试卷144及答案与解析.doc_第1页
第1页 / 共30页
[计算机类试卷]国家二级(C语言)机试模拟试卷144及答案与解析.doc_第2页
第2页 / 共30页
[计算机类试卷]国家二级(C语言)机试模拟试卷144及答案与解析.doc_第3页
第3页 / 共30页
[计算机类试卷]国家二级(C语言)机试模拟试卷144及答案与解析.doc_第4页
第4页 / 共30页
[计算机类试卷]国家二级(C语言)机试模拟试卷144及答案与解析.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、国家二级( C语言)机试模拟试卷 144及答案与解析 一、选择题 1 设数据结构 B=(D, R),其中 D: a, b, c, d, e, f R=(f, a), (d, b), (e, d), (c, e), (a, c) 该数据结构为 ( )。 ( A)线性结构 ( B)循环队列 ( C)循环链表 ( D)非线性结构 2 下列叙述中错误的是 ( )。 ( A)循环队列空的条件是队头指针与队尾指针相同 ( B)若二叉树没有叶子结点,则为空二叉树 ( C)带链栈的栈底指针是随栈的操作而动态变化的 ( D)若带链队列中 只有一个元素,则队头指针与队尾指针必定相同 3 某带链栈的初始状态为 to

2、p=bottom=NuLL,经过一系列正常的入栈与退栈操作后, top=bottom=20。该栈中的元素个数为 ( )。 ( A) 1 ( B) 0 ( C) 20 ( D)不确定 4 设一棵度为 3的树,其中度为 2, 1, 0的结点数分别为 3, 1, 6。该树中度为 3的结点数为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D)不可能有这样的树 5 下面描述错误的是 ( )。 ( A)模块的独立性与模块的信息隐蔽和局部化无关 ( B)内聚性和耦合性是模块独立程度的定性度量标准 ( C)一个模块的内聚性越高则该模块的独立性越强 ( D)一个模块的耦合性越高则该模块的独立性越弱

3、6 下面属于黑盒测试方法的是 ( )。 ( A)错误推测法 ( B)基本路径测试 ( C)判定覆盖 ( D)条件覆盖 7 下面模型中为概念模型的是 ( )。 ( A)实体一联系模型 ( B)层次模型 ( C)关系模型 ( D)网状模型 8 学生关系模式中有 D(D#, Dn, D1, DAddr。 )(其属性分别为系编号、系名称、系主任和系地址 )和 S(S#, Sn, SG, Date, Maj, D#)(其属性分别为学号、姓名、性别、入学日期、专业和系编号 )两个关系,关系 S的主键 (码 )是 S#,关系 S的外键 (码 )是 ( )。 ( A) D# ( B) Maj ( C) D1

4、( D) Dn 9 关系的实体完整性要求关系中不能为空的属性是 ( )。 ( A)主键属性 ( B)外键属性 ( C)全部属性 ( D)候选键属性 10 学生选修课程的关系模式为 SC(S#, Sn, Sd, Sa, C#, G)(其属性分别为学号、姓名、所在系、年龄、课程号和成绩 ); C(C#, Cn, P#)(其属性分别为课程号、课程名、先选课 )。关系模式中包含对主属性部分依赖的是 ( )。 ( A) S#Sd ( B) (S#, C#)C ( C) C#Cn ( D) C#P# 11 以下叙述中错误的是 ( )。 ( A) main()是 C语言主函数的起始 ( B) main()作

5、为主函数必须位于源程序的起始位置行 ( C) main()是 C程序执行的起始行 ( D) main是不可替代的主函数名 12 以下叙述中错误的是 ( )。 ( A)在一个程序中,每个模块均可以独立编译运行 ( B)程序 “模块化 ”有利于任务的分解简化 ( C)允许对函数单独进行编译,是 C语言实现 “模块化 ”的基础 ( D)采用模块化结构,可以提高编程效率 13 以下关于注释的叙述中错误的是 ( )。 ( A)注释的边界符号 “ ”和 “*”之间不允许加入空格 ( B) C语言允许注释出现在程序中任意合适的地方 ( C)注释的内容仅用于阅读,对程序的运行不起作用 ( D)注释的边界符号

6、“ *”和 “* ”必须成对出现且可以嵌套 14 以下是正确 C语言标识符的是 ( )。 ( A) _8_ ( B) 8 ( C) 8 ( D) -8- 15 算术运算符和圆括号有不同的运算优先级,对于表达式: a+b+c*(d+e),关于执行顺序,以下说法正确的是 ( )。 ( A)先执行 (d+e)得 r2,再执行 c*r2得 r3,再执行 a+b得 r1,最后执行 r1+r3得表达式最后结果 ( B)先执行 a+b得 r1,再执行 (d+e)得 r2,再执行 c*r2得 r3,最后执行 r1+r3得表达式最后结果 ( C)先执行 (d+e)得 r2,再执行 c木 r2得 r3,再执行 b

7、+r3得 14,最后执行 a+14得表达式最后结果 ( D)先执行 a+b得 r1,再执行 r1+c得 r5,再执行 (d+e)得 r2,最后执行 r5*r2得表达式最后结果 16 设有定义语句: double x=123 456: 则语句 printf(“ 6 2f, 3 0f n“, x, x); 的输出结果是 ( )。 ( A) 123 46, 123 0 ( B) 123 45, 123 ( C) 123 46, 123 ( D) 123 45, 123 17 有如下程序 #include stdio h main() int x=072: printf(“ d n“, x+1); 程

8、 序运行后的输出结果是 ( )。 ( A) 073 ( B) 73 ( C) 142 ( D) 59 18 有以下程序 #include stdi0 h void main() double x=3 14159: printf(“ f n“, (int)(x*1000+0 5) (dfuble)1000); 程序运行后的输出结果是 ( )。 ( A) 3 142000 ( B) 3 141000 ( C) 3 143000 ( D) 3 140000 19 以下选项中错误的是 ( )。 ( A) printf(“ s n“, s); ( B) printf(“ d c n“, s, s); (

9、 C) printf(“ c n“, s-32); ( D) pfinff(“ c n“, 65); 20 若有定义: int a, b, c;,想通过语句: scanf(“ d, d d“, &a, &b, & ( A);把 1、 2、 3分别输入给变量 a、 b、 c,则正确的键盘输入是 ()。 ( B) 1, 2, 3回车 ( C) 1, 2 tab 3回车 ( D) 1回车 tab 2 tab 3 ( E) D 21 有以下程序 #include stdio h main() int a=1, b=2, c=3, d=4, r=0; if(a!=1)r=1; if(b=2)r=2; e

10、lse if(c!=3)r=3; else if(d=4)r=4; pfinff(“ d n“, r); 执行后的输出结果是 ( )。 ( A) 0 ( B) 4 ( C) 1 ( D) 2 22 若有如下形式的函数 int fun(int a, int*p, int n) 调用函数之前需要对函数进行声明,则以下选项中错误 的是 ( )。 ( A) int fun(int, int, int); ( B) int fun(int a, int*p, int n); ( C) int fun(int a, int*, int); ( D) int fun(int, int*, int); 23

11、有以下程序 #include stdio h main() int i, j=0; char a=“abl23c4d56efTgh89“; for(i=0; ai; i+) if(ai =0&ai =9) aj+j=ai; aj= 0; pfinff(“ s“, a); 程序执行后的输出结果是 ( )。 ( A) 123456789abcdefgh ( B) abcdefgh ( C) 123456789 ( D) 1234567896effgh89 24 有以下程序 #include stdio h main() int a=-2, b=2; for(;, +a&-b; ) printf(“

12、 d, d, “, a, b); 程序执行后的输出结果是 ( )。 ( A) 0, 1, ( B) -1, 1, 0, 1, ( C) -1, 1, 0, 0, ( D) -1, 1, 25 若有以下程序 #include stdio h int fun(int x) int y; y=x+: return y; main() int k; for(k=0; k 3; k+)pfinff(“ d, “, fun(k)+k); k+; 执行后的输出结果是 ( )。 ( A) 1, 5, ( B) 0, 6, ( C) 0, 4, ( D) 1, 7, 26 有以下程序 #include stdi

13、o h int*f(int*s) s+=2; s1+=6; *s=7; return s; main() int a5=1, 2, 3, 4, 5, *p=a; p=f(p); pfinff(“ d, d, d, d“, a0, a1, *p, P1); 程序执行后的输出结果是 ( )。 ( A) 1, 2, 7, 10 ( B) 7, 8, 7, 8 ( C) 1, 2, 1, 2 ( D) 7, 10, 7, 10 27 有以下程序 #include stdio h main() int a=6, i; for(i=1; i =3; i+) if(a =5)break; if(a 2)a+

14、=2; continue; a=(a-3, a+4); pfinff(“ d, d“, i, a); 程序执行后的输出结果是 ( )。 ( A) 0, 6 ( B) 1, 6 ( C) 8, 6 ( D) 4, 2 28 以下表达式中,其值不等于数值 3的是 ( )。 ( A) o+3 ( B) D-A ( C) 3-0 ( D) d-a 29 有以下程序 #include stdio h void fun(int a, int n, int flag) int i=0, j, t; for(i=0; i n-1; i+) for(j=i+1; j n; j+) if(flag) if(ai

15、aJ) t=ai; ai=aj; aj=t; else if(ai aj) t=ai; ai=aj; aj=t; main() int c10=7, 9, 10, 8, 3, 5, 1, 6, 2, 4, i; fun(c, 10, 0); fun(c, 5, 1); for(i=0; i 10; i+) printf(“ d, “, Ci); 程序运行结果正确的是 ( )。 ( A) 6, 7, 8, 9, 10, 5, 4, 3, 2, 1, ( B) 5, 4, 3, 2, 1, 6, 7, 8, 9, 10, ( C) 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, (

16、D) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 30 下面关于编译预处理的命令行中,正确的是 ( )。 ( A) #define int INT ( B) #define eps0 001 ( C) #DEFINE TRUE ( D) #define E2 88 31 有如下程序 #include stdio h main() int i, data; scanf(“ d“, &data); for(i=0; i 5; i+) if(i data&i 2)|(i data&i 3=0)continue; printf(“ d, “, i); 程序运行时,从键盘输入: 13回

17、车后,程序输出结果为 ( )。 ( A) 0, 2 4, ( B) 1, 3, 5, ( C) 0, 1, 2 3, 4, 5, ( D) 0, 1, 2, 3, 32 设变量 n已正确定义并赋值,以 下不能实现自然数 1到 n累加求和的程序段是( )。 ( A) int sum=1, i=0; while(i =n) i+; sum+=i; ( B) int sum=0, i=1; while(i =n) sum+=i; i+; ( C) int sum=0, i=0; while(i n) i+; sum+=i; ( D) int sum=1, i=1; while(i n) i+; su

18、m+=i; 33 关于数组和指针,以下说法错误的是 ( )。 ( A)数组名本身就是一个指针,指向数组内 存的起始位置 ( B)既可以读人数据到数组中,也可以读入数据到未赋初值的指针中 ( C)可以让一个指针指向一个同类型的数组 ( D)指针可以指向同类型的数组中的任意一个元素 34 有下列程序 #include stdio h int*f(int*s) s+=1; s1+=6; *s+=7; return s; main() int a5=1, 2, 3, 4, 5, *p; p=f(&a1); printf(“ d, d, d, d“, a1, a2, *p, P1); 程序 执行后的输出

19、结果是 ( )。 ( A) 3, 9, 10, 5 ( B) 2, 16, 4, 5 ( C) 2, 10, 10, 5 ( D) 10, 9, 4, 5 35 有以下程序 #include stdio h double fun1(double a, int n) int i; double sum=0 0; for(i=0; i n; i+) sum+=ai n; return sum; void fun2(double a, in tn, double*p, double*q) int i; *p=*q=a0; for(i=1; i n; i+) if(ai *p)*p=ai; else

20、if(ai *q)术 q=ai; voicmain() double a=1, 2, 3, 4, 5; double mx, mn, av; av=fun1(a, 5); fun2(a, 5, &mx, &mn); printf(“ f f f n“, av, mx, mn); 程序的运行结果是 ( )。 ( A) 5 0000003 0000001 000000 ( B) 3 0000005 0000001 000000 ( C) 1 0000005 0000003 000000 ( D) 3 0000001 0000005 000000 36 设有函数说明语句: int fun(int,

21、int); 以及函数指针定义语句: int(*f)(int, int); 若要使函数指针指向函数 fun的入口地址,以下选项中正确的是 ( )。 ( A) f=fun(); ( B) *f=fun; ( C) f=fun; ( D) *f=fun(); 37 有如下程序 #include stdio h struet group int first, second, third; ; struet group get_rain_maxsum(int*array, int len) int i; struet group re$; res first=array0; res second=arr

22、ay0; res third=array0; for(i=1; i len; i+) if(arrayi res first) res first=arrayi; if(arrayi res second) res second=arrayi; res third+=arrayi; return res; main() int array5=9, 1, 3, 4; struet group res=get_min_max_sum(array, 5); printf(“main= d, max= d, sum= d n“, res first, res second, res third); 程

23、序运行后的输出结果是 ( )。 ( A) min=0, max=9, sum=17 ( B) min=1, max=9, sum=16 ( C) min=1, max=4, sum=15 ( D) min=0, max=4, sum=16 38 若有语句: void*p=malloc(80);,则以下叙述错误的是 ( )。 ( A)可以通过指针 p直接访问用 malloc开辟的这块内存 ( B) P所指内存可以通过强制类型转换当作具有 20个 int型元素的一维数组来使用 ( C) P所指内存可以通过强制类型转换当作具有 10个 double型元素的一维数组来使用 ( D) P所指内存可以通过

24、强制类型转换当作具有 80个 char型元素的一维数组来使用 39 设有如下类型说明语句 typedef struet int num; struetint y, m, d; date; PER; 则以下定义结构体数组并赋初值的语句中错误的是 ( )。 ( A) PER st2=1001, 2008, 8, 1, 1002, 2006, 5, 20; ( B) PER st2=1001, 2008, 8, 1, 1002, 2006, 5, 20; ( C) PER st2=1001, 2008, 8, 1, 1002, 2006, 5, 20; ( D) PER st2=1001, 2008

25、, 8, 1, 1002, 2006, 5, 20; 40 C语言中标准库函数 fputs(str, fp)的功能是 ( )。 ( A)从 str指向的文件中读一个字符串存入 fp指向的内存 ( B)把 str所指的字符串输出到 fp所指的文件中 ( C)从 fp指向的文件中读一个字符串存人 str指向的内存 ( D)把 fp指向的内存中的一个字符串输出到 str指向的文件 二、程序填空题 41 函数 fun的功能是:将一副扑克牌编号为 1, 2, 3, , 53, 54,以某种特定的方式洗 牌,这种方式是将这副牌分成两半,然后将它们交叉,并始终保持编号为1的牌在最上方,如第一次这样洗牌后的结

26、果为: 1, 28, 2, 29, , 53, 27,54。两次洗牌后的结果为: 1, 41, 28, 15, 2, 42 , 53, 40, 27, 14, 54程序的功能是:输出经过 n次这样洗牌后的结果。 请在程序的下画线处填入正确的内容,并把下画线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1 C中。不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h void fun(int a55, int n) int i, k; *found* int【 1】 55; for(i=0; i n; i+) for(k=1; k =2

27、7; k+) b2*k-1=ak; *found* b【 2】 *k=ak+27; for(k=1; k =54; k+) *found* ak=【 3】; main() int m, a55, i; for(i=1; i 55; i+)ai=i; pfinff(“请输入洗牌次数: “); scanf(“ d“, &m); fun(a, m); for(i=1; i 55; i+)printf(“ d, “, ai); printf(“ n“); 三、程序修改题 42 下列给定程序中函数 fun的功能是:逐个比较 p、 q所指两个字符串对应位置上的字符,并把 ASCII值大或相等的字符依次存放

28、到 c所指的数组中,形成一个新的字符串。 例如,若主函数中 a字符串为 “aBCDeFgH”, b字符串为 “Abcd”,则 c中的字符串应为 “aBcdeFgH”。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件 MODI1 C中,不得增行或删行,也不得更改程序的结构 ! #include stdio h #include string h void fun(char*p, char*q, char*c) *found* int k=1: *found* while(*p!=*q) if(*p *q)ck=*q; else ek=*p; if(*p)p+; if(*q)q

29、+; k+; main() char a10=“aBCDeFgH“, b10=“ABcd“, c80= 0; fun(a, b, c); printf(“The string a: “); puts(a); printf(“The string b: “); puts(b); printf(“The result: “); puts(c); 四、程序设计题 43 编写函数 fun,其功能是:求 ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串 123412132,输入字符为 1,则输出 3。 注意:部分源程序在文件 PROG1 C中。 请勿改动主函数 main和其他函数中的任何

30、内容,仅在函数 fun的花括号中填入你编写的若干语句。 #inelude stdio h #include string h #defineM81 int fun(char*ss, char c) main() char aM, ch; void NONO(); printf(“ nPlease enter a string: “); gets(a); printf(“ nPlease enter a char: “); ch=getehar(); printf(“ nThe number of the char is: d n“, fun(a, ch); NONO(); void NONO(

31、) *本函数用于打开文件,输入测试数据,调用 fun函数,输出数据,关闭文件。* int i; FILE*rf, *wf; char aM, bM, ch; rf=fopen(“in dat“, “r“); wf=fopen(“out dat“, “w“); for(i=0; i 10; i+) facnf(rf, “ s“, a); fscanf(rf, “ s“, b); ch=*b; fprintf(wf, “ c= d n“, ch, fun(a, ch); felose(rf); fclose(wf); 国家二级( C语言)机试模拟试卷 144答案与解析 一、选择题 1 【正确答案】

32、 A 【试题解析】 数据的逻辑结构有两个要素:一是数据元素的集合,通常记为 D;二是 D上的关系,它反映了 D中各数据元素之间的前后件关系,通常记为 R。即一个数据结构可以表示成 B=(D, R)。其中 B表示数据结构。为了反映 D中各数据元素之间的前后件关系,一般用二元组来表示。例如,假设 a与 b是 D中的两个数据,则二元组 (a, b)表示 a是 b的前件, b是 a的后件。如果一个非空的数据结构满足下列两个条件: 有且只有一个根结点; 每一个结点最多有一个前件,也最多有一个后件。则称该数据结构为线性结构。如果一个数据结构不是线性结构,则称之为非线性结构。根据上述理论,本题中 f为根结点

33、,每个结点有一个前件和一个后件,符合线性结构的定义。故本题答案为 A选项。 2 【正确答案】 A 【试题解析】 在循 环队列中,当 front=rear时,不能确定是队列满还是队列空。在实际使用循环队列时,为了能区分队列满还是队列空,通常还需要增加一个标志 s。当 s=0时表示队列空,当 s=1且 front=rear时表示队列满。故本题答案为 A选项。 3 【正确答案】 A 【试题解析】 带链的栈是具有栈属性的链表。线性链表的存储单元是不连续的,为把存储空间中一些离散的空闲存储结点利用起来,把所有空闲的结点组织成一个带链的栈,称为可利用栈。线性链表执行删除操作运算时,被删除的结点可以“回收

34、”到可利用栈,对应于可利用栈的入栈 运算,线性链表执行插入运算时,需要一个新的结点,可以在可利用栈中取栈顶结点,对应于可利用栈的退栈运算。可利用栈的入栈运算和退栈运算只需要改动 top指针即可。当 top=bottom=20时链栈中的元素个数为 1。故本题答案为 A选项。 4 【正确答案】 A 【试题解析】 根据题目有 6个度为 0的结点: 1个度为 1的结点:3个度为 2的结点: 因此最后度为 3的结点有 1个: 故本题答案为 A选项。 5 【正确答案】 A 【试题解析】 模块独立性的概念是抽象、模块化、信息隐蔽和局部化的直接结果。模 块的独立性是指软件模块的编写和修改应使其具有独立功能,且

35、与其他模块的关联尽可能少。故本题答案为 A选项。 6 【正确答案】 A 【试题解析】 黑盒测试方法也称为功能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。白盒测试方法主要有逻辑覆盖测试(语句覆盖、路径覆盖、判断覆盖、条件覆盖 )、基本路径测试等。故本题答案为 A选项。 7 【正确答案】 A 【试题解析】 数据模型按照不同的应用层次分为 3种类 型:概念数据模型、逻辑数据模型、物理数据模型。概念数据模型有实体联系模型 (ER模型 )、面向对象模型及谓词模型;逻辑数据模型有层次模型、网状模型、关系模

36、型和面向对象模型。故本题答案为 A选项。 8 【正确答案】 A 【试题解析】 在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。表A中的某属性集是某表 B的键,则称该属性集为 A的外键或外码。故本题答案为A选项。 9 【正确答案】 A 【试题解析】 关系模型中可以有 3类完整性约束:实体完整性约束、参照完整性约束和用户定义的完整性约束。实体 完整性约束是指若属性 M是关系的主键,则属性 M中的属性值不能为空值。故本题答案为 A选项。 10 【正确答案】 A 【试题解析】 若 XY ,但 Y不完全函数依赖于 X,则称 Y对 X部分依赖。关系模式 Sc中,主键为 (S#, C#),但显然有

37、S#Sd , S#Sa ,存在非主属性对主属性的部分依赖。故本题答案为 A选项。 11 【正确答案】 B 【试题解析】 C语言规定必须用 main作为主函数名,选项 D正确; main()是 C语言中主函数的起始行,也是 C程序执行的起始行,选项 A、 C正确; main()作为主函数 可以在源程序的任意位置,但是程序执行必须从 main()函数开始,选项B错误,本题答案为 B 12 【正确答案】 A 【试题解析】 在程序设计时,用一个个小模块来实现不同的功能,每个程序设计人员分别完成一个或多个小模块,称这样的程序设计方法为 “模块化 ”。由一个个功能模块构成的程序结构称为模块化结构,使用模块

38、化结构程序设计,有利于任务的分解简化,选项 B正确; C语言允许对函数单独进行编译,从而可以实现模块化,选项 C正确;采用模块化结构,可以使不同模块的程序员分别编写和调试,大大提高了编程效率,选项 D正确; 在 C语言程序中,每个模块并不一定能够单独编译运行,选项 A错误,本题答案 A。 13 【正确答案】 D 【试题解析】 在编写程序时可以在程序中加入注释,以说明变量的含义,在添加注释时,注释内容必须放在符号 “ *”和 “* ”之间, “ *”和 “* ”必须成对出现, “ ”与 “*”之间不可以有空格,选项 A正确;注释可以用英文,可以用中文,可以出现在程序中任意合适的地方,选项 B正确

39、;注释部分只是用于阅读,对程序的运行不起作用,选项 C正确;使用 “ *”和 “* ”的注释之间不可再嵌套 “ *”和 “* ”,选项 D错误, 本题答案为 D。 14 【正确答案】 A 【试题解析】 合法 C语言的标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,选项 A正确;符号不合法,选项 B错误;符号不合法,选项 C错误;一符号不合法,选项 D错误;本题答案为 A。 15 【正确答案】 B 【试题解析】 题意表达式中,圆括号的优先级最高,乘法运算符次之,加法运算符最低,同优先级中,加法运算符的结合性从左向右结合,所以题意中的表达式执行顺序是:先执

40、行 a+b得 r1,再执行 (d+e)得 r2,再执行 c*r2得 r3,最后执行r1+r3得表达式最后结果,本题答案为 B。 16 【正确答案】 C 【试题解析】 对于 double类型的实数,可以在 printf()函数的格式化字符串中使用 “n1 n2”的形式来指定输出宽度 (n1和 n2分别代表一个整常数 ),其中 n1指定输出数据的宽度 (包括小数点 ), n2指定小数点后小数位的位数, n2也称为精度;对于格式字符 f,当输出数据的小数位多余 n2位时,截取右边多余的小数,并对截取部分的第一位小数做四舍五入处理;当输出数据小数位少于 n2时,在小数的最右边补 0,使得输出数据的 小

41、数部分宽度为 n2;如果指定 “n1 0”格式,则不输出小数点和小数部分;题意中, 6 2f表示输出 6位宽度, 2位小数,所以被截取的小数位: 0 006四舍五入,结果为 123 46: 3 0f表示输出 3位宽度, 0位小数,结果为 123,本题答案为 C 17 【正确答案】 D 【试题解析】 题意中 x是一个整型变量,赋值为 072,以 0开头的整数是八进制的表示形式, printf()函数中,格式字符 d表示以十进制形式输出 x+1,所以需要将 072转换成十进制数: 7*8+2=58,输出 x+1为 59,所以本题答案为 D。 18 【正确答案】 A 【试题解析】 根据算术表达式和运

42、算符的优先级与结合性,对于题意表达式:int(x*1000+0 5) (double)1000,首先计算 x*1000,由于 x是 double类型, 1000是整型,所以 x*1000的结果默认是 double类型: 3141 59;再加 0 5后执行 int的强制转换,结果为 3142;分母 (double)1000强制转换为 double类型,此时 3142 (double)1000中, 3142需要转换成 double类型,然后除以 1000,结果为3 142000,保留小数点后 6位,本题答案为 A。 19 【正确答案】 A 【试题解析】 单引号括起来的单个字符,属于字符常量,对应的

43、格式字符是c,双引号括起来的若干字符,属于字符串常量,对应的格式字符是 s,选项 A错误; d是整型数据的格式字符,由于字符常量或变量也可以作为整型数,也可以作为整数参与算术运算,所以选项 B、 C正确;同理,整数也可以作为字符常量,选项 D正确;本题答案为 A。 20 【正确答案】 B 【试题解析】 题意中,输入语句 scanf()的格式控制字符串中,第一个 d与第二个 d之 间有一个逗号,第二个 d与第三个 d之间有一个空格,所以输入的第一个整数和第二个整数之间也必须要有一个逗号,选项 C、 D错误;对于第二个整数和第三个整数之间的空格,可以使用 tab、回车、空格符,选项 A错误;本题答

44、案为 B。 21 【正确答案】 D 【试题解析】 第一个 if语句是单独的语句,所以执行完第一个 if语句后, r的值仍为初值 0;第二个 if语句与后续的两个 else if都是嵌套的,所以只会执行其中的一个语句,即 if(b=2)r=2;这条语句,所以本题答案为 D。 22 【正确答案】 A 【试题解析】 C语言中,函数声明的函数名、返回值类型和参数列表必须与函数定义相同,其中参数列表中可以省略参数名。题意中, fun()函数返回整犁,三个参数分别是:整型指针、整型指针、整型。选项 A中,第一个参数应该是整型指针类型,第二个参数也应该是指针类犁,错误;其他选项都正确,本题答案为 A 23

45、【正确答案】 C 【试题解析】 题意定义了字符数组 a,它包含数字字符和字母字符;然后通过for循环,将 a中所有的数字字符前移,舍去其他字符,并在数字字符后添加字符串结束符 0, for循环结束后,数组 a的 值为: 1234 56789,本题答案为 C。 24 【正确答案】 D 【试题解析】 程序中 a初值为 -2, for循环执行 +a后结果为 -1, b初值为 2, for循环执行 -b后结果为 1,所以 for循环的循环条件 -1&1的值为真,执行 printf语句输出 -1, 1;接着下一次循环时, +a结果为 0, -b结果为 0, 0&0结果为假, for循环结束,本题答案为

46、D。 25 【正确答案】 C 【试题解析】 fun()函数的功能是将参数 x的值赋给 y,然后 x自增 1,返回 y的值,所以: fun()的返回值与实 参值相同; main()函数的 for循环中, k的初值为0,执行 printf语句时,输出 fun(0)+0,结果为 0;接着执行两次 k+,此时 k的值为 2,循环条件 k 3满足,继续执行 printf()函数,输出 fun(2)+2,结果为 4;接着再次执行 2次 k+, k为 4,不满足循环条件,程序运行结束,所以程序输出结果为: 0, 4,本题答案为 C。 26 【正确答案】 A 【试题解析】 f()函数接收一个数组 a的首地址

47、s,然后将 s指针向后移动两个单位,此时 s指向数组 a的第 3个元素,即 3,然后将 s的后一个元素累加 6, s指向的元素赋值为 7,并返回 s指针赋给实参 p,所以 f()函数调用后, a数组中的元素分别为: 1, 2, 7, 10, 5。执行 p=f(p)后, p指向第 3个元素,所以输出 a0为1, a1为 2, *p为 7, p1为 10,本题答案为 A。 27 【正确答案】 B 【试题解析】 程序在进入 for循环时, a的初值为 6, i的初值为 1, for循环中,if(a =5)语句成立,执行 break,跳出 for循环,此时 a的值为 6, i的值为 1,所以程序输出 1, 6,本题答案为 B。 28 【正确答案】 A 【试题解析

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1