选择练习题
1、C语言中最简单的数据类型包括( B )。 A、整型,实型,逻辑型 C、整型,字符型,逻辑型 A、%
B、/
B、整型,实型,字符型
D、整型,实型,逻辑型,字符型
D、*
2、C语言中,运算对象必须是整型数的运算符是(A )。
C、%和/
3、为表示关系x<y<z,应使用C语言表达式( A )。 A、(x<y)&&(y<z) B、(x<y)AND(y<z) C、(x<y<z) D、(x<y) &(y<z) 4、C语言程序的基本单位是( C )。 A、程序行 B、语句 C、函数 D、字符 5、C语言的程序一行写不下时,可以( D )。 A、用逗号换行 B、用分号换行 C、用回车符换行 D、在任意一空格处换行 6、下述标识符中,( C )是合法的用户标识符。 标识符由字母,数字和下划线 A、A&B B、void C、_student D、ab* 组成且第一个字符必须为字母或下划线 7、在C语言中,字符型数据在内存中以( B )形式存放。 A、补码 B、ASCII码 C、反码 D、原码 8、一个程序由若干文件组成,共用同一变量,则此变量的存储类别应该为( B )。 A、auto B、extern C、static D、Register auto自动变量 9、以下关于switch语句和break语句的描述中,只有(B )是正确的。register 寄存器变量 extern 外部变量 A、在switch语句中必须使用break语句 B、在switch语句中,可以根据需要使用或不使用break语句 static静态变量 C、break语句只能用于switch语句中 D、break语句是switch语句的一部分 10、C语言规定:调用一个函数时,实参变量和形参变量之间的数据传递是(B )。 A、地址传递 B、值传递 C、由实参传给形参,并由形参传回给实参 D、由用户指定传递方式 11、下述C语言转义符中( D )是非法的。 A、'\\b' B、'\\037' C、'\\0xf ' D、'\\''
12、为了要计算s=10!(10的阶乘),则以下对s的定义正确的是( D )。 A、int s B、unsigned s C、short s D、long s
13、判断变量ch中的字符是否为大写字母,最简单的正确表达式是( A )。 A、ch>='A'&&ch<='z' B、A<=ch<=Z C、'A'<=ch<='z' D、ch>=A&&ch<=z 14、在C语言中,能表示无符号长整型常数的是(D )。
欢迎共阅
A、OL B、4962710U C、912374u D、2UL 15、能正确表示C语言的字符常量的是( C )。 A、'\\0x41' B、''A'' C、'\\0' D、''\\0'' 16、C语言中逻辑表达式的值为( A )。
A、0或1 B、非零值或零值 C、true或false D、'true'或'false' 17、C语言提供的基本数据类型关键字是( C )。
A、integer B、FLOAT C、unsigned D、Double
18、若定义语句:int b[ ]={1,2,3,4,5},*P=b;则表达式*p++的值是( A )。 A、1 B、2 C、b[0]的地址 D、b[1]的地址 19、在下列选项中,不正确的表达式是( C )。 A、a>b B、c--, ++b, a+=1 C、a=c+b>n-m=k D、p++ 20、若有以下定义: int a[ ]={1,2,3,4,5,6,7}; char cl='b',c2='2'; 则数值不为2的表达式是( D )。 A、a[1] B、'd'-cl C、a['3'-c2] D、c2-0 25、下述对C语言字符数组的描述中错误的是( C )。 A、字符数组可以存放字符串 B、字符数组中的字符串可以整体输入、输出 C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值 D、不可以用关系运算符对字符组中的字符串进行比较 27、以下程序的输出结果是( A )。 main( ) { int i=010, j=10, k=ox10; printf(''%d,%d,%d\\n'',i,j,k); } A、8,10,16 B、8,10,10 C、10,10,10 D、10,10,16 28、以下程序的输出结果是( B )。 #include<stdio.h> main( )
{printf(''%d\\n'',NULL);}
A、不确定的值(因变量无定义) B、0 C、-1 D、1 29、以下程序的输出结果是( B )。 main( )
{ char c1='6',c2='0';
printf(''%d,%d,%d\\n'',c1,c2,c1-c2); }
欢迎共阅
A、因输出格式不合法,输出出错信息 B、54,48,6 C、6.0,7 D、6,0,6 32、下述对C语言字符数组的描述中错误的是( C )。 A、字符数组可以存放字符串
B、字符数组中的字符串可以整体输入、输出
C、可以在赋值语句中通过赋值运算符''=''对字符数组整体赋值 D、不可以用关系运算符对字符组中的字符串进行比较 33、Turbo C中,对于以下程序( A )。 main( ) { int x,y; y=creat(&x); printf(''%d \\n'', y); } creat(int a) {return a++;} A、编译时会给出错信息 B、顺利进行编译、连接、执行;不报任何错误 C、顺利通过编译、连接、但不能执行 D、顺利通过编译,但连接出错 34、设有如下定义: int x=10, y=4,z; 则语句: printf(''%d\\n'', z=(x%y, x/y)); 的输出结果是( C )。 A、1 B、0 C、2 D、3 35、下述程序段的输出结果是( D )。 main( ) { int x=10, y=10; printf(''%d, %d\\n'', x++, ++y); } A、10,10 B、11,11 C、11,10 D、10, 36、定义如下变量和数组: int j;
int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是( C )。 for(i=0;i<3;i++﹚ printf(''%d'', x[i][2-i]);
A、159 B、147 C、357 D、369
11欢迎共阅
37、若要求在if后一对圆括号中表示a不等于0的关系,则不能正确表示这一关系的表达式为( C )。
A、a<>0 B、!a C、a=0 D、a
38、若m,y,z均为int型变量,则执行下面语句后m值是(A )。 m=1;x=2;y=3;z=4; m=(m<x)?m:x; m=(m<y)?m:y; m=(m<z) ?m:z;
A、1 B、2 C、3 D、4
39、若有定义:int a=7;float x=2.5,y=4.7,则表达式x+a%3*(int)(x+y)%2/4的值是( A A、2.500000 B、2.750000 C、3.500000 D、0.000000 40、如下说法不正确的是( C )。 A、c>a+b等效于c>(a+b) B、若a,b均为真,则a||b为真 C、表达式'c'&&'d'的值为0 D、逻辑运算符!比逻辑运算符||的优先级高 41、putchar()函数可以向终端输出一个( B )。 A、整型变量表达式值 B、字符 C、字符串 D、实型变量值 42、表达式18/4*sqrt(4.0)/8值的数据类型为( C )。 A、int B、float C、double D、不确定 43、若已定义a为整型变量: a=-2L; printf(''%d\\n'',a); 则以上语句( B )。 A、赋值不合法 B、输出值为-2 C、输出为不确定值 D、输出值为2 45、若int类型数据占两个字节,则以下语句的输出为( D )。 int k= -1; printf(''%d,%u\\n'',k,k); A、-1,-1 B、-1,32767 C、-1,32768 D、-1,65535
46、已知字母a的ASCII码十进制值为97,则执行以下语句后的输出为( C )。yhg char a='a'; a--;
printf(''%d,%c\\n'',a+'2'-'0',a+'3'-'0'); A、b,c B、a—运算不合法,故有语法错
C、98,c D、格式描述和输出项不匹配,输出无定值 47、下面语句中( B )是C语言的正确赋值语句。
。 )欢迎共阅
A、a=1,b=2 B、I++; C、a=b=5 D、y=int(x); 48、设有以下说明语句 struct stu { int a; float b; }stutype;
则下面的叙述不正确的是( C )。
A、struct是结构体类型的关键字 B、struct stu是用户定义的结构体类型 C、stutype是用户定义的结构体类型名 D、a和b都是结构体成员名
49、能正确表示:当x的取值范围在[1,10]或[100,110]内为真,否则为假的表达式是( C )。 A、(x>=1)&&(x<=10)&&(x>=100)&&(x<=110) B、(x>=1)||(x<=10)||(x>=100)||(x<=110) C、(x>=1)&&(x<=10)||(x>=100)&&(x<=110) D、(x>=1)||(x<=10)&&(x>=100)&&(x<=110) 50、设n为整型变量,则循环语句for(n=10;n>0;n--)的循环次数为( A )。 A、10 B、9 C、11 D、12 51、在对文件进行操作时,若要求文件的位置指针回到文件的开头,则应当调用的库函数是( D )。 A、fopen() B、fseek() C、fclose() D、rewind() 52、下列哪个数组定义是正确的( D )。 A、int a[5.5]; B、INT a[10]; C、int a[n]; D、int a[3+2]; 53、一个变量的指针就是( A )。 A、变量的地址 B、变量的值 C、变量的名称 D、变量的类型 55、下列正确的说法是(C )。 A、宏替换是在程序运行时进行的 B、函数调用是在程序编译时进行的 C、宏替换时,如果实参是表达式,应先求表达式的值,再替换 D、函数调用时,如果实参是表达式,应先求表达式的值,再替换 56、对于数学式x/2a,下面正确的C语言表达式是( D )。 A、sqr(x)/2a B、sqr(x)/2*a C、sqrt(x)/(2*a) D、sqrt(x)/2*a 57、若int类型数据占2字节,则以下语句的输出为( D )。 int k=32768; printf(''%d,%u\\n'',k,k);
A、-1,65535 B、-1,32767 C、-1,-1, D、-32768,32768 59、下面程序中( B )有错误。 1)#include<stdio.h> 2)main ( )
A中声明变量并初始化时:int a=1,b=5;但是,只赋值时是不能这样写的,应该写成a=1;b=2;C无分号,不是完整的语句,D中x没有定义,如果是 int x=3;int y; y=int(x);这样是对的 欢迎共阅 3){
4)int a[3]={0,0,0}; 5)int i;
6)for(i=0;i<3;i++﹚scanf(''%D'',&a[i]); 7)for(i=1;i<3;i++﹚a[0]=a[0]+a[i]; 8)printf(''%d\\n'',a[0];}
A、第4行 B、第6行 C、第7行 D、第8行 60、下面程序的运行结果( C )。 main( )
{ unsigned a=3,b=10;5 printf(''%d\\n''a<<2|b>>1=; } A、3 B、10 C、13 D、14 61、已定义x为float型变量。 x=213.82631; %m.nd表示最大场宽m,小数位为n位,整数位则 Printf(''%-4.2f\\n'',x); 为m-n-1位,够m位右对齐。%-m.nf可以控制输则以上程序( A )。 A、输出格式描述符的域宽不够,不能输出 B、输出为213.83 C、输出为213.82 D、输出为-213.82 62、设已定义整型变量K,则下面的程序输出为( D )。 k=017;s=111; printf(''%d'',++k); printf(''%x\\n'',s++); A、15 6f B、16 70 C、15 71 D、16 6f 63、不能正确表示a*b/c*d的C语言表达式是( C )。 A、a*b/c*d B、a/(c*d)*b C、a*b/c/d D、a*b/(c*d) 、下列( C )表达式不满足;当x的值为偶数时值为“真”,为奇数时值为“假”。 A、x%2= =0 B、!x%2!=0 C、x/2*2-x= =0 D、!(x%2) 65、设已定义k为int型变量,则下面while循环执行( C )次。 k=10;
while(k=0)k=-1;
A、执行10次 B、无限循环 C、一次也不执行 D、执行一次 67、用高级语言编写的程序称之为( A )。
A、源程序 B、目标程序 C、汇编程序 D、命令程序 69、有以下程序的输出结果为( B )。 main( )
{ char a=0x95,b,c;
欢迎共阅
b=(a&0xf)<<4; c=(a&0xf0)>>4; a=b|c;
printf(''%x\\n'',a); }
A、24 B、59 C、34 D、56 70、下述程序段的输出结果是( A )。 int a=3;b=4; int c=a^b>>3; printf(''%d'',c) A、3 B、4 C、5 D、6 73、设int型变量在内存中占用两个字节存储单元,定义如下结构体: struct student { char name[10]; char sex; int age; struct { int year; int month; int day; }birth; }stul; 则表达式sizeof(stul)的值是( )。 A、5 B、8 C、2 D、26 75、下述程序段的运行结果是( B )。 #include A、22 B、387.000000 C、27 D、26 76、下面程序的运行结果是( C )。 main( ) { int cl=2,c2=0; while(!c2- -) 欢迎共阅 printf(''%d%d'',cl- -,c2); } A、陷入死循环 B、不输出任何内容 C、输出2 -1 D、输出20 77、下面程序的运行结果是( B )。 int m=4,n=6; max(int x,int y) { int max; max=x>y?x:y; return(max); } main( ) { int m=10; printf(''%d\\n'',max(m,n)); } A、4 B、10 C、6 78、下面程序的运行结果是( B )。 fun(int p) { int k=1; static t=2; k=k+1; t=t+1; return(p*k*t); } main( ) { int x=4; fun(x); printf(''%d\\n'',fun(x)); } A、4 B、32 C、30 79、阅读下面的程序: main( ) { char ch; scanf(''%c'',&ch); if(ch>='a'&& ch<='z') ch=ch-32; printf(''%c'',ch); D、5 D、16 欢迎共阅 } 若输入字符为:e,则程序运行结果为( A )。 A、E B、A C、e D、z 80、下面程序的运行结果是( B )。 main( ) { static int a[3][3]={{3,2,1},(4,5,6),{-2,9,1}}; int i,j,sum=0; for(i=0;i<3;i++) for(j=0;j<3;j++) { if(i= =j) sum=sum+a[iJ[j]]; } printf(''sum=%d'',sum); } A、sum=10 B、sum=9 C、9 D、10 84、下述程序的运行结果是( A )。 #include A、判断循环结束的条件不合法 B、是无限循环 C、循环一次也不执行 D、循环只执行一次 87、下列程序段选择项中,使i的运行结果为4的程序段是( D )。 A、int i=0,j=0; B、int i=1,j=70; (i=3,(j++)+i); j=i=((i=3) *2); C、int i=0,j=1; D、int i=1,j=1; 欢迎共阅 (j= =1)?(i=1):(i=3); i+=j+=2; 、阅读以下程序(最左边是附加的行号)。 1)#include A、7 B、8 C、 D、10 93、下面的程序中( C )有错误。 1)#include 欢迎共阅 2)main( ) 3){ 4) float a[3]={0.0}; 5) int i; 6) for(i=0;i<3;i++) 7) scanf(''%D'',&a[i]); 8) for(i=1;i<3;i++)a[0]=a[0]+a[i]; 9) printf(''%f\\n'',a[0]); } A、第4行 B、第6行 C、第7行 94、以下程序的输出结果是( C )。 #include 则下列循环的输出结果是( A )。 while(n>7) { n--; printf(''%d'',n); } D、第8行D、-+-+$ 欢迎共阅 A、1098 B、987 C、10987 D、9876 100、两次运行下面的程序,如果键盘上分别输入6和4,则输出结果是( A )。 main( ) { int x; scanf(''%d'',&x); int(x++>5) printf(''%d\\n'',x--); } A、7和5 B、6和3 C、7和4 D、6和4 101、运行下段程序的结果是( D )。 #include A、1,0,4 B、1,0,3 C、0,0,3 D、0,0,4 105、以下程序的输出结果是( A )。 main( ) { int x=3,y=0,z=0; if(x=y+z) 欢迎共阅 printf(''* * * *''); else printf(''# # # #''); } A、# # # # B、* * * * C、1 D、4 106、以下程序的输出结果是( A )。 int m=13; int fun2(int x, int y) { int m=3; return(x*y-m); } main( ) { int a=7,b=5; printf(''%d\\n'',fun2(a,b)/m); } A、2 B、3 C、7 D、5 112、阅读程序: #include D、10 欢迎共阅 main( ) { int a=2,i,k; for(i=0;i<2;i++); k=f(a++); printf(''%d\\n'',k); } A、3 B、0 C、4 D、5 115、下列程序的运行结果是( B )。 main( ) { static int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int i,j, sum=0; for(i=0;i<3;i++) for(j=0;j<4;j++) if(j>i) sum+=a[i][j]; printf(''sum=%d\\n'',sum); } A、40 B、36 C、24 D、30 120、阅读下列程序: main( ) { int n[3],i,j,k; for(i=0;i<3;i++) n[i]=0; k=2; for(i=0;i A、230 B、330 C、123 D、321 123、下述程序段的运行结果是( B )。 main( ) { static int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int b[3][2],i,j; 欢迎共阅 for(i=0;i<3;i++) { for(j=0;j<3;j++) { b[i][j]=a[j][i]+a[i][j]; printf(''%5d'',b[i][j]); } printf(''\\n''); } } A、2 4 7 B、2 6 10 C、18 14 10 D、18 2 3 2 10 8 6 10 14 14 10 6 4 10 2 3 6 18 10 14 18 10 6 2 7 4 2 124、如果程序中有如下的说明和定义: struct s { int x,y;} struct s x,y; 则会发生的情况是( A )。 A、编译出错 B、能顺利编译和链接,但不能执行 C、程序能顺利通过编译,但是链接时会出错 D、程序能顺利编译,链接,执行 127、对C语言的文件存取方式的论述中,正确的是文件( C )。 A、只能顺序存取 B、只能随机存取(也称直接存取) C、可以是顺序存取,也可以是随机存取 D、只能从文件的开头存取 填空练习题 1、有以下定义:int x; float y; 执行scanf(\"%3d%f\时,如果输入的数据为: 12345 678 4、设有定义语句int x=1,y=0;,则表达式x-->(y+x)?10:12>y++?'A': 'Z'的值是: 65 。 5、请写出以下语句的输出结果 9 。 printf(\"%d\ 7、C语言规定:标识符只能由 字母 、 数字 、 下划线 三种字符组成。 8、有定义语句:int x=5,y=1;表达式x&y==y? x|y:x^y的值为 5 。 9、下述程序段的循环次数是 0 次,输出结果是 y=1,x=0 。 欢迎共阅 int x=0,y=0; do { y++; x*=x; }while(x>0&&y>5) printf(\"y=%d,x=%d\ 10、若m,y,z,均为int型变量,则执行下面语句后m值是1 。 m=1;x=2;y=3;z=4; m=(m printf(\"%d\ } main( ) { int y=20; fun (&y); } 20、下述程序段的运行结果是 15 。 欢迎共阅 #include { int a[3][3]={1,2,3,4,5,6,7,8,9}; int s=0,i; for(i=0;i<3;i++) s+=(*(a+i))[i]; printf(\"%d\ } 21、下述程序的输出结果是 18 。 #include 欢迎共阅 char t; for(j=1;j for(i=0;i { int array[ ][3]={{10,20,30},{28,15.-10},{-50,10,60}}; int i,j,row=0,col=0; for(i=0;i<3;i++) for(j=0;j<3;j++) if(array[i][j]>array[row][col]) 欢迎共阅 { row=i;col=j;} printf(\"%d,%d\ } 28、求出1000以内能被7或11整除,但不能同时被7和11整除的数,存放到数组xx中。请填空。 main( ) { int i,j=0; int xx[1000]; for(i=1;i<1000;i++) if(((i%7==0)||(i%11==0))&&(!((i%7==0)&&(i%11==0)))) xx[j++]=I; printf(\"%d\ } 29、下面程序的执行结果为: 2.000000 。 main( ) { float x,y; x=1/2; y=2; printf(\"%f\\n\ } 32、程序的功能是求两个整数的最大公约数,请填空。 main() { int a=12,b=8,t; while( b>1 ) { t=a%b; a=b; b=t; } printf(\"%3d\ } 35、求下列算式1+1/2+1/3+……+1/100的值,请填空。 main( ) { int i; float sum=0; for(i=1;i<101;i++) sum+ =1/i ; 欢迎共阅 printf(\"%f\\n\ } 36、将输入的百分制的分数转换为相应的等级并输出,100~90分则为A;~80分则为B;79~70分则为C;69~60分则为D;小于60分为E,请填空。 main( ) { int score,i; scanf(\"%d\ i=score/10; switch(i) { case 10: case 9:printf(\"A\");bresk; case 8:printf(\"B\");break; case 7:printf(\"C\");break; case 6:printf(\"D\");break; default : printf(\"E\"); } } 38、下面程序是在两位数中统计所有能被3整除的数的个数。 main() { int i,num=0; for(i=10;i<100;i++) if( i%3=0 ) num++; printf(\"\\nThere are%d numbers!\ } 42、以下程序段的输出结果是 1 -2 。 main() { int x=3; do { printf(\"%3d\ }while(!(--x)); } 43、以下程序的输出结果是 004 。 main() { int a=-1,b=4,k; k=(++a<0)&&!(b--<=0); printf(\"%d%d%d\\n\ 欢迎共阅 } 44、下列程序执行后输出的结果是 4 。 #include main( ) { int a=2,i,k; for(i=0;i<2;i++) k=f(a++); printf(\"%d\\n\ } 46、阅读程序,请写出结果: main( ) { int x,y; scanf(\"%d\ y=-1; if(x!=0) if(x>0)y=1; else y=0; printf(\"y=%d\\n\ } 若运行该程序,输入值为:5 {swith(c=getchar()) { case'a': case'e': case'x': case'o': case'u':s1+=1; 欢迎共阅 default: s2+=1; } }while(c!='\\n'); printf(\"%d.%d\\n\ } 若输入数据为:computer { int m, i, k; scanf(\"%d\ for(i=2;i printf(\"%d,%d\\n\ } 欢迎共阅 55、下面函数把两字符串s1和s2连接起来。 Con(char s1[ ], char s2[ ]) { int i=0,j=0; while(s1[i]!='\\0')i++; while( s2[j]!='\\0' )s1[i++]=s2[j++]; s1[i]='\\0'; } 57、统计文件f1.dat中的字符个数。 #include { int i,num=0,word=0; char str[80]; scanf(\"%s\ for(i=0; i<80 ;i++) if(sir[i]==\") word=0 else if(word==0) 欢迎共阅 { word=1; num++; } printf(\"%d\\n\ } 、下面程序用指针p输出p所指向的数组元素的其后所有元素。 main() { int a[10]={6,-1,3,2,5,7,6,12,-1,-3}; int i,j,*p; p=a+4; for(i=0;j<=5;i++) printf(\"%d\ *p++ ); } 65、以下程序把一个名为f1.dat的文件拷贝到一个名为f2.dat的文件中。 #include { int year; scanf(\"%d\ if( year%4= =0&&year%100!=0||year%400= =0 ) printf(\"%d is a leap year\\n\ else printf(\"%d isn’t a leap year\\n\ 欢迎共阅 } 68、把键盘输入的一行字符串的小写字母转换成大写字母,其余字符不变,进行输出,直到遇到回车为止。 #include { if(c>='a'&&c<='z') c=c-32; putchar(c); } putchar('\\n'); } 69、以下程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时,结束输入。请填空。 main() { float x,amax,amin; scanf(\"%f\ amax=x; amin=x; while( x>0 ) { if(x>amax)amax==x; if x 74、以下程序由终端键盘输入一个文件名,然后把终端键盘输入的字符依次存放到该文件中,用#作为结束输入的标志,请填空。 欢迎共阅 #include char ch,fname[10]; printf(\"Input the name of file \\n\"); gets(fname); if((fp= fopen(fname,\"w\" )==NULL) { printf(\"Cannot open \\n\");exit(0);} printf(\"Enter date \\n\"); while((ch= getchar())!='#') fputc( ch ,fp); fclose(fp); }
因篇幅问题不能全部显示,请点此查看更多更全内容