1、C语言基础一:1.下列四组选项中,均不是C语言关健字的选项是( A )。A) define B) gect C) include D) whileIF char scanf go type printf case pow2.下面四个选项中,均是合法整型常量的选项是( A )。A)160 B)-0xcdf C) -01 D)-0x48a -0xffff 01a 986,012 2e5011 0xe 0668 0xB23.下面四个选项中,均是不合法的转义符的选项是( B )。A) “ B) 1011 C) 011 D) abc f 101xf A x1f4.下面不正确的字符串常量是( A )。A)
2、abc B)“1212“ C)“0“ D)“ “5.以下选项中不合法的用户标识符是( A )。A)abc.c B)file C)Main D)PRINT6.C语言提供的合法关键字是( D )。A) swithB) cherC) Case) Default7.下列标识符组中,合法的用户标识符为 AA)_0123与ssipedB)del-word与signedC)list与*jerD) keep%与wind8.在C语言中,逻辑值“真“的表示是用( C )。A) true B) 整型值0 C)非另整型值 D) T9若有以下定义char s=092;则该语句( B )A)使s的值包含一个字符 B)定义
3、不合法,s的值不确定 C)使s的值包含4个字符 D)使s的值包含3个字符10设C语言中,int类型数据占2个字节,则float类型数据占( D )个字节。A)1 B)2 C)8 D)411已知字母A的ASCII码为十进制数65,且c2为字符型,则执行语句c2=A+6-3后,c2中的值为( A )。A)D B)68 C)不确定的值 D)C12逻辑运算符两侧运算对象的数据类型是 ( D )。A) 只是0或1 B) 只能是0或非0正数C) 只能是整型或字符型数据 D) 可以是任何合法的类型数据13TURBO C中int类型变量所占字节数是( B )。A)1 B)2 C)3 D)414在C语言中,ch
4、ar型数据在内存中的存储形式是( D )。A) 补码 B) 反码 C) 原码 D) ASCII码15若有以下定义,则能使值为3的表达式是( D )。int k=7, x=12;A)x%=(k%=5) B)x%=(k-k%5) C)x%=k-k%5 D)(x%=k)-(k%=5)16判断char型变量c1是否为小写字母的正确表达式为 ( D )。A) a=A. printf(“|%-06d|n“,k);A)输出格式描述不合法 B)输出为|008567|C)输出为|8567| D)输出为|-08567|10sizeof(float)是( B )。A)一个双精度表达式 B)一个整型表达式C)一种函数
5、调用 D)一个不合法的表达式11在C语言中, int、char和short三种类型数据在内存中所占用的字节数( D )。A)由用户自己定义 B)均为2个字节C)是任意的 D)由所用机器的机器字长决定12判断char型变量c1是否为小写字母的正确表达式为 ( D )。A) a=A. unsigned long w=5;double x=1.42,y=5.2;则以下符合C语言语法的表达式是( A )。A)a+=a-=(b=4)*(a=3)B)a=a*3=2C)x%(-3)D)y=float(i)18 若变量已正确定义并赋值,下面符合C语言语法的表达式是( B )。A)a=a+7; B)a=7+b+
6、c,a+ C)int 12.3%4 D)a=a+7=a+b19逗号表达式(a=3*5,a*4),a+15的值为( C )。A)15 B)60 C)30 D)不确定20设Int n=3;则n+的结果是( B )。A)2 B)3 C)4 D)51用小数或指数形式输入实数时,在scanf函数语句里格式字符为( BCD )。A)i B)f C)e D)g2可以使用( CD )输入字符型数据。A)putchar(c); B)getchar(c); C)getchar(); D)scanf(“%c“,1C语言中数据有常量与变量之分。2一般一个字符变量在内存中占一个字节。3C语言规定,可以在定义变量时,同时
7、使变量初始化。4把k1、k2定义成基本整型变量,并赋初值0的定义语句是int k1=k2=0; 。错5如果i的原值为3,则:j = + i,j的值为3。 错6凡是表达式都有一个值。7输入语句的格式为:scanf(“%d,%d,%d“,a,b,c);是正确的。 错8在scanf(“%d,%*d,%d“,)0) c=a;是正确的。 错1112printf函数是一个标准库函数,它的函数原型在头文件“string.h“中。 错13在printf函数中,格式字符d的意义是:以十进制形式输出带符号整数。14 在printf函数中,输出表列的各输出项之间可用冒号分隔。 错15若int x=3; printf
8、(“%d“,则系统不会报错,会输出x的地址。16int a=0,b=1,c=2;则表达式a|b+c则变量C中包含的字符个数为( 1 ) 。2若有以下定义:int x=3,y=2;float a=2.5,b=3.5;则下面表达式的值为【 1 】 。(x+y)%2+(int)a/(int)b3若a是int型变量、且a的初值为6,则执行下面表达式后,a的值为【 60 】 。a+=a-=a*a4若x是int型变量,则执行下面表达式后,x的值为【 4 】 。x=a=4,6*25若a是int型变量,且a的初值为6,则计算表达式后a的值为【 60 】 。a+=a-=a*a 6scanf函数的地址表列中给出各
9、变量的地址,地址是由【 地址运算符“ char c; float f;)是( D ) 。 A)i+f B)i*c C)c+f D)i+c+f19设有逗号表达式(a=3*5,a*4),a+15,a的值为( B )。A)60 B)30 C)15 D)9020设Int n=3;则有表达式n+,n的结果是( C )。A)2 B)3 C)4 D)51若在scanf函数语句中没有非格式字符作输入数据的间隔,则可用( ACD )。作为输入数据的间隔。A)空格 B)逗号 C)TAB D)回车2使用scanf函数时,在源程序开头( ABC )。A)书写#include “stdio.h“ B)书写#includ
10、e C)不必写#include D)书写#include “scanf.h“1C语言规定标识符只能由字母、数字和小数点三种字符组成。2 C语言使字符型数据和整型数据之间可以通用。一个字符数据既可以以字符形式输出,也可以以整数形式输出。 对3 C语言中定义了一个变量,代表内存中的一个地址。 对4表达式3.5 + 1/2 + 56%10的计算结果是7.5 。5 由赋值运算符将一个变量和一个表达式连接起来的式子称为“赋值表达式“。 对6设C语言中,一个int型数据在内存中占2个字节,则int数据的取值范围为-32768-32769。7在使用scanf函数之前应包含头文件“math.h“。8在scan
11、f(“%c%c“, 是正确的11printf函数中的格式字符,既可以是大写形式,也可以是小写形式。12在printf函数中,格式字符“%5c“可用来输出5个字符。13在printf函数中,格式字符s的意义是:输出单个字符。14 在printf函数中,输出项可以是任意合法的表达式。15 算术运算符的优先级别高于关系运算符16 int a=0,b=1,c=2,x,y;,则!(x=a) 9在C语言中,表示逻辑“真“值用【 非零数 】10若a=6,b=4,c=2,则表达式!(a-b)+c-1printf(“%d,%un“,k,k); D)-1,65535A)-1,-1 B)-1,32767 C)-1,
12、32768 9设已定义x为double类型变量x=213.82631;printf(“%-6.2en“,x);则以上语句( )。A)输出格式描述符的域宽不够,不能输出 B)输出为21.38e+01C)输出为2.14e+02 D)输出为-2.14e210执行x=51+2是一个合法的赋值语句。10C语言的格式输出函数是scanf().12使用printf函数时,格式控制字符串和各输出项应一一对应。13在printf函数中,格式字符f的意义是:以小数形式输出单精度实数。14在printf函数中,转义字符b的作用是退格。15算术运算符的优先级别高于逻辑运算符16int a=1,b=0,c=1;,则!(
13、a+b)+c-0double y;y=(int)(float)x;2已知字母a的ASCII码的十进制代码为97,且设ch为字符型变量,则表达式ch=a+8-3的值为【 】 。3若s是int型变量,且s=6,则下面表达式的值为【 】 。s%2+(s+1)%24表达式1.0/2*3的计算结果是【 】 。5当a=3,b=2,c=1时,表达式f=abc的值是【 】.6getchar函数是【 】函数。7赋值语句是由赋值表达式加上【 】构成的。8在TC中,printf()函数输出表列的求值顺序是【 】 。9设y为int型变量,请写出描述“y是奇数“的表达式【 】10若a=2,b=4,则表达式!(x=a)|
14、 (y=b)else printf(“%dn“,m-);A)7 B)6 C)5 D)42以下程序的输出结果为( )# include main ( ) int i=0, j=0, a=6;if (+i0)printf (“i=%d, j=%d, a=%dn“, i,j,a);A) i=0, j=0, a=6 B) i=1, j=1, a=7C) i=1, j=0, a=7 D) i=0, j=1, a=73有如下程序main() int a=2,b=-1,c=2;if(a12 ? x+10:x-12;printf(“%dn“, y);A) 0 B) 22 C) 12 D) 106以下程序的输出
15、结果是( )main() int i=0, j=0, k=6;if (+i0)|(+j0) k+;printf(“%d, %d, %dn“, i, j, k);A) 0, 0, 6 B) 1, 0, 7 C) 1, 1, 7 D) 0, 1, 77若变量都已正确说明,则以下程序段输出为( )int a=1,b=2,c=3;if(ab)a=b;b=c;c=a;printf(“a=%d b=%d c=%dn“,a,b,c);A)a=1 b=2 c=1 B)a=1 b=2 c=3C)a=1 b=3 c=1 D)a=2 b=3 c=28当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是(
16、 )if(ay);B)if(x=y)C)if(x!=y)scanf(“%d“,else scanf(“%d“,D)if(xA) abcde B) abceeC) abbde D) abccdd11若a、 b、c1、c2、x、y、均是整型变量,正确的switch语句是( )A) switch(a+b); B) switch(a*a+b*b) case 1:y=a+b; break; case 3: case 0:y=a-b; break; case 1:y=a+b;break; case 3:y=b-a,break;C) switch a D) switch(a-b) case 1 :y=a-b
17、; break case 2: x=a*d; break case c1:case 4:x=a+b;break;default:x=a+b; case c2:case 11:y=a-b;break; default:y=a*b;break; 12写出下面程序输出结果( )int x=1, y=0, a=0, b=0;switch(x)case 1:switch(y)case 0: a+; case 1: b+; case 2: a+; b+;printf(“a=%d, b=%dn“, a, b) ;A) a=2, b=1 B) a=1, b=1 C) a=1, b=0 D) a=2, b=21
18、3C语言的for语句中的表达式可以部分或全部省略,但两个( )不可省略。但当三个表达式均省略后,因缺少判断条件,循环会无限制地进行下去,形成死循环。A) main() int y=10;do y-; while(-y);printf(“%dn“,y-);A) -1 B) 1 C) 8 D) 021以下程序段的输出结果是( ).main() int i=5;for ( ;i+y;x=i+) i=x;B) for( ; ;x+=i);C) while(1)x+;D) for(i=10; ; i-) sum+=i;23有如下语句int x=3;do printf(“%dn“,x-=2); while
19、(!(-x);则上面程序段( )A. 输出的是1 B. 输出的是1和-2C. 输出的是3和0 D. 是死循环24以下不是无限循环的是( )A. for(y=0,x=1;x+y;x=i+) i=x;B. for( ; ;x+=i);C. while(1) x+;D. for(i=10; ;i-) s+=i;25以下正确的描述是( )。A) continue语句的作用是结束整个循环的执行B) 只能在循环体内和switch语句内使用break语句C) 在循环体内使用break语句或continue语句的作用相同D) 从多层循环嵌套中退出时,只能使用goto语句26以下程序输出结果为( )#inclu
20、de “stdio.h“main()int i,b,k=0;for(i=1;i=0) k+;printf(“%d,%dn“,k,b);A. 3,-1 B. 8,-1 C. 3,0 D. 8,-227以下程序段中循环体总的执行次数是( )int i,j;for(i=7;i;i-)for(j=0;j0)s=a+b;if(a0)if(c0)w=a-b;else t=c;printf(“%d,%d,%dn“,s,w,t);5阅读下面程序:main() int s, t, a, b;scanf(“%d%d“,s=1;t=1;if(a0) s=s+1;if(ab) t=s+t;else if (a=b)
21、t=5;else t=2*s;printf(“s=%d, t=%d“, s, t);6为了使输出结果t=4, 输入量a和b应满足的条件是【 】7下面程序的功能是在输入的一批整数中求出最大者,输入0结束循环。#include main() int a,max=0;scanf(“%d“,a=2;d=3;sum=0;do sum+=a;a+=d;if (【 】) printf(“%dn“,sum); while(summain ( ) int a=14, b=63;while (a!=b)while (ab) a-=b;while (amain() int i,j,x=0; for(i=0;i0?1
22、:x0) y=1; B) if(x)else if(x0)y=1;else y=0; else if(x=0)if(x0)y=1; if(x0)y=1;else if(x=0)y=0; else y=-1;else y=-1;若执行以下程序时从键盘上输入9,则输出结果是( )main() int n;scanf(“%d“,if(n+=85“);case B:case C: printf(“=60“);case D: printf(“=85 B) =60 C) =60 D) error.main()int num=0;while(nummain( ) int y=10;while (y-);pr
23、intf (“y=%dn“, y);A. y=0 B. 无限循环,无结果输出 C. y=1 D. y=-1设有程序段int x=0,s=0;while(!x!=0) s+=+x;printf(“%d“,s);则( )。A) 运行程序段后输出0 B) 运行程序段后输出1C) 程序段中的控制表达式是非法的 D) 程序段执行无限次下面程序段的运行结果是( )。a=1;b=2;c=2;while(amain() int a=1,b=10;do b-=a; a+; while(b-100) break;B) for( ; ; );C) int k=0; do +k; while(k=0);D) int
24、s=36;while(s) ;-s;下面程序段( )。for(t=1;t=0时什么也不输出C) printf函数永远也不执行D) 最多允许输出100个非负整数以下为死循环的程序段是( )。A) for(i=1; ; )if (+i%2=0) continue;if (+i%3=0) break;B) i=32767;do if (imain() int i,b,k=0;for(i=1;i=0) k+;printf(“%d,%d“,k,b);A) 3,-1 B) 8,-1 C) 3,0 D) 8,-2语句if(a) x=1;与 if(a=0)x=1;等价switch语句中的default分支一定
25、放在最后while语句do-while语句无论什么情况下,二者的执行结果都一样。C语言的while、do-while和for几个循环语句,可以进行相互嵌套。do-while语句构成的循环只能用break语句退出。for( ; ; ) 循环体 永远是一个死循环。要使for(表达式1;表达式2;表达式3)循环体不形成死循环,表达式2一定不能为空。while循环和do-while循环的while()后一定要有一个分号。 C语言程序的三种基本结构是嵌套结构、递归结构、顺序结构。C语言中while与do-while语句的主要区别是do-while的循环体至少无条件执行一次。 语句 x=3; do pri
26、ntf(“%2d“,x-); while(!x); 的执行结果是3。以下循环for (i=0; i,则以下程序的运行结果是【 】main()float x,y;char o;double r;scanf(“%f%f%c“,break;case -:r=x-y;break;case *:r=x*y;break;case /:r=x/y;break;printf(“%f“,r);当运行下面程序时,从键盘键入right?,则下面程序的运行结果是【 】 。#include main() char c;while(c=getchar()!=?) putchar(+c);下面程序段的运行结果是【 】 。x
27、=2;do printf(“*“); x-; while(!x=0)当运行以下程序时,从键盘键入1 2 3 4 5 -1 ,则下面程序的运行结果是【 】 。#include main() int k=0,n;do scanf(“%d“, k+=n; while(n!=-1);printf(“k=%d n=%dn“,k,n);下面程序段的运行结果是【 】 。for( a=1,i=-1;-1=10)break; if (x%2=1) x+=5; continue;x-=3;C语言(分支和循环结构)三若 w = 1, x = 2, y=3, z=4, 则条件表达式 wx? w : y=60) pri
28、ntf(“Cn“);else printf(“Dn“);A) A B) B C) C D) D选择运行结果为4的表达式( )A) int i=0, j=0;(i=3,(j+)+i); B) int i=1, j=0; j=i=(i=3)*2);C) int i=0, j=1;i=(j=1)?(i=1):(i=3);D) int i=1,j=1; i+=j=2;以下程序段输出为( )int a=1,b=2,c=3;if(ab)a=b,b=c;c=a;printf(“a=%d b=%d c=%dn“,a,b,c);A)a=1 b=2 c=1 B)a=1 b=2 c=3C)a=1 b=3 c=1 D
29、)a=2 b=3 c=2请问读以下程序:main()int a=5,b=0,c=0;if(a=b+c)printf(“else printf(“#“);以上程序( )A)有语法错不能通过编译 B)可以通过编译但不能连接C)输出if(x100)break;B. for(;);C. int k=1000;do-k while (k)D. int s=36While(s=0);+s;语句while (!e);中的条件!e等价于( )。A) e=0; B) e!=1 C) e!=0 D) e在C语言中( )。A) 不能使用do_while语句构成的循环B) do_while语句构成的循环必须用brea
30、k语句才能退出C) do_while语句构成的循环,当while语句中的表达式为非0时结束循环D) do_while语句构成的循环,当while语句中的表达式为0时结束循环有如下程序#include main()while(putchar(getchar()!=?);当输入“china?“时,程序的执行结果是( )。A) china B) dijob C) dijob? D) china?定义如下变量:int n=25;则下列循环的输出结果是( )。While(n22) n-;printf(“%dn“,n);A) 22 B) 24 C) 23 D) 121 23 22 220 22 21 0下
31、列程序段的运行结果是( )x=y=0;while(xbc) t=a;a=b;b=t;c-printf(“%d,%d,%dn“,a,b,c);A)1,2,0 B)2,1,0 C)1,2,1 D. 2,1,1case后如果有多语句不需要用花括号括住。case语句后一定要加break语句continue语句的功能就是结束本层循环。C语言的while、do-while和for几个循环语句中,for循环语句最灵活、功能最强。用do-while语句构成循环时,只有在while后的表达式为非0时结束循环。for(表达式1;表达式2;表达式3)中,表达式1和表达式3可以同时都为逗号表达式。for后的一对圆括号
32、中,可以出现各种形式的与循环控制无关的表达式。while循环和do-while循环的while()后一定不能加上一个分号。若i为整型变量,则以下循环 i=0; while(i=0)i+;一次也不执行。执行语句 for(i=1;+i7) n-;printf(“%d “,n);以下程序的运行结果是【 】main()int a,b;int i=5,j=7,k=0;a=kb=k|j;printf(“a=%d b=%dn“,a,b);阅读下列程序main()int t,h,m;scanf(“%d“,h=(t100)%12;if(h=0)h=12;printf(“%d:“,h);m=t%100;if(m时
33、,程序的运行结果是【 】以下程序的运行结果是【 】main()int a=2,b=3,c;c=a;if(ab)c=1;else if(a=b)c=0;printf(“%dn“,c);以下程序段的运行结果是【 】int x=1,y=0;switch(x)case 1:switch (y) case 0:printf(“*1*“);break;case 1:printf(“*2*“);break;case 2:printf(“*3*“);break;下面程序的运行结果是【 】 。#include main() int a,s,n,count;a=2;s=0;n=1;count=1;while(co
34、unt100) break; C. k=10; D. s=100 do while (s) s-=3; k+; k+; while (k0);有以下程序main() int i, j;for(j=10;j=0;i-) ai=10-i;printf(“%d%d%d“,a2,a5,a8);A)258 B)741 C)852 D)369设有程序段:#define N 3#define M N+2float aMN;则数组a的元素个数和最后一个元素分别为( ).A) 15,a53 B) 15,a35 C) 8,a42 D) 15,a42 设有:int x24=1,2,3,4,5,6,7,8;print
35、f(“%d“,x24); 则输出结果是( ).A) 8 B) 1 C) 随机数 D) 语法检查出错 以下程序的输出结果是( ).main() int i,a33= 1,2,3,4,5,6,7,8,9 ;for(i=0;iy?x:y; int z; z=xy?x:y; C) int max(x,y) return(z); int x,y,z; z=xy?x:y; D) int max()return (z); 以下叙述中正确的是( ).A)在C语言中总从第一个开始定义的函数开始执行B)在C语言中所有调用别的函数必须在main函数中定义C)C语言总是从main函数开始执行D)在C语言中,main函
36、数必须放在最前面以下说法中正确的是( ).A) C语言程序是由一个或多个函数组成,其中至少有一个主函数B)一个C语言文件至少应有一个主函数C)所有C语言函数都有返回值D)C程序中,main函数必须放在其他函数之后以下正确的函数定义是( ).A) double fun(int x,int y); int z;z=x+y; return z;B) fun(int x,y)int z; return z;C) double fun(int x,int y);double z; z=x+y; return z;D) double fun( x, y) int x,y;double z; z=x+y;
37、return z;以下正确的函数声明形式是( ).A) float fun(int x,int y)B) float fun(int x, y)C) float fun(int x,int y);D) float fun(int ,int )C语言中,函数返回值的类型是由( )决定的。 A)调用函数时临时B)return语句中的表达式类型C)调用该函数的主调函数类型D)定义函数时,所指定的函数类型关于return语句,正确的说法是 ( )。A)可以在同一个函数中出现多次B)必须在每个函数中出现C)在主函数和其它函数中均可出现D)只能在除主函数之外的函数中出现一次C语言中形式参数的作用范围是(
38、).A) 其所在的函数内 B) 整个程序文件以下正确的函数定义形式是( ).A) double fun(int x,int y)B) double fun(int x,int y);C) double fun(int x, y)D) double fun(int x, y);以下函数f返回值是( ).f(int x)return x;A)void类型 B) int类型 C) float类型 D) 无法确定返回值类型以下说法中正确的是( ).A)定义函数时,形参的类型说明可以放在函数体内B)return后面的值不能为表达式C)如果函数值的类型与返回值的类型不一致,以函数值类型为准D)如果形参与实
39、参的类型不一致,以实参为准若用数组作为函数调用的实参,传递给形参的是( ).A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数C语言中,调用一个函数时,当形参是变量名时,实参和形参之间的数据传递是( ) 。A)单纯值传递B)单纯地址传递C)值传递和地址传递都有可能D)由实参传给形参,然后由形参传回给实参,既是双向传递下列函数调用中,不正确的是 ( )。A)max(a,b); B)max(3,a+b);C)max(3,5); D)int max(a,b);若输入ab,程序运行结果为 ( )。main() char a2;scanf(“%s“,a);printf(“%c
40、,%c“,a1,a2);A)a,b B)a,C)b, D)程序出错 在下面对C语言函数的有关描述中,正确的是( ).A)在C语言中调用函数时,若函数参数为简单变量,则只能将实参的值传给形参,形参的值不能传给实参B)函数必须有返回值,否则不能使用函数C)C程序中有调用关系的所有函数必须放在同一源程序文件中在C语言中以下正确的说法是( ).A) 当函数的参数为简单变量时,实参和与其对应的形参各占用独立的存储单元;B) 当函数的参数为简单变量时,实参和与其对应的形参共占用一个存储单元;C) 形参是虚拟的,不占用存储单元。若用数组名作为函数调用的实参,传递给形参的是( ).A)数组的首地址B)数组第一个元素的值