|
(28)以下选项中,非法的字符常量是 ______。 A)'\t' B)'\17' C)"\n" D)'\xaa' 答案:C 评析:C语言中字符常量是以单引号括起来的单个字符,或为以"\"与三位八进制数值或两位十六进制数值代替单个字符。 (29)以下程序的输出结果是______ 。 #include<stdio.h> main() { int a=200; #define a lOO printf("%d",a); #undef a printf ("%dt",a); } A)200 100 B)100 100 C)100 200 D)200 200 答案:C 评析:#define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题由于#undef的作用,使a的作用范围在#define a 100到#undefa之间,故答案为c。 (30)若有说明:int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。 A)i=*p; B)*p=*&j; C)i=&j; D)i=**p; 答案:B 评析:指针是一种用来存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,改变*p的值即为改变i的值。又因为"&"和"∥两个运算符的优先级别相同,按自右而左的方向结合,所以。&j先进行&j运算,得j的地址,再进行+运算,取所得地址里面的值,故t&j与i等价。 (31)假定int类型变量占用两个字节,若有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是______。 A)3 B)6 C)10 D)20 答案:D 评析:当数组定义后,系统就为其分配内存空间,而不论其中有没有内容。因此,本题中数组x[10]不论是否为其元素初始化,它所分配的存储空间仍为2+10=20个字节。 (32)执行以下的程序段后,m的值是______。 int a[2][3]={{l,2,3},{4,5,6}}; int m,*p; p=&a[0][0]; m=p[41; A)4 B)5 C)3 D)不确定 答案:B 评析:程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。P[4]等价于*(p+4),即二维数组a中第四个元素的值,而a是一个2*3的二维数组,其第四个元素为a[1][1],即5。 (33)以下程序的输出结果是______。 main() {int i,a[10]; for(i=9;i>=O;i--) a[i]=lO-i; printf("%d%d%d",a[2],a[5],a[8]); } A)258 B)74l C)852 D)369 答案:C 评析:在本题运行时主要注意的是当i=9时,a[i]=10-9=1;i=8时,a[i]=10-8=2;i=7时,a[i]=10-7=3:……依此类推,,直到i=0时,a[i]=10-0=10;此时,i的值已变为.1,判断for的循环条件,不成立,然后输出a[2],a[5],a[8]分别为8,5,2。 (34)下面程序的输出结果为______ 。 #include<string.h> main() { char pl[7]="abc",p2[]="ABC",str[50]= "xyz"; strcpy(str,strcat(pl,p2)); printf("%s",str); } A)xyzabcABC B)abcABC C)xyzabc D)xyzABC 答案:B 评析:strcpy(strl,s1):作用是将字符串s1拷贝到字符数组strl中去。strcat(字符数组1,字符数组2):把。字符串2接到字符串l的后面,结果放在字符数组1中,函数调用后返回字符数组l的地址。 本题定义了三个字符数组pl,p2,str,strcat(p1,p2)函数的作用是将字符串数组p2接到字符串p1的后面,结果放在字符数组p1,再通过sffcpy()函数将该字符串拷贝到str数组中,原str数组中的字符串xyz被覆盖,因此打印输出字符串str即可得到abcABC。 (35)以下数组定义中不正确的是______。 A)int a[2Ⅱ3]; B)int b[][3]={0,1,2); C)int c[100][100]={0}; D)int d[3][]={{l,2},{l,2,3},{1,2,3,4}}; 答案:D 评析:一维数组的定义方式为: 类型说明符数组名[常量表达式]; 选项A符合此定义形式,正确;c语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其它维的大小,故选项c正确;另外,如果对全部数组元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省,所以选项B正确,而选项D是错误的。 (36)以下程序的输出结果是______。 main() { jnt a[4][4]:{{1,3,5},{2,4,6},{3,5,7}}; printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]); } A)0650 B)1470 C)5430 D)输出值不定 答案:A 评析:对未给出初始值的整数数组元素,被缺省初始化为零。 (37)在说明语句:int *f();中,标识符f代表的是______。 A)一个用于指向整型数据的指针变量 B)一个用于指向一维数组的行指针 C)一个用于指向函数的指针变量 D)一个返回值为指针型的函数名 答案:D 评析:带回指针值的函数,其一般定义形式为: 类型标识符 *函数名(参数表); 例如:int *f(x,y); 其中,f是函数名,调用它以后能得到一个指向整型数据的指针(地址),x,y是函数f的形参。在f的两侧分别为。运算符和()运算符,而()优先级高于s,因此f先与()结合,显然是函数形式。这个函数前面有一个。,表示此函数是指针型函数(函数值是指针)。前面的int表示返回的指针指向整型变量。 (38)以下程序的输出结果是______。 main() { char st[20]= "hello\0\t\\"; printf("%d%d\n",strlen(st),sizeof(st)); } A)99 B)520 C)1320 D)2020 答案:B 评析:c语言中字符串是以'\0'字符结束的,且strlen()函数计算的是'\0'字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。 (39)下面程序运行后的输出结果是______。 int d=1: fun(int p) { static int d=5;d+=p; printf("%d",d);return d; } main() {int a=3;printf("%d\n",fun(a+fun(d)));} A)6 9 9 B)6 6 9 C)6 15 15 D)6 6 15 答案:C 评析:静态局部变量在编译时赋初值,即只赋初值一次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。 本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第一次调用函数fun时,d初值为5,p由主函数传递过来的值为1,则d=d+p=5+l=6,由于d是静态局部变量,在函数调用结束后,它仍保留d=6。再次调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值并返回主函数。 (40)以下选项中,不能正确赋值的是______。 A)char s1[10];sl="chest"; B)char s2[]。{'C','t','e','s','t'); C)char s3[20]= "Chest"; D)char*s4="Ctest\n"' 答案:A 评析:c语言中不能将字符串常量直接赋给数组。但在赋初值时可以。 (41)以下程序输出正确的是______。 alnovep(int *p,int(*a)[3],int n) {int i,j; for(i=0;i<n;i++) for(j=0 ;j<n;j++){ *p=a[i][j];p++;} } main() {int *p,a[3][3]={{1,3,5},{2,4,6}}; p=(int*)malloc(100); amovep(p,a,3); printf("%d%d\n",p[2],p[5]);free(p); } A)56 B)25 C)34 D)程序错误 答案:A 评析:本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别为:a[0][0]=l,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[l][1]=4,a[1][2]=6,a[2][O]=0,a[2][1]=0,a[2][2]=0a 通过malloc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。 (42)下面程序的输出结果是______。 #define a 121 const b=12: enum c{a1,a2}; main() { printf("%d,%d,%d.",sizeOf(a),sizeOf(b),sizeof(enum C)); } A)121,0,4 B)2,2,2 C)0,2,4 D)0,2,2 答案:B 评析:sizeof函数是取变量所占的存储空间的字节数,标识a代表常量121;const b=12;,其中数据类型可以缺省,默认为整型;enum c{al,a2};定义了一个枚举类型enum c,al,a2为枚举元素,在c编译时,对枚举元素按常量处理,它们的值按定义顺序依次为0,1。因此它们的字节数均为2,2,2。 (43)以下程序的输出结果是______。 struct HAR {int x,y;struct HAR *p;} h[2]; main() |
| 文章评论 | |||