1、C练习题一、 选择题 (本大题共40个选项,每个选择项1.5分,共60分)1.在C语言中,合法的字符常数是( 1)A)程序设计 B)“程序设计”C)c D)2.在C语言中,以下不正确的八进制或不正确的十六进制数是( 2)A)090 B)0xABC)0xla D)0163.执行int x2,y3;后表达式x(y3)的值是( 3)A)0 B)1C)2 D)34.执行语句int a,b,c; a=(b=c=3, c+, b+=c);则a的值是( 4) A) 3 B) 4 C) 7 D) 115.在循环结构的循环体中执行break语句,其作用是( 5) A) 结束本次循环,进行下次循环 B) 继续执行
2、break语句之后的循环体中各语句 C) 跳出该循环体,提前结束循环 D) 终止程序运行6.以下程序运行结果是( 6) main() char s=”Address”; printf(%dn”, strlen(s); A) 9 B) 10 C) 11 D) 127.以下程序运行结果是( 7) main() int a=2, 4, 6, 8, 10, y=1, x; for(x=0; x3; x+) y+=ax+1; printf(“%dn”, y); A) 17 B) 18 C) 19 D) 208.已定义char x8; int i;为了给x数组赋值,以下正确的语句是( 8) A) x8=”
3、Turbo C”; B) x=”Turbo C”; C) x=”Turbo C”; D) for(i=0; i B) % + += C) % += + D) + % +=12.以下不正确的描述是( 12) A) 在函数外部定义的变量是全局变量 B) 在函数内部定义的变量是局部变量 C) 函数的形参是局部变量 D) 局部变量不能与全局变量同名13.“文件包含”预处理语句的使用形式中,当#include后面的文件名用“”括起时,寻找被包含的文件的方式为( 13) A) 直接按系统设定的标准方式搜索目录 B) 先在源程序所在目录搜索,再按系统设定的标准方式搜索 C) 仅仅搜索源程序所在的目录 D)
4、仅仅搜索当前目录14.设有语句int(*p)();则p是一个( 14) A) 指向一维整型数组的指针变量 B) 指针函数,该函数的返回值为指向整型变量的指针 C) 指向函数的指针变量,该函数的返回值为整型 D) 数组指针,它的每个元素都是一个可以指向整型变量的指针变量15.若有typedef float AR5;AR a;则以下叙述正确的是( 15) A) a是一个新类型名 B) AR是一个实型数组 C) AR是一个实型变量 D) a是一个实型数组16.C语言的简单数据类型包括( 16)A)整型、实型、逻辑型 B)整型、实型、字符型、逻辑型C)整型、字符型、逻辑型 D)整型、实型、字符型17.
5、在C语言中,变量所分配的内存空间大小( 17)A)均为一个字节 B)由用户自己定义 C)由变量的类型决定 D)是任意的18.在C语言中,合法的整型常数是( 18)A)0x123 B)3.14159 C)01001101b D)6.7e1019.下列各变量均为整型,选项中不正确的C语言赋值语句是( 19)A)ii; B)i=j=k; C)i=j+=i; D)i=j+1=k;20.数学关系式xyz可用C语言的表达式表示为( 20)A)(x=y)&(y=z) B)(x=y)and(y=z) C)(x=y=z) D)(x=y)&(yz)21.若定义float a;现要从键盘输入a数据,其整数位为3位,
6、小数位为2位,则选用( 21)A)scanf(“6f”,&a); B)scanf(“5.2f”,a); C)scanf(“6.2f”,&a); D)scanf(“f”,a);22.下面程序段的运行结果是( 22)unsigned a=0356,b;b=a|a0) s += 1; if(ab) t= s + t;else if(a=b) t=5; else t=2*s;printf(“%dn”,t);A)a0并且ab B)a0并且a0并且ab D)a0并且ab24.若int i;则以下循环语句的循环执行次数是( 24) for (i=2;i=0;) printf(“%d”,i-);A)无限次 B
7、)0次 C)1次 D)2次25.下面程序的输出结果为( 25)main()int i;for(i=100;i200;i+) if(i%5=0) continue; printf(“%dn”,i); break;A)100 B)101C)无限循环 D)无输出结果26.下列程序段的运行结果是( 26)int i=1,a=1,5,10,9,13,7;while(ai=10) ai+=2;for (i=0;i6;i+) printf(“%d”,ai);A)2 7 12 11 13 9 B)1 7 12 11 13 7 C)1 7 12 11 13 9 D)1 7 12 9 13 727.以下语句把字符
8、串“abcde”赋初值给字符数组,不正确的语句是( 27)A)char s=“abcde”; B)char s=a, b,c,d,e,0;C)char s=“abcde”; D)char s5= “abcde”;28.若变量c为char类型,能正确判断出c为小写字母的表达式是( 28)A) a=c= a)|(c= z) C) (a=c) D) (c= a)&(c= z)29.下列程序段的输出结果是( 29)void fun(int *x, int *y) printf(%d %d, *x, *y); *x=3; *y=4; main() int x=1,y=2; fun(&y,&x); pri
9、ntf(%d %d,x, y); A) 2 1 4 3 B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 2 30.以下程序的输出结果是( 30)main() int i, k, a10, p3; k=5; for (i=0;i10;i+) ai =i; for (i=0;i3;i+) pi =ai *(i+1); for (i=0;i3;i+) k+=pi *2; printf(%dn,k); A) 20 B) 21 C) 22 D)23 31.当执行下面的程序时,如果输入ABC,则输出结果是( 31)main() char ss10=1,2,3,4,5; gets(ss); s
10、trcat(ss, 6789); printf(%sn,ss); A) ABC6789 B) ABC67 C) 12345ABC6 D) ABC456789 32.以下不能对二维数组a进行正确的初始化的语句是( 32)A) int a23=0; B) int a3=1,2,3,4,5;C) int a23=1,2,3,4,5,6; D) int a23=1,3,4,5;33.若int a31,2,3,4,5,6,7;则a数组第一维的大小是( 33)A) 2 B) 3 C) 4 D)无确定值 34.下面程序段的运行结果是( 34)int a23=1,2,3,i,j;for(i=0;i2;i+)
11、for(j=0;j3;j+) aij=ai*j%2j+ai(i+j)%3;printf(“%d,”,aij);A) 2,4,6,2,0,8, B) 1,2,3,0,0,0,C) 1,2,3,2,0,6, D) 2,4,6,2,0,6,35.下面程序段的运行结果是( 35)int a3=1,2,3,4,5,6,7,8,9,10,11,12;printf(“%dn”,a21);A) 2 B) 4 C) 7 D)836.定义一个结构体变量时,系统分配给它的内存大小是( 36)A)各成员所需内存量的总和B)成员中占内存量最大者所需内存容量C)结构中第一个成员所需内存容量D)结构中最后一个成员所需内存容
12、量37.若typedef char STRING255;STRING s;,则s是( 37)A)字符指针数组变量B)字符数组变量C)字符变量D)字符指针变量38.若已定义:int *p,a;,则语句p&a;中的运算符“&”的含义是( 38)A) 位与运算 B) 逻辑与运算C) 取指针内容 D)取变量地址39.若有定义char *p,ch;则不能正确赋值的语句组是( 39)A)p=&ch;scanf(“%c”,p);B) p=(char *)malloc(1); *p=getchar();C)*p=getchar();p=&ch;D)p=&ch;*p=getchar();40.下面程序段的运行结
13、果是( 40)char s=“ABC”;int i;for(i=0;i3;i+) printf(“%s”,&si);A) ABC B) ABCABCABC C) AABABC D)ABCBCC1.下列叙述中正确的是 A) C语言编译时不检查语法 B) C语言的子程序有过程和函数两种 C) C语言的函数可以嵌套定义 D) C语言所有函数都是外部函数 2.以下所列的C语言常量中,错误的是 A) 0xFF B) 1.2e0.5 C) 2L D) 72 3.下列选项中,合法的C语言关键字是 A) VAR B) cher C) integer D) default4.设x、y、t均为int型变量,则执行
14、语句:x=y=3;t=+x|+y;后,y的值为A) 不定值 B) 4 C) 3 D) 1 5.下面程序段的运行结果是( 5)float y=0.0,a=2.0,4.0,6.0,8.0,10.0,*p;int i;p=&a1;for(i=0;i3;i+) y+=*(p+i);printf(“%fn”,y);A) 12.0000 B) 28.0000 C) 20.0000 D) 18.0000 6.下面程序段的运行结果是( 6)char c=a,b,0,c,0;printf(“%sn”,c);A) ab c B) ab C) abc D) ab 7.下面程序段的运行结果是( 7)char s10,
15、*sp=“HELLO”;strcpy(s,sp);s0=h;s6=!;puts(s);A) hELLO B) HELLO C) hHELLO! D) h! 8.若有定义int a35,i,j;(且0i3,0j5),则aij的地址不正确表示是( 8)A) &aij B) aijC) *(a+i)+j D) *(*(a+i)+j)9.若有定义int *p4;,则标识符p是一个( 9)A) 变量的指针变量B) 指向函数的指针变量C) 指向有四个整数元素的一维数组的指针变量D) 指针数组名,有四个元素,每个元素均为一个指向整型变量的指针10.若有定义char *language=“FORTRAN”,
16、“BASIC” ,“PASCAL” ,“JAVA”,“C”;则language2的值是( 10) A) 一个字符 B) 一个地址 C) 一个字符串 D) 不确定 11.C语言规定,函数返回值的类型由( 11)所决定。A) return语句中的表达式类型B) 调用该函数时的主调函数类型C) 调用该函数时的形参类型D) 在定义该函数时所指定的函数类型12.下面程序的输出结果为( 12)#include #define SQR(x) x*xmain()int a=10,k=3,m=2;a=SQR(k+m);printf(“%dn”,a); A) 25 B) 11 C) 5 D) 10 13. 下面程
17、序的输出结果为( 13)#include main()int a=10; int a=15; printf(“a.1=%d,”,a); printf(“a.2=%dn”,a);A) a.1=10,a.2=15 B) a.1=15,a.2=10C) a.1=15,a.2=15 D) a.1=10,a.2=1014.下面函数调用正确的是( 14)A) fopen(file.dat,r); B) fprintf(“ld”,data,fp);C) fclose(“file.dat”); D) fread(&i,sizeof(int),1,fp);15.若变量已正确定义并赋值,下面符合C语言语法的表达式
18、是( 15)A) a:=b+1 B) a=b=c+2 C) int 18.5%3 D) a=a+7=c+b 16.C语言中运算对象必须是整型的运算符是( 16)A) B) / C) D) = 17.若已定义x和y为double类型,则表达式x1,yx+3/2的值是( 17)A) 1 B) 2 C) 2.0 D) 2.518.有如下程序:main() int i,sum;for(i=1;i=3;sum+) sum+=i;printf(“%dn”,sum);该程序的执行结果是( 18)A) 6 B) 3 C) 死循环 D) 019.如下程序:int runc(int a,int b)return(a+b);main()int x=2,y=5,z=8,r;r=runc(runc(x,y),z);printf(“%dn”,r);该程序的执行结果是( 19)A) 12 B) 13 C) 14 D) 1520.有如下程序段:int *p,a=10,b=1;p=&a;a=*p+b;执行该程序段后,a的值为( 20)A) 12 B) 11 C) 10 D) 编译出错21.以下函数返回a所指数组中最小的值所在的下标值 fun(int *a,int n) int i,j=0,p;p=j;for(i=j;in;i+) if(aib)&n; 则n的值是( 30)A) 1 B) 2C)