资源描述
复习题一、选择题1、C程序由( C )组成。 A子程序 B主程序和子程序 C函数 D过程2、以下正确的叙述是( C )。 A 在C语言中,main函数必须位于文件的开头 B C语言每行中只能写一条语句 C C语言本身没有输入、输出语句 D 对一个C语言进行编译预处理时,可检查宏定义的语法错误 3、下面属于C语言标识符的是( D )A 2ab B. f C. ?b D. _a124、下列符号中用来表示C语言中的回车换行的是( B ) A. ” B. n C. b D. 5、若定义#define P 3.1416 则P是( A ) A符号常量 B单精度变量 C整型变量 D一般变量6、一个C程序的执行是从( A )A. 本程序的main()函数开始,到main()函数结束.B. 本程序文件的第一个函数开始,到本程序文件第一个函数结束.C. 本程序文件的第一个函数开始,到本程序main函数结束.D. 本程序的main()函数开始,到本程序文件的最后一个函数结束.7、下列关于C语言注释的叙述中错误的是( D )。A以“/*”开头并以“*/”结尾的字符串为C语言的注释内容。B注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义。C程序编译时,不对注释作任何处理。 D程序编译时,需要对注释进行处理。8、若有定义:int a=8, b=5, c; 执行语句c = a/b+0.4 ;后,c的值为(B )。 A 1.4 B1 C 2.0 D 2 9、若t为int类型,表达式t=1,t= 5,t+的值是( C) A2 B6 C5 D 710、设有int x,y; 以下语句判断x和y是否相等,正确的说法是该语句( B )if (x=y) printf( x is equal to y.); A. 语法错 B. 不能判断x和y是否相等 C. 编译出错 D. 能判断x和y是否相等11、 有如下输入语句:scanf(“x=%d:y=%d”, &x, &y); 为使变量x的值为2002, 变量y的值为11,那么从键盘输入数据的正确格式为 ( B )。 A 2002 11 B x=2002:y=11 C x=2002 y = 11 D x=2002,y=1112有int x,y,z ;且 x=3,y=-4,z=5 ;则以下表达式的值为( A ) ! ( xy ) +(y != z ) | ( x+y ) ( y - z) A) 1; B) 0; C) 2; D) 4;13设 a=50, b=20, c=12,则 x 的值是( D ) x= if( ab ) a=b ,c=a ,+c; A) 13 B) 51 C) 50 D) 2114下面的表达式正确的是( C ) A) (a+b)+ B) 8+ C) _(i+) D) (-k )+15.设以下变量均为int类型,则值不等于 7的表达式是:( C ) A) (x=y=6,x+y,x+1) B) (x=y=6,x+y,y+1) C) (x=6,x+1,y=6,x+y) D) (y=6,y+1,x=y,x+1)16设有如下程序段,输出结果应为( A ) x=( a=3, 6*3 ); y=a=3, 6*a; printf(“x=%d,y=%d n”,x, y ); A) x=18, y=3; B) x=18, y=19; C) x=3, y=18; D) x=3, y=3;17、写出下列程序的执行结果( D ) int x=-2; printf(%d,%u,%o,x, x, x); A -2, -2, -2 B-2, 32767, -177777 C-2, 32768, 177777 D-2, 65534, 177776 18、若有定义int a; char b; float c; 则表达式 a*b-c 的类型是( D ) Afloat B int C char D double 19、若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是( C )。 A 1 B 2 C 2.0 D 2.5 20、Putchar 函数可以向终端输出一个( D ) A)整型变量表达式值; B) 字符串; C)实型变量值; D) 字符或字符型变量值;21执行以下程序段,正确的输出结果( A ) #include main( ) int b=1; b%=5-2; Printf( “%d”,b); b+=b*=b-=b*=4; printf(“%d”,b); A) 1,0; B) 2,0; C) -2,8; D) 1,8;22、若有程序段:double x=-5.9;int y;y=(int)x; 执行该段程序后( A )。Ax=-5.9,y=-5 Bx=-5.9,y=-6 Cx=-5,y=-5 Dx=-6,y=-623.以下程序的运行结果是:( B ) #include”stdio.h” main() int a,b,d=241; a=d /100% 9; b=(-1) (-1); printf(“%d,%d”,a,b); A) 6, 1 B) 2, 1 C) 6, 0 D) 2, 024、以下正确的叙述是( C )。 A在if-else语句中第一个else与第一个if相匹配B完整的if语句中都有else存在的 Cif-else语句中,else 与最近的if匹配 D以上都正确25、下列保留字中用于构成循环结构的是( B ) A. if B. while C. switch D. default26. 运行下面的程序段,结果是:( A ) int n=0; while(n+=2);printf(“%d”,n); A)2 B)3 C)4 D)有语法错27以下描述正确的是:( B ) A) goto 语句只能用于退出多层循环。 B)switch 语句中不能出现continue语句。 C) 只能用 continue语句来终止本次循环。 D) 在循环中break语句不能独立出现。 28以下循环的执行次数是( C ) for(x=0,y=0;(y=123 x4 );x+);A)是无限循环 B) 循环次数不定C)执行4次 D) 执行3次29.下面有关 for循环的正确描述是:( D )A) for循环只能用于循环次数已经确定的情况B) for循环是先执行循环体语句,后判断表达式C) 在for循环中,不能用break语句跳出循环体D) for循环的循环体语句中,可以包含多条语句,但是,必须用花括号括起来。 30、for(i=0; ;i+) ;执行循环的次数为:( D ) A0次 B 许多次 C错误 D无限多次 31.设有以下程序段 int x=0, s=0; while(!x!=0) s+=+x; Printf(“%d”,s);则( B )A)运行程序段后输出0 B)运行后输出 1C)程序段中控制表达式是非法的 D)程序执行无限次32、以下程序段中由while构成的循环,执行的次数为( A )。 int k=0;while(k=1) k+;A无限次 B有语法错,不能执行C 一次也不执行 D 执行1次33、 以下正确的描述是( B ) A continue语句的作用是结束整个循环的执行B只能在循环体内和switch语句体内使用break语句C在循环体内使用break语句或continue语句的作用相同Dgoto语句只能用于退出多层循环34、下面的for循环语句的循环次数是( A )。 int i; for (i=1;i100;i+=2)i+; A 33次 B50次 C 49次 D 99次35、下列语句中,不正确的是( D )。A. int a23 = 1 , 2 , 3 , 4 , 5 , 6; B. int a23 = 1, 4 , 5;C. int a 3 = 1, 4; D. int a = 1 , 2 , 3 , 4 , 5 , 6;36、若有定义char x=abcdefg; char y=a, b, c, d, e, f, g ; 则下述正确的叙述为( C )。 A数组x 和数组y等价 B 数组x 和数组y的长度相同 C数组x 长度大于数组y的长度 D 数组x 长度小于数组y的长度 37、合法的数组定义是(C ) Achar a=H,e,l,l,o; Bchar a5=Hello; Cchar a5=H,e,l,l,o; Dchar a5=”Hello”;38、若有如下定义: int n5=1, 2, 3, 4, 5 , *p=n; 则值为5的表达式是( C ) 。 A *p+5 B *(p+5) C*(p+4) Dp+4 39、以下各语句或语句组中,正确的操作是( C )。 A char s5=abcde ; B char *s; gets(s); Cchar *s; s=abcde; Dchar s5; scanf(%s, &s); 40、已知int b; 则对指针变量p正确的说明和初始化是:( D ) Aint *p=b; Bint p=b; Cint p=&b; Dint *p=&b;41、以下正确的函数定义形式是( A ) Adouble fun(int x, int y) Bdouble fun(int x;int y) Cdouble fun(int x, int y); Ddouble fun(int x,y);42、如果定义char a20=0;则a3的初值是( A ) A0 B0 Cn DF43、以下各语句或语句组中,正确的操作是( C )。 A char s5=abcde ; B char *s; gets(s); Cchar *s; s=abcde; Dchar s5; scanf(%s, &s); 44、若有定义:int a56; 则下面关于数组a的叙述中正确的是( C )。A该数组共有20个元素 Ba06是该数组的一个元素Ca00是该数组的一个元素 Da56是该数组的一个元素45、已知int b; 则对指针变量p正确的说明和初始化是:( D )Aint *p=b; Bint p=b; Cint p=&b; Dint *p=&b;46下面程序C(每行程序前面的数字表示行号) ( C ) 1 main() 2 3 float a 10= 0.0; 4 int i;C 5 for(i=0; i3; i+) scanf(“%d”,ai); 6 for(i=0; i10; i+) a0=a0+ai; 7 printf(“%fn”,a0); 8 A)没有错误 B)第 3行有错误C)第 5 行有错误 D) 第7行有错误47合法的数组定义是( B ) A) int s = “good”; B) int s5= 0,1,2,3,4; C) char s= “good”; D) char = 0,1,2,3,4; 48下面程序中有错误的行是( D )(每行程序前面的数字表示行号) 1 main() 2 3 int a3= 1 ; 4 int i; 5 scanf(“%d”,a); 6 for(i=1; i3; i+) a0=a0+ai; 7 printf(“a0=%dn”,a0); 8 A) 3 B)6; C)7; D) 5;49以下能对一维数组进行正确初始化的语句是( C ) A) int a10=( 0,0,0,0,0); B) int a10= ; C) int a = 0 ; D) int a10= 10*1;50对一维整型数组 a的正确说明是( D ) A) int a; B) int n =10 ,an; C) int n;scanf(“%d”,n); D) #define SIZE 10 int an ; int aSIZE;51执行以下程序段,输出结果( D ) #include int x = 5,4,3,2,1; main( ) int i,*p,m=0; for(p=x,i=1;p+i=x+4;i+=2) printf(“%d,”,*(p+i); for(i=0;i=4;i+) m+=xi; printf(“%d”,m); A) 5,4,3,2,1 B) 1,2,3,4,5 C) 4,2,10 D) 4,2,15二、填空题1、C语言标识符由字母、下划线或数字组成。命名标识符必须以 下划线 或 字母 开头,字母严格区分大小写,不能使用C语言的关键字作为标识符。2、C语言中为了简化程序,提高程序的编译效率,在赋值运算符前面加上其他运算符号构成复合运算符。例如:x=x+5 用复合运算符可以写成 x+=5 。3、结构化程序设计的基本结构有三种,分别是顺序,选择和循环4、“: ?”条件运算符是C语言中唯一的三目运算符。由其连接的表达式为条件表达式,其格式为: ?: 。执行过程:首先计算表达式1的值,如果表达式1的值是“真”(非0),则整个表达式的值为 表达式2 的值如果表达式1的值是“假”(0),则整个表达式的值为 表达式3 的值。5、表达式10|20|30的值是 1 。 6、C语言中常用的三种循环控制语句中,while语句和for语句属于 当 型循环,dowhile语句属于 直到 型循环。7、 多分支选择结构,可以用嵌套的if语句和_switch_ _while_语句来实现。8、 break语句只能用于_switch_ _语句和_ 循环 _语句。9、已知字符A的ACSII码值为65,以下语句的输出结果是 B,66 。char ch=B; printf(%c,%dn,ch,ch); 10、 在定义时,对数组的每一个元素赋值叫数组的_初始化 _,对全部数组元素赋初值,可以不指定数组的_ _长度_。11、有定义int b7=3, 1, 2, 则b5的值为 0 。 12、在C语言中,头文件的扩展名是 .h 。13、int *p,i;p=&i;*p=5;中的两个*含义是不一样的,前者指 定义指针变量 后者指 对指针变量的引用 。14、若定义:int a=511,*b=&a;, 则printf(%dn,*b); 的输出结果为 511 。15、若C语言中定义了二维数组a22,则a中的元素为(按存储顺序写) a00,a01,a02,a10,a11,a12,a20,a21,a2216、 int *p,i;p=&i;*p=5;中的两个*含义是不一样的,前者指 定义指针变量 后者指 对指针变量的引用 。17、设有说明char str20, 如果想从终端上把以下字符“This is a book”送到数组str中,使用的完整语句为 gets(str); 。18、 有这样的定义:float a;float *point; a=8.23; 让指针point指向a的语句是_,point=&a_,当point指向a 后,_ _&a_与point等价,_a _与 *point等价。19、 数组定义和输出语句如下: Static char str =”abcxefg!”; Printf(“%4.5s”,str );则输出结果为_abcxe_ _。20、有这样的定义 : static int a5=1,2,3,4,5; int * p; p=&a0; 写出一个与p=&a0等价的语句 p=a ,*(p+1)的值是_2_ _,*(a+2)的值是_3_。 21、函数直接或间接地自己调用自己,称为函数的_递归调用_。22、在函数内部定义的只在本函数内有效的变量叫局部变量,在函数以外定义的变量叫全局变量。三、分析下列程序。1程序输出结果是 a=2,i=3 。#include void main()int i=2,a;a=i+;printf(“a=%d,i=%d”,a,i);2程序输出结果是 cap=12 。#include void main()int sum=10,cap=10; cap=sum+,cap+,+cap; printf(cap=%dn,cap);3. 程序输出结果是 x=14,y=4 。#include void main()int x=10,y=5;switch(x)case 1:x+;default :x+=y;case 2:y-;case 3:x-;printf(x=%d,y=%dn,x,y);4 程序输出结果是 x= 3 。#include void main()int x=3,y=1;if(x0) x=x+1; else x=x+2; printf(x=%dn,x); 2 2 3 9 10 65.给出下面程序运行结果 16 17 18 。#include void main()int a33=1,2,3,4,5,6,7,8,9;int i,j;for(i=0;i3;i+) for(j=0;j=j) aij+=aii;for(i=0;i3;i+)for(j=0;j3;j+) printf(%5d,aij);printf(n);6若键盘输入为 1 3 5 7 9 2 4 6 8 0,则程序输出结果是 0 8 6 4 2 9 7 5 3 1 。#include void main()int a10,i;for(i=0;i=0;i-) printf(%2d,ai);7. 给出下面程序运行 love china! H W 。#include void main() char *s2=I love China!; char *s3,c; char *s4=w; s3=&c; *s3=H; s2=s2+2; printf(%st%ct%sn,s2,*s3,s4);8.给出下面程序运行结果 abcd 123 。#include void main()char a50=abcd,b20=123456;int i,j;i=0;while(ai!=0) i+;for(j=0;bj!=0&j3;j+,i+)ai=bj;ai=0;printf(%s,a);9. 给出下面程序运行结果 10,10,10 。#include void main() int a,b,*ap,*bp; a=10; ap=&a; bp=&*ap; printf(%d,%d,%d,*bp,*ap,a); 10 若通过键盘输入2 3,给出下面程序运行结果 8.000000 。 #include #include float func(float x,float y) return(pow(x,y); void main()float a,b; scanf(%f%f,&a,&b); c=func(a,b); printf(%fn,c);11、 下面程序的功能是:从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。请填空。main( ) float x, max, min;scanf (“%f ”,&x);max=x;min=x;while ( x0 ) if (xmax ) max = x; if ( xmin ) min = x; scanf ( “%f ” , &x ) printf (“ n Max=%f n Min=%f n” ,max ,min );12、下面程序功能打印输出所有的“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数字的本身。如:153是水仙花数,因为。#include void main()int i,j,k,n;for(n=100; n1000 ;n+)i=n/100; J=(n-i*100)/10 ; K=n%10 ;if( n=i*i*i+j*j*j+k*k*k )printf(%d,n);13. 程序输出结果是 15 1 void fact(int m, int n, int *p1, *p2) *p1=2*m+n; *p2=m-n/2; void main( ) int a, b, c, d; a=4; b=7; fact(a, b, &c, &d); printf( %d %dn, c,d); 14.给出下面程序运行结果 -5,5 main() int x,y; x=-5; if (x0) y=-x;else if (x=0) y=0; else y=x*x;printf(“x=%d,y=%dn”,x,y);15给出下面程序运行结果 3.6,3 main() int y; float x=3.6;y=(int)x;printf(“x=%f,y=%dn”,x,y);
展开阅读全文