1、国家二级( C语言)笔试模拟试卷 213 及答案与解析 1 栈和队列的共同特点是 ( )。 ( A)都是先进先出 ( B)都是先进后出 ( C)只允许在端点处插入和删除元素 ( D)没有共同点 2 数据的存储结构是指 ( )。 ( A)数据所占的存储空间 ( B)数据的逻辑结构在计算机中的存放形式 ( C)数据在计算机中的顺序存储方式 ( D)存储在计算机外存中的数据 3 关系数据库管理系统能实现的专门关系运算包括 ( )。 ( A)排序、索引、统计 ( B)选择、投影、连接 ( C)关联、更 新、排序 ( D)显示、打印、制表 4 已知二叉树后序遍历序列是 dabec,中序遍历序列是 deb
2、ac,它的前序遍历序列是 ( )。 ( A) acbed ( B) decab ( C) deabc ( D) cedba 5 在单链表中,增加头结点的目的是 ( )。 ( A)方便运算的实现 ( B)使单链表至少有一个结点 ( C)标识表结点中首结点的位置 ( D)说明单链表是线性的链式存储实现 6 设有二元关系 R和三元关系 S,下列运算合法的是 ( )。 ( A) RS ( B) R S ( C) RS ( D) RS 7 两个或两个以上模块之间联系的紧密程度称为 ( )。 ( A)耦合性 ( B)内聚性 ( C)复杂性 ( D)数据传输特性 8 设 a=1, b=2, c=3, d=4
3、,则表达式: “a b?a: b b?a: c d?a: d”的结果为( )。 ( A) 4 ( B) 3 ( C) 2 ( D) 1 9 若有定义: “int a=4, b=5; float x=3 4, y=2, 1; ”,则下列表达式的值为( )。 (float)(a+b) 2+(int)x (int)y; ( A) 5 5 ( B) 55 ( C) 5 500000 ( D) 55 00000 10 下列程序的输出结果是 ( )。 main() int a, b, d=25; a=d 10 9; b=a&(-1): printf(“ d, d n“, a, b); ( A) 6, 1
4、( B) 2, 1 ( C) 6, 0 ( D) 2 0 11 有下列程序: main() int x=5; do printf(“ d“, x-=4); ) while(!(-x); 程序的输出结果是 ( )。 ( A) 1 ( B) 2 0 ( C) 14 ( D)死循环 12 若有下列定义,则对 a数组元素地址的正确引用是 ( )。 int a5, *p=a; ( A) p+5 ( B) *a+1 ( C) &a+1 ( D) &a0 13 执行语句 printf(“ u n“, +12345)的输出结果是 ( )。 ( A) 12345 ( B) 0 ( C) -1 ( D)非定值 1
5、4 定义下列结构体 (联合 )数组: struct st char name15; int age; a10=“ZHAO“, 14, “WANG“, 15, “LIU“, 16, “ZHANG“, 17); 执行语句 printf(“ d, c“, a2 age, *(a3 name+2)的输出结果为 ( )。 ( A) 15, A ( B) 16, H ( C) 16, A ( D) 17, H 15 若有定义语句: “char s10=“1234567 0 0“; ”,则 strlen(s)的值是 ( )。 ( A) 7 ( B) 8 ( C) 9 ( D) 10 16 下列 程序的输出结
6、果是 ( )。 char*point(char*pt): main() char b4=a, c, s, f, *pt=b; pt=point(pt); printf(“ c n“, *pt); point(char*p) p+=3; return p; ( A) s ( B) c ( C) f ( D) a 17 下列选项中不会引起二义性的宏定义是 ( )。 ( A) #define S(x) x*x ( B) #define S(x) (x)*(x) ( C) #define S(x) (x*x) ( D) #define S(x) (x)*(x) 18 交换两个变量的值,不允许用临时变量
7、,应该使用下列 ( )位运算符。 ( A) & ( B) ( C) ( D) 19 若有 “double a; ”,则正确的输入语句是 ( )。 ( A) scanf(“ 1f“, a); ( B) scanf(“ f“, &a); ( C) scanf(“ 1f“, &a); ( D) scanf(“le“, &a); 20 设有如下关系表 : 则下列操作中正确的是 ( )。 ( A) T=RS ( B) T=R S ( C) T=RS ( D) T=R S 21 下列程序的输出结果是 ( )。 printf(“ d“, +*x); void main() int y=3; p(&y); (
8、 A) 3 ( B) 4 ( C) 2 ( D) 5 22 若变量 c为 char类型,能正确判断出 c为小写字母的表达式是 ( )。 ( A) a =c =z ( B) (c =a) (c =z) ( C) (a =c)and(z c ( D) (c =a)&(c =z) 23 以下程序的输出结果是 ( )。 main() int num=0: while(num =2) num+: printf( “ d n“, num); ( A) 1 2 3 4 ( B) 1 2 3 ( C) 1 2 ( D) 1 24 以下函数返回 a所指数组中最小的值所在的下标值: fun(int*a, int
9、n) int i, j=0, p; p=j; for(i=j; i n; i+) if(ai aj)_return(p); 在下划线处应填入的是 ( )。 ( A) i=p ( B) ap=ai ( C) p=j ( D) p=i 25 有如下程序段: int a=14, b=15, x: char c=A; x=(a&b)&(c B); 执行该程序后, x的值为 ( )。 ( A) true ( B) false ( C) 0 ( D) 1 26 以下程序的输出结果是 ( )。 main() int i, a44=1, 3, 5), 2, 4, 6, 3, 5, 7; printf(“ d
10、d d d n“, a03, a12, a21, a30; ( A) 0650 ( B) 1470 ( C) 5430 ( D)输出值不定 27 下列程序中函数 sort()的功能是对数组 a中的数据进行由大到小的排序。 #include void sort(int a, int n) int i, j, t; for(i=0; i n-1; i+) for(j=i+1+1; j n; j+) if(ai aj) t=aEi; ai=aj; aj=t; main() int a10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10, i; sort(&a1, 7); for(i=0;
11、 i 10; i+)printf(“ d, “ai); 程序运行后的输出结果是 ( )。 ( A) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ( B) 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, ( C) 1, 8, 7, 6, 5, 4, 3, 2, 9, 10, ( D) 1, 2, 10, 9, 8, 7, 6, 5, 4, 3, 28 下列判断正确的是 ( )。 ( A) char a=“ABCD“;等价于 char*a; *a=“ABCD“; ( B) char str10=“ABCD“;等价于 char str10; str=“ABCD“);
12、( C) char*s=“ABCD“;等价于 char s; *s=“ABCD“; ( D) char c5=“ABCD“, d5=“ABCD“;等价于 char cs-d5=“ABCD“; 29 有如下程序: main() int n5=0, 0, 0, i, k=2; for(i=0; i&printf(“ d n“, nk); ); 该程序的输出结果是 ( )。 ( A)不确定的值 ( B) 2 ( C) 1 ( D) 0 30 当执行下面的程序时,如果输入 ABC,则输出结果是 ( )。 #include #include main() char ss10=“1, 2, 3, 4, 5
13、“; gets(ss); strcat(ss, “6789“); printf(“ s n“, ss); ( A) ABC6789 ( B) ABC67 ( C) 12345ABC6 ( D) ABC456789 31 以下程序的输出结果是 ( )。 #define M(x, y, z)x*y+z main() int a=1, b=2, c=3; printf(“ d n“, m(a+bb+c, c+a); ( A) 19 ( B) 17 ( C) 15 ( D) 12 32 有以下程序: main() int k=5, n=0; do switch(k) case 1; case 3; n
14、+=1; k-; break; defalut: n=0; k-; case 2: case 4: n+=2; k-; break; printf(“ d“, n); while(k 0&n 5); 程序运行后的输出结果是 ( )。 ( A) 235 ( B) 0235 ( C) 02356 ( D) 2356 33 下面 for语句的循环次数为 ( )。 for(x=1, y=0; (y!=19)&(x 6); x+); ( A)是无限循环 ( B)循环次数不定 ( C)最多执行 6次 ( D)最多执行 5次 34 对下述程序的判断中,正确的是 ( )。 #include main() ch
15、ar *p, s256; p=s: while(strcmp(s, “the end“) printf(“Input the string: “); gets(S); while(*p) putchar(*p+); ( A)此程序循环接收字符串并输出,直到接收到字符串 “the end”为止 ( B)此程序循环接收字符串,接收到字符串 “the end”则输出,否则程序终止 ( C)此程序循环接收字符串并输出,直到接收字符串 “the end”为止,但因为代码有错误,程序不能正常工作 ( D)此程序循环接收字符串并将其连接在一起, 直到接收字符串 “the end”为止,输出连接在一起的字符串
16、 35 下列程序的输出结果是 ( )。 #include main() int i, s=0; for(i=1; i 10; i+) if(!(i 2)&!(i 3)s+=i; printf(“ d n“, s); ( A) 4 ( B) 39 ( C) 45 ( D) 6 36 有以下程序: void fun2(char a, char b) printf(“ c c“, a, b); char a=A, b=B; void funl()a=C b=D; main() funl(); printf(“ c c“, a, b); fun2(E, F); 程序的运行结果是 ( )。 ( A) C
17、DEF ( B) ABEF ( C) ABCD ( D) CDAB 37 有以下程序: #include main() char c1=1, c2=2: c1=getchar(); c2=getchar(); putehar(c1); putchar(c2); 当程序运行时输入 a后,下列叙述中正确的是 ( )。 ( A)变量 c1被赋予字符 a, c2被赋予回车符 ( B)程序将等待用户输入第 2个字符 ( C)变量 c1被赋予字符 a, c2中仍是原有字符 2 ( D)变量 c1被赋予字符 a, c2中将无确定值 38 下述程序的输出结果是 ( )。 #define N 20 void f
18、un(int a, int n, int m) int i, j; for(i=m; i n; i-)ai+1=ai; main() int i, aN=1, 2, 3, 4, 5, 6, 7, 8, 9, 10; fun(a, 2, 9); for(i=0; i 5; i+)printf(“ d“, ai); ( A) 10234 ( B) 12344 ( C) 12334 ( D) 12234 39 若要用函数 fopen打开一个新的二进制文件,该文件要既能读也能写,则应以( )方式打开文件。 ( A) wb ( B) wb+ ( C) rb+ ( D) rb 40 下列叙述中错误的是 (
19、 )。 ( A)在 C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值 ( B)在 C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容 ( C)在 C语言中,外部变量的隐含类型是自动存储类别 ( D)在 C语言中,函数形参的存储类型是自动 (auto)类型的变量 41 按照 “先进先出 ”的原则组织数据的结构是 _。 42 Jackson方法是一种面向 _的结构化方法。 43 下列程序段的输出结果是 _。 int n=c; switch(n+) default: printf(“error“); break; case a: printf(“good“); break; cas
20、e c: printf(“morning“); case d: printf(“class“); 44 下列程序的功能是对输入的一行字符中的数字字符的字面值累加,输出此累加和,请填空。 #include #include main() char c; int a, s=0; while(_) if(isdigit(c) a=s-0; s+=a; printf(“s= d“, s); 45 下列程序的输出结果是 _。 #define p(a) printf(“ d, “, (int)(a) #define PRINT(a) p(a); printf(“the end“) main() int i
21、, a=0; for(i=1; i 5; i+) PRINT(a+i); printf(” n”); 46 若有定义: “int a=10, b=9, C=8; ”接着顺序执行下列语句后,变量 b中的值是_。 c=(a-=(b-5): c=(a 11)+(b=3); 47 用以下语句调用库函数 malloc,使字符指针 st指向具有 11个字节 的动态存储空间,请填空。 st=(char*)_。 48 表达式 pot(2 8, sqrt(float(x)值的数据类型为 _型。 49 下列程序段的输出结果是 _。 int n=c; switch(n+) default: printf(“erro
22、r“); break; casea: caseA: caseb: caseB: printf(“good“); break; casec: caseC: printf(“pass“); cased: caseD: print(“warn“); 50 以下程序的输出结果是 _。 main() int a=1, b=2; a=a+b; b=a-b; a=a-b; printf(“ d, d n“, a, b); 51 要求使下列程序输出 5个整数,请填空。 for(i=0; i =_; printf(“ d n“, i+=2); ); 52 在宏定义 #define PI 3 14159中,用宏名
23、 PI代替一个 _。 53 下列程序的输出结果是 _。 #include sb(int s, int b) static int n=3; b=sn; n-: return(b); main() int s=1, 5, 6, 8; int i, x=0: for(i=0; i 4; i+) x=sb(s, x); printf(“ d“, x); printf(“ n“); 54 以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。 main() int i, a20, sum, count; sum=count=0; for(i=0; i 20; i+) scanf(
24、“ d“, _); for(i=0; i 20; i+) if(ai 0) count+; sum+=_; printf(“sum= d, count= d n“, sum, count); 国家二级( C语言)笔试模拟试卷 213 答案与解析 1 【正确答案】 C 【试题解析】 栈是限定只在表尾进行插入或删除操作的线性表,因此栈是先进后出的线性表,队列是一行特殊的线性表,它只允许在表的前端 (front)进行删除操作,在表的后端 (rear)进行插入操作,队列具有先进先出 (FIFO)的特点。综上所述可知,栈和队列只允许在端点处插入和删除元素。 2 【正确答案】 B 【试题解析】 数据的存储
25、结构,又称为数据的物理结构是数据的逻辑结构在计算机中的存放形式。 3 【正确答案】 B 【试题解析】 关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。 4 【正确答案】 D 【试题解析】 二叉树的遍历有 3种:前序、中序和后序。 前序遍历访问根结点,然后按左右顺序遍历予结点; 中序首先遍历左予树,然后访 问根结点,最后遍历右子树; 后序遍历首先遍历左子树,然后遍历右子树,最舌访问报结点。本题根据后序和中序遍历的结果可以得出二叉树的结构,然后再对其进行前序遍历,正确答案选项为 D。 5 【正确答案】 A 【试题解析】 根据单位链表 (包含头结点 )的结构。只要掌握了表头就能够访
26、问整个链表,因此增加头结意的目的是为了便于运算的实现。 6 【正确答案】 D 【试题解析】 本题给出的两个关系 R与 S 的表结构是不同的 (R是二元关系, S是三元关系 ),它们不能进行 、 、 -运算。而两个不同结梅的关系是可以进 行笛卡尔积 ()运算的。 7 【正确答案】 A 【试题解析】 耦合性用来表示模块间互相连接的紧密程度的度量,它取决于备个模块之间接口的复杂度、调用方式以及哪些信息通过接口。 8 【正确答案】 D 【试题解析】 在三目运算符中优先级相同,按从右到左的结合性计算, ab?a: (c d?a: d)c d成立所以取值 a,同理可得,选择 D选项。 9 【正确答案】 C
27、 【试题解析】 在计算 (float)(a+h) 2时由于通过强制类型转换将 (a+b)转换成了float型,所以应先将 2转换 成 float型,再进行计算,得 4 500000。在计算(int)x (int)y时,先将 x和 y通过强制类型转换成 int型再进行求余运算,结果为 1。又因为 4.500000是 float型,所以将 1和它相加时,先将 1换成 float型,再计算,得到 5.500000。类型转换的一般规则是:低级类型从高级类型,并进行相应的转换。数据类型的级别由低到高的排序表示为:charintunsignedlogfloatdouble 。 10 【正确答案】 B 【试
28、题解析】 当逻辑运算符 “&”两边的值是非零时 ,逻辑表达式的值为真 (即为1)。所以 b=2&(-1)=1, 2 9=2故 a=2,故先算 a 10=25 10=2。 11 【正确答案】 C 【试题解析】 本题考查 do-while循环。先执行 do的内容,也就是 printf 语句,x=x-4=1,输出 1,判断 while循环的控制条件, -x=0,则 !(-x)为非零,循环条件成立,执行下一次循环; x=x-4=-4,输出 -4,判断 while循环的条件, -x= 5,则 !(-x)为零,循环条件不成立,结束循环。 12 【正确答案】 D 【试题 解析】 本题考查数组元素的地址的引用
29、。 A中, p+5引用的是 a5的地址,而数组 a只有 5个元素,即 a0、 a1、 a2、 a3、 a4,所以引用错误 (注:数组元素下标从 0开始 ); B 中, *a+1指的是将数组 a的第一个元素加 1;选项 C中,不存在这种引用方式; D中, &a0引用的是数组的首地址。 13 【正确答案】 A 【试题解析】 u表示输出无符号的整数 (如果输出值前有符号,将自动转化为相应的无符号数输出 )。 14 【正确答案】 C 【试题解析】 本题考查结构体数组。 a2 age为结构体 a2的 age成员,即a3 name为指向结构体 a3的 name成员的第一个元索的指针,即指向 “Z”,(a3
30、 name+2)将指针后移两位指向第三个元素 “A”, *(a3 name+2)是取指针所指向地址的内容。 15 【正确答案】 A 【试题解析】 0表示空字符, strlen 函数求得的是不包括字符串结束符 0的长度。故选 A。 16 【正确答案】 C 【试题解析】 本题考查函数的调用及参数供递,当执行函数 point时,刚开始指针 p 指向 “a”,经过 +3,指针 p 指向 “f”,所以最后的输出结果是 f。 17 【正确答案】 D 【试题解析】 本题考查参数的宏替换。避免二义性有些参数表达式必须加括号,否则在实参表达式替换时,会出现错误。例如 x为 (m+n)时替换 A: m+n*m+n
31、,所以 D最符合条件。 18 【正确答案】 B 【试题解析】 按逻辑位运算特点: 用按位与运算将特定位清为。或保留特定位; 用按位或运算将特定的位置为 1; 用按位异或运算将某个变量的特定位翻转或交换两个变量的值。 19 【正确答案】 D 【试题解析】 本题考查 scanf()函数的调用形式: scanf(格式字符串,输入项地址表 )。 “格式字符串 ”是要输入的变量的格式符; “输入项地址表 ”是要输入的变量的地址。 20 【正确答案】 B 【试题解析】 关系代数中的集合运算分 4种:并、差、交和笛卡尔。 并( )y; 差 (-), R和 S的差是由属于 R但不属于 S 的元组构成的集合;
32、交 ():由既属于 R又属于 S的元组构成的集合; 笛卡尔积 ():对两个关系 R和 S进行合并操作,产生的关系中元组个数为两个关系中元组个数之积。根据关系 T中的元组可知, T关系是关系 R和关系 S 进行合并操 作所得到的。 21 【正确答案】 B 【试题解析】 本题考查函数调用时的参数传递。在函数调用时,形参是指向实参的指针变量,则 printf的执行结果为 +x; x=3,则 3+1=4。 22 【正确答案】 D 【试题解析】 在判断小写字母时,必须判断在某一范围内成立,因此用与,即&,即 c在 a与 z之间。 23 【正确答案】 B 【试题解析】 当 num=0时,循环成立,执行 n
33、um+后; num的值为 1,因此输出 1,接着返回 while中的表达式;当 num=1 时,循环成立,执行 num+后 ,num的值为 2,输出 2,再返回 while中的表达式;当 num=2 时,循环成立,执行num+后, num的值为 3输出 3,最后返回 while中的表达式,当 num=3,循环不成立,退出。 24 【正确答案】 D 【试题解析】 p 是存放最小下标的变量,而 if后的表达就是实现这个目的的,当if 成立时,就把小的下标放到 p 中,故选择 D选项。 25 【正确答案】 D 【试题解析】 在 C语言中,当表达式成立时用 1表示,不成立时用 0表示,即x=(a&b)
34、&(c B)=(14&15)&(A B)=1&1=1。故选择 D选项。 26 【正确答案】 A 【试题解析】 当所赋不够其列的宽度时,系统在其后自动补 0,因此 a03=0,a12=6, a21=5, a30=0,故选择 A选项。 27 【正确答案】 C 【试题解析】 本程序中的函数 sort(int a, int n)实现的功能是将数组 a中的前 n个数进行从大到小排序。 sort(&a1, 7)是将数组中从 a1 a7j这 7个数进行从大到小排序,其他数不变。 28 【正确答案】 D 【试题解析】 a=“ABCD”书写错误,因为 “=”左边不能出现常量;数组名 s是代表 s数组首地址常量,
35、而不是变量;字符串只有在定义时维数可以省略。 29 【正确答案】 D 【试题解析】 本题 for循环中,当 i=0时,判断条件 i&printf(“ d n“, nk),此时 i的值是 0,输出 nk的值也为 0, 0&0结果还是 0,条件不成立,退出循环。所以最后输出结果为 0。 30 【正确答案】 A 【试题解析】 当执行 gets(ss)后, ss数组中的元素为 ABC,再执行 strcat(ss,“6789“), strcat的作用,是把 6789连接到了 ss 数组后面,执行完后 ss数组为ABC6789,故选择 A选项。 31 【正确答案】 D 【试题解析】 M(a+b b+c,
36、c+a)=a+b*b+c+c+a=1+2*2+3+3+1=12,注意 x*y+z而不是 (x)*(y)+z。 32 【正确答案】 B 【试题解析】 本题考查分支语句用法加个句号因为变量的初始值分别为 k=5、n=0,所以程序第 1次进入循环时,执行 default语句,输出 0, k减 1;这时n=0、 k=4,程序进行第 2次循环,执 行 case 4:这个分支,结果是 n=2、 k=3,打印出 2;这时 n=2、 k=3, break 跳出,程序进行第 3次循环,执行 case 3:这个分支,结果是 n=3、 k=2,打印出 3;这时 n=3、 k=2, break 跳出,程序然后进行第4
37、次循环,执行 case 2: case 4:这个分支,结果是 n=5、 k=1,打印出 5, break跳出,这时因为 n=5不满足 n 5的循环条件,因此循环结束。 33 【正确答案】 D 【试题解析】 本题考查 for循环的使用。根据条件考虑 x的取值变化, x从 1取到 5,可以循环 5次,但并不 知道 y是如何变化的,有可能出现 y=19提前跳出循环的情况,所以是最多执行 5次。 34 【正确答案】 C 【试题解析】 外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。 35 【正确答案】 D 【试题解析】 if语句的条件是当 i既是 3的倍数又是 2的倍数时
38、成立,所以此程序实现的功能是将 10以内既是 3的倍数又是 2的倍数的数相加。 36 【正确答案】 A 【试题解析】 在函数 funl()之前定义了全局字符变量 a和 b。这两个变量的作用域是从其定义处开始到整个 程序末结束。在函数 funl()之内定义了两个变量 a和b,并且分别初始化为字符 C和 D。 37 【正确答案】 A 【试题解析】 本题考查 getchar()函数,从终端读入一个字符作为函数值。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入回车键时,读入才开始执行。所以当输入 a后,变量 c1 被赋予字符 a,而变量 c2 被赋予回车符。 38 【正确答案】 B 【试题
39、解析】 函数 fun()的功能是从数组 a中依次将当前值赋给一个元素,所以当函数 fun(a, 2, 9)执行后,数组 a=1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10)。 39 【正确答案】 B 【试题解析】 本题考查文件使用方式标识符。方式 “wb”为输出打开一个二进制文件;方武 “wb+”为读写建立一个新的二进制文件;方式 “rb+”为读写打开一个二进制文件;方式 “rb”为输入打开一个二进制文件。 40 【正确答案】 A 【试题解析】 如果是 static修饰的静态变量,不是每次调用赋初值。 41 【正确答案】 队列。 【试题解析】 队列和钱都是一种特殊的线性表,队
40、列只允许在表的一端插入元素,在 表的另一端删除元素,插入元素的一端叫 “队尾 ”,删除元素的一端叫做 “队首 ”,先插入的元素先被删除,是按先进先出的原则组织数据的。 42 【正确答案】 数据结构。 【试题解析】 Jackson 方法是结构化分析方法的一种,它是一种面向数据结构的结构化方法。 43 【正确答案】 morningclass。 【试题解析】 本题主要考查自加 “+”运算及 switch、 case开关语句。 “+、 -”运算后缀形式是先使用变量原来的值,使用完后再使其增 1或减 1; switch 语句中,当 n-c时,执行 “casec”,输出 morning;因为此句中没有 b
41、reak 语句,则继续执行 “cased; ”,输出 class,最终输出结果为 morningclass。 44 【正确答案】 (c=getchar()!= n。 【试题解析】 由题可知,用函数 c=gelchar()从键盘上读取一行的字符 (即没有换行 ),所以条件为 (c=getchar()!= n。 45 【正确答案】 1, 2 3 4, the end。 【试题解析】 表题考查带参数的定义及运算。 i=1时,第 1次循环,调用PRINT(1), P(1)输出; i+f, i=2,第 2次循环,调用 PRINT(2), P(2)输出 2 i自加为 3第 3次循环,调用 PRIN-r(3
42、), P(3)输出 3,继续加 1为 4,第 4次循环,调用 PRINT(4)输出 4, i自加为 5,不循环, the end。 46 【正确答案】 3。 【试题解析】 当执行完 c=(a-=(b-5)电可写成 c=a-a-(b-5), a的值为 6, c为 6,而当执行完 c=(a 11)+(b=3)后, b 为 3, c为 9,故填 3。 47 【正确答案】 malloc(11*sizeof(shar)。 【试题解析】 本题考查库函数调用的一些方法,要写 11个字节的动态存储空间的库函数是 malloc(11*sizeof(shar)。 48 【正确答案】 float。 【试题解析】 在
43、此表达式中 x是 florat类型的变量, sqrt函数是对其开方,结果仍是 float类型,再和 2 8进行运算时, 2 8的类型为单精度。 49 【正确答案】 passwarn。 【试题解析】 本题考查 switchcase 语句当 n+后。表述式的值力 c, n的值自加为 d,因此执行 casec输出 pass,接着执行 cased,输出 Warn,故填passwarn。 50 【正确答案】 2, 1。 【试题解析】 根据程序依次执行 “a=a+b; b=a-b; a=a-b; ”即 a=1+2=3, b=3-2=1, a=3-1=2最后 a的值为 2, b的值为 1,故填 2 1。 5
44、1 【正确答案】 8。 【试题解析】 本题考查基本的 for循环条件, i+=2也可表示为 i=i+2,表示 i每次递增 2,从 0开始。输出 5个整数姗需要的条件是 i =8。 52 【正确答案】 字符串。 【试题解析】 本题 考查 #define格式, #define标识符和字符串。 53 【正确答案】 8651。 【试题解析】 本题考查程序输出,程序运行时,第一次循环 i=0,调用 sb(x, x)子函数,此时 n=3, x=sn=s3=8, n-变为 2;第二次循环 i=1,调用 sb(s, x)予函数,因此将 n 定义为静态变量,所以此时 n=2,返回 x=sn=s2=6;第三次循环, i=2,调用 sb(s, x)子函数,此时 n=1,返回 x=sn=s1=5;第四次循环,i=3,调用 sb(s, x)子函数,此时 n=0,返回 x=sn=s0=1。 54 【正确答案】 &ai ai。 【试题解析】 输入函数 scanf取的是元素的地址,所以要用取地址运算符 &,这条语句实现对正数求和,因此填 &ai, ai。