C语言选择题(含答案) |
选择题 1. 以下叙述正确的是_____。 A) 在C程序中,main函数必须位于程序的最前面。 B) C语言本身没有输入输出语句。 C) C程序的每行只能写一条语句。 D) 在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 2. 下面四个选项中,均是不合法的用户标识符的选项是。 A) A B) float C) b-a D) _123 P_0 1a0 goto temp do _A int INT 3、 下列四个选项中都是合法的转义字符的 A) ‘\’’ ‘\\’ ‘\n’ B) ‘\’ ‘\017’ ‘\”’ C) ‘\018’ ‘\f’ ‘xab’ D) ‘\\0’ ‘\101’ ‘x1f’ 4、 设所有变量均为整型,则表达式z=(a=2,b=5,b++,a+b)的值是: A)7 B)8 C)6 D)2 5、 若有代数式,则不正确的C语言表达式是: A) a/b/c*e*3 B) 3*a*e/b/c C) 3*a*e/b*c D) a*e/c/b*3 6、 若希望当A的值为奇数时,表达式的值为”真”, A的值为偶数时,表达式的值为”假”。则以下不能满足要求的表达式是_________。 A) A%2==1 B) !(A%2==0) C) !(A%2) D) A%2 7、 以下程序的运行结果是 : main() { int m=6; if(m++> 6) printf(" %d\n",m); e1se printf("%d\n",--m ); } A)4 B)5 C) 7 D) 6 8、 当a=1,b=3,c=5,d=4,执行完下面一段程序后x 的值是 : if(a<b) if(c<d) x=1; else if(a<c) if(b<d) x=2; else x= 3; else x=6; else x=7; A)1 B)2 C)3 D)6 9、 阅读以下程序,当输入数据的形式为25,13,10<CR>正确的输出结果为 main() { int x,y,z scanf("%d%d%d",&x,&y,&z ); printf(“x+y+z=%d\n” ,x+y+z);。 } A)x+y+z=48 B)x+y+z=35 C)x+y+z=35 D)不确定值 10、 已知各变量的类型说明如下 int k,a,b; unsigned long w= 5; double x=1.42; 则以下不符合C语言语法的表达式是 : A) x%(-3) B) w+=-2 C) k=(a=2,b=3,a+b) D) a+= a-=(b=4)*(a=3) 11、 设有:int a=1, b=2, c=3, d=4, m=2, n=2; 执行 (m=a>b)&&(n=c>d)后n的值为_______。 A) 1 B) 2 C) 0 D) 4 12、 判断char型变量ch是否为大写字母的正确表达式是________。 A)' A' <=ch<='Z' B)(ch> = 'A')&(ch<='Z' ) C)(ch>=' A' )&&(ch<='Z') D)(' A' < = ch)AND('Z'> = ch) 13、 以下描述中正确的是_________: A)由于do一while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B) 在while循环体中,循环体至少要执行一次。 C)在do一while循环体中,循环体至少无条件的执行一次 D) do一while循环由do开始,用while结束,在while(表达式)后面不能写分号 14、 已知int x=10,y=20,z=30; 以下语句执行后x, y, z的值是_______。 if (x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=20 C) x=20, y=30, z=10 D) x=20, y=30, z=30 15、 若i为整型变量,则以下循环执行次数是: for ( i=2; i!=0; ) printf("%d",i- - ); A)无限次 B) 0次 C) 1 次 D) 2次 16、 下面程序段: for (t=1; t<=100;t++) { scanf("%d",&x); if(x<0) continue; printf("%3d",t); } A) 当x<0时整个循环结束 B) x>=0时什么也不输出 C) printf函数永远也不执行 D)最多允许输出100个非负整数 17、 若有说明:int a[3][4];则对a数组元素的正确引用是______。 A) a[2][4] B) a[1,3] C) a[1+1][0] D) a(2)(1) 18、 定义如下变量和数组: int k; int a[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是: for(k=0;k<3;k++) printf ("%d",a[2-k][ k]); A) 3 6 9 B) 7 5 3 C) 9 6 3 D) 3 5 7 19、 判断字符串a和b是否相等,应当使用_______. A) if (a= =b) B) if (a=b) C) if (strcpy (a,b) ) D) if (strcmp (a,b) ) 20、 对两个数组a和b进行如下初始化 char a[ ]="ABCDEF"; char b[ ]={’A’,’B’,’C’,’D’,’E’,’F’}; 则以下叙述正确的是 __. A) a与b数组完全相同 B) a与b长度相同 C) a和b中都存放字符串 D) a数组比b数组长度长 21、 有两个字符数组a和b,则以下正确的输入语句是_________: A) gets(a,b); B) scanf(“%s%s”,a,b); C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”); 22、 下面程序段的运行结果是______ char str[ ]="ABC" , *p=str ; printf ("%d\n",*(p+2)); (A) 0 (B) 字符'C'的ASCII码 (C) 字符'C'的地址 (D) 字符'C' 23、 下面描述正确的是_______。 A) 两个字符串所包含的字符个数相同时,才能比较字符串 B) 字符个数多的字符串比字符个数少的字符串大 C) 字符串”STOP ”(注:有一个空格)与”STOP”相等 D) 字符串”That”小于字符串”The” 24、 下面判断正确的是_______。 A)char *a= “china”; 等价于 char *a; *a= “china”; B)char str[10]={“china”};等价于 char str[10]; str[ ]={“china”}; C)char *s= c++字符串是什么“china”; 等价于 char *s; s= “china”; D)char c[4]= “abc”, d[4]= “abc”; 等价于 char c[4]=d[4]= “abc”; 25、 若用数组名作为函数调用的实参,传递给形参的是_______。 A) 数组的首地址 B) 数组第一个元素的值 C) 数组中全部元素的值 D) 数组元素的个数 26、 下面函数调用语句含有实参的个数为_______。 y = func ( a, b, max(d ,e)); A)5 B) 2 C) 3 D) 4 27、 C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_______。 A)float型 B)int 型 C)long 型 D)double 型 28、 在C语言中,形参的缺省存储类是 A) auto B) register C) static D) extern 29、 以下正确的函数定义形式是__________: A) double fun(int x,int y) B) double fun(int x;int y) C) double fun(int x,int y); D) double fun(int x,y); 30、 在宏定义 #define PI “3.14159”中,用宏名PI代替一个_______。 A) 常量 B)单精度数 C)双精度数 D)字符串 31、 #define ADD(x) x+x main( ) { int m=1,n=2,k=3; int sum=ADD(m+n)*k; printf(“sum=%d”,sum); } 上面的程序运行结果是_________: A) sum=9 B) sum=10 C) sum=12 D) sum=18 32、 以下有关宏替换和函数的调用叙述不正确的是________: A) 宏替换和函数的调用均占用运行时间。 B) 宏名无类型,函数有类型 C) 宏替换只是字符替换,不分配内存,但函数调用要分配内存 D) 再调用宏时程序的长度要加长,而函数调用不变 33、 以下程序的输出的结果是 main( ) { int i; for (i=1;i<=2;i++) incre(); } incre() { static int x=1; x*=x+1; printf("%d",x); } A) 3 3 B) 2 2 C) 2 6 D) 2 5 34、 有如下定义 struct person{char name[9]; int age;}; strict person class[10]={"Johu", 17, "Paul", 19, "Mary", 18, "Adam”, 16,}; 根据上述定义,能输出字母M的语句是 A) prinft("%c\n",class[3].mane); B) pfintf("%c\n",class[3].name[1]); C) prinft("%c\n",class[2].name[1]) D) printf("%c\n",class[2].name[0]); 35、 以下程序的输出结果是哪一项? #include <stdio.h> main() { int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[4],i; for(i=0;i<4;i++) p[i]=&a[i*3]; printf("%d\n",p[3][2]); } A. 输出项不合法 B. 6 C. 8 D. 12 36、 以下程序的输出结果是 union myun { struct { int x, y, z; } u; int k; } a; main() { a.u.x=4; a.u.y=5; a.u.z=6; a.k=1; printf("%d\n",a.u.y); } A) 4 B) 5 C) 6 D) 1 37、 以下关于结构体与共用体的说法,其中正确的是 A) 共用体同一个内存段可以来存放几种不同类型的成员,但在某一时刻只能存放一个成员。 B) 结构体变量所占的内存长度等于最长的成员的长度,共用体变量所占内存长度是各成员占的内存长度之和。 C) 共用体每个成员分别占有自己的内存单元。 D)结构体类型可以出现在共用体类型的定义中,但共用体不能出现在结构体类型定义之中。 38、 以下程序的输出结果是 long fun( int n) { long s; if(n= =1 || n= =2) s=2; else s=n-fun(n-1); return s; } main() { printf("%ld\n", fun(5)); } A) 1 B) 2 C) 3 D) 4 39、 下列程序段的输出结果为 int arr[]={6,7,8,9,10}; int * ptr; ptr=arr; * (ptr+2)+=2; printf ("%d,%d\n",*ptr,*(ptr+2)); A) 8,10 B) 6,8 C) 7,9 D) 6,10 40、 设有如下定义: int (*ptr)( ); 则以下叙述中正确的是 A) ptr是指向一维组数的指针变量 B) ptr是指向int型数据的指针变量 C) ptr是指向函数的指针变量,该函数返回一个int型数据 D) ptr是一个函数名,该函数的返回值是指向int型数据的指针 1-5:BCABC 6-10:CDBDA 11-15:BCCDD 16-20:BCBDD 21-25:BBDBA 26-30:CBAAD 31-35:BACDD 36-40:DABD |
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论