[计算机类试卷]国家二级(C语言)机试历年真题试卷汇编24及答案与解析.doc

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

1、国家二级( C语言)机试历年真题试卷汇编 24及答案与解析 一、选择题 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 某带链栈的初始状态为

2、top=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, Dl, DAddr)(其属性分别为系编号、系名称、系主任和系地 址 )和 S(S#, Sn, SG, Date, Mai, D#)(其属性分别为学号、姓名、性别、入学日期、专业和系编号 )两个关系,关系 S的主键 (码 )是 S#,关系 S的外键(码 )是 ( )。 ( A) D# ( B) Maj ( C) Dl

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#)G ( 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,再

7、执行 b+r3得 r4,最后执行 a+r4得表达式最后结果 ( D)先执行 a+b得 r1,再执行 r1+c得 r5,再执行 (d+e)得 r2,最后执行 r5*r2得表达式最后结果 16 设有定义语句: d(mble 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 0 17 有如下程序 #include stdio h main( ) int x=072; printf(“ d n“,

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

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

10、 if(b=2)r=2; else if(c!=3)r=3; else if(d=4)r=4; pfintf(“ 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, i

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

12、-b; ) prinff(“ 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 y) int y; y=x+: return y; main( ) int k; for(k=0; k 3; k+)prinff(“ d, “, fun(k)+k); k+; 执行后的输出结果是 ( )。 ( A) 1, 5, ( B) 0, 6, ( C) 0, 4, ( D) 1, 7, 26 有以下程

13、序 #include stdio 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); prinff(“ 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

14、)break; if(a 2)a+=2; continue; a=(a-3, a+4); prinff(“ d, d“, i, a); 程序执行后的输出结果是 ( )。 ( A) 0, 6 ( B) 1, 6 ( C) 8, 6 ( D) 4, 2 28 以下表达式中,其值不等于数值 3的是 ( )。 ( A) 0+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+

15、) if(flag) if(ai 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+) prinff(“ 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,

16、1, 2, 3, 4, 5, ( 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; seailf(“ d“, &data); for(i=0; i 5; i+) if(i data&i 2)|(i data&i 3=0)continue; printf(“ d, “, i

17、); 程序运行时,从键盘输入: 13回车后,程序输出结果为 ( )。 ( 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) snm+=i; i+; ( C) int sum=0, i=0; while(i n) i+; sum+=i; ( D) int sum=1, i=

18、1; while(i n) i+; sum+=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); prinff(“ d, d, d, d“, a1, a

19、2, *p, p1); 程序执行后的输出结果是 ( )。 ( 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 funl(double a, int n) int i; double sum=0 0; for(i=0; i n; i+) SHm+=ai n; return sum; void fun2(double a, int n, double*p, double*q) int i; *p=*q=a0; for(i=1; i n; i+) i

20、f(ai *p)*p=ai; else if(ai *q)*q=ai; void main( ) 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 设有函

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

22、array0; res second=array0; 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; struct group res=get_min_max_sum(array, 5); prinff(“min= d, max= d, sum= d n“, res first, res

23、 second, res third); 程序运行后的输出结果是 ( )。 ( 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)所指内存可以通过强制类型转换当作具有 20个 int型元素的一维数组来使用 ( C) p所指内存可以通过强制类型转换当作具有 10个 double型元素的一维数

24、组来使用 ( D) p所指内存可以通过强制类型转换当作具有 80个 char型元素的一维数组来使用 39 设有如下类型说明语句 typedef struct int num; structint 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)

25、 PER st2=1001, 2008, 8, 1, 1002, 2006, 5, 20; 40 C语言中标准库函数 fputs(str, fp)的功能是 ( )。 ( A)从 str指向的文件中读一个字符串存入 fp指向的内存 ( B)把 str所指的字符串输出到 fp所指的文件中 ( C)从 fp指向的文件中读一个字符串存人 str指向的内存 ( D)把 fp指向的内存中的一个字符串输出到 str指向的文件 二、程序填空题 41 使用 VC+2010打开考生文件夹下 blank1中的解决方案。此解决方案的项目中包含一个源程序文件 blank1 c。在此程序中,函数 fun的作用是:不断从终

26、端读入整数,由变量 a统计大于 0的个数,用变量 c来统计小于 0的个数,当输入 0时结束输入,并通过形参 pa和 pb把统计的数据传回主函数进行输出。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序存放在 BLANK1 C中。不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h void fun(int*px, int*py) *found* int【 1】 ; scanf(“ d“, &k); *found* while【 2】 if(k 0)a+; if(k 0)b+; *found* 【 3】 ; *px=a; *

27、py=b; main( ) int x, y; fun(&x, &y); printf(“x= d y= d n“, x, y); 三、程序修改题 42 使用 VC+2010打开考生文件夹下 modi1中的解决方案。此解决方案的项目中包含一个源程序文件 modi1 c。在此程序的主函数中,将 a、 b、 c三个结点链成一个单向链表,并给各结点的数据域赋值,函数 fun( )的作用是:累加链表结点数据域中的数据作为函数值返回。 请改正函数 fun中指定部位的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include stdio

28、 h typedef struet list int data; struct list*next; LIST; int fun(LIST*h) LIST*p; *found* int t; p=h; *found* while(*p) *found* t=t+p data: p=(*p) next; return t; main( ) LIST a, b, c, *h; A)data=34; b data=51; c data=87; e next= 0; h=&a; A)next=&b; b next=&c; printf(“总和 = d n“, fun(h); 四、程序设计题 43 使用

29、 VC+2010打开考生文件夹下 prog1中的解决方案。此解决方案的项目中包含一个源程序文件 prog1 c。在此程序中,编写函数 fun,其功能是分别统计形参 t所指二维数组中字母 A和 C的个数。 注意:部分源程序存在 PROG1 C中,请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入所编写的若干语句。 试题程序: #include stdio h #include stdlib h #define M 14 void NONO( ); void fun(char(*t)M, int*a, int, *c) void get(char(*s)M) int i

30、, j; for(i=0; i M; i+) for(j=0; j M; j+) Sij=65+rand( ) 12; printf(“ c“, sij); printf(“ n“); main( ) char aMM; int x, y; get(a); fun(a, &x, &y); printf(“A= d C= d n“, x, y); NONO( ); void NONO( ) *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*fp, *wf; int i, j, x, y; char aMM; fp=fopen(“c: test in dat“, “r“

31、); wf=fopen(“c: test out dat“, “w“); for(i=0; i M; i+) for(j=0; j M; j+) fscanf(fp, “ c“, &aij); fun(a, &x, &y); fprinff(wf, “A= d n“, x); fprintf(wf, “C= d n“, y); fclose(fp); fclose(wf); 国家二级( C语言)机试历年真题试卷汇编 24答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 数据的逻辑结构有两个要素:一是数据元素的集合,通常记为 D;二是 D上的关系,它反映了 D中各数据元素之间的前后件关

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

33、ont=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 【试题解析】 模块独立性的概念是抽象、模块化、信息隐蔽和局部化的直接结果。模块的独 立性是指软件模块的编写和修改应使其具有独立功能,且与其他模块的关联尽可能少。故本题答案为 A选项。 6 【正确答案】 A 【试题解析】 黑盒测试方法也称为功能测试或数据驱动测试。黑盒测试

35、是对软件已经实现的功能是否满足需求进行测试和验证。黑盒测试方法主要有等价类划分法、边界值分析法、错误推测法和因果图等。白盒测试方法主要有逻辑覆盖测试(语句覆盖、路径覆盖、判断覆盖、条件覆盖 )、基本路径测试等。故本题答案为 A选项。 7 【正确答案】 A 【试题解析】 数据模型按照不同的应用层次分为 3种类型:概 念数据模型、逻辑数据模型、物理数据模型。概念数据模型有实体联系模型 (E-R模型 )、面向对象模型及谓词模型;逻辑数据模型有层次模型、网状模型、关系模型和面向对象模型。故本题答案为 A选项。 8 【正确答案】 A 【试题解析】 在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。

36、表A中的某属性集是某表 B的键,则称该属性集为 A的外键或外码。故本题答案为A选项。 9 【正确答案】 A 【试题解析】 关系模型中可以有 3类完整性约束:实体完整性约束、参照完整性约束和用户定义的完整性约束。实体完整性 约束是指若属性 M是关系的主键,则属性 M中的属性值不能为空值。故本题答案为 A选项。 10 【正确答案】 A 【试题解析】 若 XY ,但 Y不完全函数依赖于 X,则称 Y对 X部分依赖。关系模式 Sc中,主键为 (S#, C#),但显然有 S#Sd , S#Sa ,存在非主属性对主属性的部分依赖。故本题答案为 A选项。 11 【正确答案】 B 【试题解析】 C语言规定必须

37、用 main作为主函数名,选项 D正确: main( )是 C语言中主函数的起始行,也是 C程序执行的起始行,选项 A、 c正确; main( )作为主函数可 以在源程序的任意位置,但是程序执行必须从 main( )函数开始,选项B错误,本题答案为 B 12 【正确答案】 A 【试题解析】 在程序设计时,用一个个小模块来实现不同的功能,每个程序设计人员分别完成一个或多个小模块,称这样的程序设计方法为 “模块化 ”。由一个个功能模块构成的程序结构称为模块化结构,使用模块化结构程序设计,有利于任务的分解简化,选项 B正确; C语言允许对函数单独进行编译,从而可以实现模块化,选项 C正确;采用模块化

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

39、,选项 D错误, 本题答案为 D。 14 【正确答案】 A 【试题解析】 合法 C语言的标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线,选项 A正确;符号不合法,选项 B错误;符号不合法,选项 C错误;一符号不合法,选项 D错误;本题答案为 A。 15 【正确答案】 B 【试题解析】 题意表达式中,圆括号的优先级最高,乘法运算符次之,加法运算符最低,同优先级中,加法运算符的结合性从左向右结合,所以题意中的表达式执行顺序是:先执行 a+b得 r1,再执行 (d+e)得 r2,再执行 c*r2得 r3,最后执行r1+r3得表达式最后结果,本题答案为 B。

40、16 【正确答案】 C 【试题解析】 对于 rtouble类型的实数,可以在 printf( )函数的格式化字符串中使用 “n1 n2”的形式来指定输出宽度 (n1和 n2分别代表一个整常数 ),其中 n1指定输出数据的宽度 (包括小数点 ), n2指定小数点后小数位的位数, n2也称为精度;对于格式字符 f,当输出数据的小数位多余 n2位时,截取右边多余的小数,并对截取部分的第一位小数做四舍五入处理;当输出数据小数位少于 n2时,在小数的最右边补 0,使得输出数 据的小数部分宽度为 n2;如果指定 “n1 0”格式,则不输出小数点和小数部分;题意中, 6 2f表示输出 6位宽度, 2位小数,

41、所以被截取的小数位: 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 【试题解析】 根据算术表达式和运算符的优先级与结合性,对于题意表达式:int(x*1000+0 5) (double)1000,首先计算 x*1000

42、,由于 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 【试题解析】 单引号括起来的单个字符,属于字符常量,对应的格式字符是c,双引号括起来的若干字符,属于字符串常量,对应的格式字符是 s,选项 A错误; d是整型数据的格式字符,由

43、于字符常量或变量也可以作为整型数,也可以作为整数参与算术运算,所以选项 B、 C正确;同理,整数也可以作为字符常量,选项 D正确;本题答案为 A。 20 【正确答案】 B 【试题解析】 题意中,输入语句 seanf。 ( )的格式控制字符串中,第一个 d与第二个 d之间有一个逗号,第二个 d与第三个 d之间有一个空格,所以输入的第一个整数和第二个整数之间也必须要有一个逗号,选项 C、 D错误;对于第二个整数和第三个整数之间的空格,可以使用 tab、回车、空格符,选项 A错误;本题答案为 B。 21 【正确答案】 D 【试题解析】 第一个 if语句是单独的语句,所以执行完第一个 if语句后, r

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

45、有的数字字符前移,舍去其他字符,并在数字字符后添加字符串结束符 0, for循环 结束后,数组 a的值为: 123456789,本题答案为 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循环结束,本题答案为 D。 25 【正确答案】 C 【试题解析】 fun( )函数的功能是将参数 x的值赋给 y,然后 x自增 1,返回

46、 y的值,所以 fun( )的返回值与实参值相同; main( )函数的 for循环中, k的初值为0,执行 printf语句时,输出 fun(0)+0,结果为 0;接着执行两次 k+,此时 k的值为 2,循环条件 k 3满足,继续执行 prinff( )函数,输出 fun(2)+2,结果为 4;接着再次执行 2次 k+, k为 4,不满足循环条件,程序运行结束,所以程序输出结果为: 0, 4,本题答案为 C。 26 【正确答案】 A 【试题解析】 f( )函数接收一个数组 a的首地址 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 【试题解析】 字符 3的 AscII码值是

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

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

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