等级考试二级c语言考前密卷(六)(编辑修改稿)内容摘要:

下输入: c I saidI love China! 程序代码如下: main(、 int argc,char*argv[]) { printf(% d,argC); } 其输出结果为 ________。 A)4 B)5 C)6 D)7 答案: B 评析:带参数的 main()函数常用形式为: main(int argc,ehar*argv[]) 其中,参数的个数由 C 程序运行时自动计算出来。 字符型指针数组 argv 的第一个元素存放命令名,其后各个元素依次存放命令行中各个参数的首地址;整型变量 arge 用来记录命令行中的参数个数,文件名也作为一个参数,对于命令行中双引号内的字符串,即使有空格分开,也只算是一个参数,同时双引号本身不算参数的内容,因此本题 argc 的值等于 5 (33)下列程序的运行结果是 ________。 void fun(int *a,int *b) { int *k: k=a; ab; b=k; } main() { 第 10 页 共 21 页 唯 C 动力 提供 int a=3, b=6, *x=amp。 a, *y=amp。 b; fun(x, y); printf[% d% d. f, a, b); } A)6 3 B)3 6 C)编译出错 D)0 0 答案: B 评析:本题中主函数里的 x、 y, fun 函数里的 a、 b、 k,这些都是指针, fun 函数中只是将 a、 b 这两个指针交换了位置,而并没有改变主函数中变量 a、 b 的值。 (34)若有定义: int*p[3];,则以下叙述中正确的是 ________。 A)定义了一个基类型为 int 的指针变量 p,该变量有三个指针 B)定义了一个指针数组 p,该数组含有三个元素,每个元素都是基类型为 int 的指针 C)定义了一个名为 +p 的整型数组,该数组含有三个 int 类型元素 D)定义了一个可指向一维数组的指针变量 p,所指一维数组应具有三个 int 类型元素 答案: B 评析:由于运算符 []优先级比 *高, int*p[3];相当于 int *(p[3]);表示数组 p 的三个元素都是指 针变量,且每个元素都是基类型为 int 的指针。 (35)有以下程序: void swapl(int *a,int *b) {int *c=a; a=b, b=c; } void swap2(int *a,int *b) { int c=*a: *a=*b, *b=c; } main() (int a=lO,b=15; swapl(amp。 a, amp。 b); printf(% d,% d, , a, b); a=lO,b=15; swap2(amp。 a, amp。 b); printf(% d,% dt., a, b); } 其输出结果为 _________。 A)15,10,10,15 B)15,10,15,10 C)10,15,10,15 D)10,15,15,10 答案: D 评析: C 语言规定,实参变量对形参变量的数据传递是 值传递 ,只由实参传给形参,而不能由形参传回来给实参。 在内函数调用结束后,形参单元被释放,实参单元仍保留并维持原值。 本题中 swapl()函数中,虽然改变了形参指针的值,但实参指针的值并没有改变,所以执行第一个 printf 后应输出 10,15,; swap2()函数实现了交换两个变量 a 和 b 的值,因此执行第二个 printf 后输出交换后的值 15,10,所以本题答案为 D。 第 11 页 共 21 页 唯 C 动力 提供 (36)当调用函数时,实参是一个数组名,则向函数传送的是 __________。 A)数组的长度 B)数组的首地址 C)数组每一个元素的地址 D)数组每个元素中的值 答案: B 评析:当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址,函数中的形参可定义成以下三种形式: ① 形参定义成数组; ② 形参定义成可变长数组; ③ 形参 定义为指针变量。 (37)下面的程序输出结果是 ________。 define r16 ifr==16 void p(int a) { printf(% x,a); } else voidp(int a) { printf(% d,a); } endif main() { p(32); } A)32 B)20 C)编译时错误 D)运行时错误 答案: B 评析: define r16的作用是指定用标识符 r 来 代替 16,因此程序编译时只编译 if 部分,故程序运行时,打印输出十六进制的 32,即 20。 (38)设有以下声明语句 struct ex { intx; floaty; char z; }example; 则下面的叙述中不正确的是 _________。 A)struct 是结构体类型的关键字 B)example 是结构体类型名 C)x, y, z 都是结构体成员名 D)struct ex是结构体类型 答案: B 评析: example 是结构体变量名。 (39)以下只有在使用时才为该类型变量分配内存的存储类说明是 _________。 A)auto 和 stmic B)auto 和 register 第 12 页 共 21 页 唯 C 动力 提供 C)register 和 static D)extem 和 register 答案: B 评析: extem、 register、 static、 auto 分别是定义外部变量、寄存器变量、静态变量、自动变量,其中,自动变量和寄存器变量属于动态存储,调用时临时分配单元;而静态变量和外部变量属于静态存储,在整个程序运行时都存在。 (40)下面程序运行后的输出结 果是 __________。 fut(int**s,int p[2][3]) { **s=p[l][1]; } main() { int a[2][3]={1, 3, 5, 7, 9, 1l}, *p; p=(int*)malloc(sizeof(int)); fut(amp。 p, a); printf(% d\ n, *p); } A)l B)7 C)9 D)ll 答案: C 评析:本题 a[2][3]定义为一个具有两行三列的元素的数组, malloc()函数的作用是开辟了 一个长度为 sizeof(int)的内存区, p 为指向整型数据的指针变量,程序调用 fur()函数,将第一行第一列对应的元素值赋给一 s,由于数组中第一行第一列对应的元素为 9,所以本题输出值 9。 (41)以下程序的输出结果是 _________。 main() { inti, k, a[10], p[3]; k=5; for(I=O; i10; i++)a[i]=i; for(i=0; i3; i++)p[i]=a[I*(i+1)]; fbr(i=O; i3; i++)k+=p[I]*2; printf(% d\ n, k); } A)20 B)2l C)22 D)23 答案: B 评析:按照程序的流程走一遍,可以得到, p[O]=0, p[1]=2, p[3]=6;执行三次 k+=p[i]*2,相当于 k=5+0*2+2*2+6*2=21 (42)当执行下面的程序时,其输出结果为 __________。 union st { int a: 第 13 页 共 21 页 唯 C 动力 提供 charb: } main() { union st s: char*p=(char*)amp。 s; s. a=Ox3132; s. b=Ox33; printf(% c, *p); } A)l B)2 C)3 D)不确定 答案: C 评析:共用体类型结构的特点是使几个不同的变量共占同一段内存,但在每一瞬时只能存放其中一种,而不是同时存放几种,共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。 因此本题起作用的是成员 b 的值,所以程序打印输出 3。 (43)当执行下面的程序时,如果输入 ABc,则输出结果是 ________。 includestdio. h includestring. H main() { char ss[10]=12345; gets(ss); strcat(ss,6789); printf(% s\ n, ss); } A)ABC6789 B)ABC67 C)12345ABC6 D)ABC456789 答案: A 评析: strcat(str1, str2)合并字符串函数的作用是把 str2所指字符串的内容连接到 strl字符串的后面,自动删去 strl 原来串中的 39。 \ 039。 为了 进行这项操作,要求 strl 所指的字符串后面有足够的空间来容纳 39。 str2 所指字符串中的内容。 函数值为 strl所指第一个字符的地址。 (44)main(im。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。