C语言期末复习资料(重要)_第1页
C语言期末复习资料(重要)_第2页
C语言期末复习资料(重要)_第3页
C语言期末复习资料(重要)_第4页
C语言期末复习资料(重要)_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(注: 本文档参考答案中 “ ”代表回车换行,“”代表空格,程序代码中省略了# include )一、 基础知识和顺序结构(一) 选择题1 以下不正确的C语言标识符是 A. ABC B. abc C. a_bc D. ab.c2 以下正确的C语言标识符是 A. %x B. a+b C. a123 D. test!3 一个C语言程序的执行是从 。A. main( )函数开始,直到main( )函数结束B. 第一个函数开始,直到最后一个函数结束C. 第一个语句开始,直到最后一个语句结束D. main( )函数开始,直到最后一函数结束4 在C语言程序中,main函数的位置 。A. 必须作为第一个函数 B. 必须作为最后一个函数C. 任意D. 必须放在它所调用的函数之后5 一个C语言程序是由 。A. 一个主程序和若干个子程序组成B. 一个或多个函数组成C. 若干过程组成D. 若干子程序组成6 下列四个叙述中,错误的是_。A. 一个C源程序必须有且只能有一个主函数B. 一个C源程序可以含零个或多个子函数C. 在C源程序中注释说明必须位于语句之后D. C源程序的基本结构是函数7 编辑程序的功能是 。A. 建立并修改程序B. 将C源程序编译成目标程序C. 调试程序D. 命令计算机执行指定的操作8 C编译程序是 。A. C语言程序的机器语言版本B. 一组机器语言指令C. 将C源程序编译成目标程序的程序D. 由制造厂家提供的一套应用软件9 以下叙述不正确的是_。A. 分号是C语句的必要组成部分B. C程序的注释可以写在语句的后面C. 函数是C程序的基本单位D. 主函数的名字不一定用main表示10 C语言中允许的基本数据类型包括_。A. 整型、实型、逻辑型B. 整型、实型、字符型C. 整型、字符型、逻辑型D. 整型、实型、逻辑型、字符型11 C语言中能用八进制表示的数据类型为_。A. 字符型、整型 B. 整形、实型C. 字符型、实型、双精度型 D. 字符型、整型、实型、双精度型12 下列属于C语言合法的字符常数是_。A. 97 B. ”A” C. t D. ”0”13 设所有变量均为int型,则表达式(a=2,b=5,b+,a+b)的值是 A. 7 B. 8 C. 6 D. 214 在C语言中,要求运算数必须是整型的运算符是: A. / B. +C. != D. %15 设C语言中,一个int 型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 A. 0-255B. 1-32767 C. 0-65535D. 0-16 下面不正确的字符串常量是: A. abcB. 1212C. 0D. 17 表达式 18/4*sqrt(4.0)/8值的数据类型是: A. intB. float C. doubleD. 不确定18 若有以下定义:char a;int b;float c;double d;则表达式a*b+d-c值的类型为: A. float B. int C. char D. Double19 不属于字符型常量的是 A. A B. B C. n D. x7220 在C语言中,合法的长整型常数是_。A. 0L B. C. D. 0xa34b7fe21 若有以下定义语句char c1=b, c2=e; printf(“%d,%cn”,c2-c1,c2-a+A);则输出结果是_。A. 2,M B. 3,E C. 2,E D. 输出项与相应的格式控制不一致,输出结果不确定22 设char ch; 以下正确的赋值语句是: A. ch=123; B. ch=xff; C. ch=08; D. ch=;23 若t为double类型,表达式t=1,t+5,t+的值是 A. 1 B. 6.0 C. 2.0 D. 1.024 设整型变量m,n,a,b,c,d均为1,执行“(m=ab)&(n=ab)”后m,n的值是 A. 0,0 B. 0,1 C. 1,0 D. 1,125 若a=1,b=2,c=3,d=4,则条件表达式ab?a:ad?c:d的值为 A. 1 B. 2 C. 3 D. 426 设a=2,则执行b=a=!a;语句后,b的结果是 A. 0 B. 1 C. 2 D. 327 设有以下语句,则c的二进制值是 char a=3,b=6,c; 解: a=,b=c=ab2; ab= c=A. B. C. a)28 设x和y均为int型变量,则以下语句:x+=y;y=x-y;x-=y;的功能是 D A. 把x和y按从大到小排列B. 把x和y按从小到大排列C. 无确定结果D. 交换x和y中的值(二) 填空题1. C语言中的标识符只能由三种字符组成,它们是 字母、 数字 、 下划线 。2. 一个C语言程序有且仅有一个_main_函数。3. 结构化设计中的三种基本结构是顺序,分支,循环。4. C语言程序的执行是从_main函数_开始执行的。5. C语言源程序文件后缀是_c或cpp_,经编译后生成文件的后缀是_obj_。经链接后生成文件的后缀是_exe_。6. C语言源程序的语句分隔符是_;_。7. 若a是int型变量,且a的初值为6,则执行下面表达式后a的值为 -60 。 a+=a-=a*a 解:a=a-36=-30 a=a+(-30)8. 72在内存中占 1 个字节,”72”在内存中占 2 个字节。9. 若有以下定义语句:int a=5; printf(“%dn”,a+); 则输出结果是_5_。10. C语言中的基本数据类型分为 整 型、 实 型和 字符 型。11. C语言的实型可分为 float 型和 double 型。12. 若有以下定义语句:int u=010,v=0x10,w=10; printf(“%d,%d,%dn”,u,v,w); 则输出结果是 _8,16,10_。13. 下面程序的输出是_k=11,k=13,k=b_。main()int k=11; printf(k=%d,k=%o,k=%xn,k,k,k);14. 若有以下定义语句:int a=5; printf(“%dn”,a+); 则输出结果是_5_。15. 设x为int型变量,执行以下语句,x=10; x+=x-=x-x; x的值为_20_。16. 若有定义int a=10,b=9,c=8; 接着顺序执行下列语句后,变量b的值为_3_。c=(a-=b-5);c=(a%11)+(b=3);17. 设有以下定义,并以赋予了确定的值:char w; int x; float y; double z;则表达式w*x+z-y所求得值的数据类型为_double_。18. 设x和y均为int型变量,且x=10和y=3则以下语句的输出结果是_10,2_。Printf(“%d,%dn”,x+,-y);19. 下列程序的输出结果是_2,1 _。main()int a=1,b=2; a+=b; b=a-b; a-=b; printf(“%d,%dn”,a,b);20. 以下程序执行结果是: 2,1 main( )int a,b,d=241;a=d/100%9;b=(-1)&(-1);printf(%d,%dn,a,b);21. 以下程序执行结果是: 3.14159,3.1416,3.142 main( )float f=3.;printf(%5f,%5.4f,%3.3f,f,f,f);22. 以下程序输入1 2 3后的执行结果是: a=1,b=2,c=3 main( )int a,c;char b;scanf(%d %c %d,&a,&b,&c);printf(a=%d,b=%c,c=%dn,a,b,c);23. 以下程序输入后的执行结果是: a=12,b=345 main( )int a,b;scanf (%2d%3d,&a,&b);printf(a=%d,b=%dn,a,b);24. 以下程序输入ABC 后的执行结果是: c=A main( )char c;scanf(%3c,&c);printf(c=%cn,c);二、 分支结构(一) 选择题1 选择合法的条件语句(设int x,a,b,c;) ( )。A. if (a=b) +x;B. if (a=b) +x;C. if (ab) +x;D. if (a=b) +x;2 执行下列程序,输入为1的输出结果是( A ),输入为4的输出结果是( C ),输入为3的输出结果是( D )。 main( )int k; scanf(%d,&k); switch(k)case 1:printf(%dn,k+); case 2: printf(%dn,k+); break; case 3: printf(%dn,k+); break; case 4: printf(%dn,k+); case 5: printf(%dn,k+); break; default: printf(Full!n); A. 12 B. 1 C. 45 D. 3 (二) 填空题1 下列程序运行后输出结果是_end_。main( )int a,b,c; a=2;b=3;c=1; if(ab) if(ac) printf(%dn,a); else printf(%dn,b); printf(endn);2 以下程序执行结果是_d=1_。main( )int a,b,c,d,x; a=b=c=0; d=1; if(a) d=d-10; else if(!b) if(!c) x=6; else x=7; printf(d=%dn,d);3 若从键盘输入m,下列程序执行结果是_M_。main( )char c; printf(Enter a character:); scanf(%c,&c); if(a=c&cb) t=a;a=b;b=t; if (ac) t=a;a=c;c=t; if (ad) t=a;a=d;d=t; if (bc) t=b;b=c;c=t; if (bd) t=b;b=d;d=t; if (cd) t=c;c=d;d=t; printf(n %d %d %d %dn,a,b,c,d); 6 以下程序的执行结果是_ firstthird_。 main( ) int x=1,y=0; switch(x) case 1: switch(y) case 0:printf(firstn);break; case 1:printf(secondn);break; case 2:printf(thirdn); 7 执行以下程序,输入-10的结果是_x=0_,输入5的结果是_ x=5_,输入10的结果是_ x=10_,输入30的结果是_ x=5_。 main( ) int a,b; float x; scanf(%d,&a); if(a0) b=-1; else b=a/10; switch(b) case -1:x=0;break; case 0:x=a;break; case 1:x=10;break; case 2: case 3:x=-0.5*a+20;break; default:x=-2; if(x!=-2) printf(x=%gn,x);else printf(error!n);三、 循环结构(一) 选择题1 若i,j已定义为int型,则以下程序段中内循环体的执行次数是( )。 for(i=5;i;i-)for(j=0;j4;j+) A. 20 B. 24 C. 25 D. 302 若i,j已定义为int型,则以下for循环是( )。 for(i=0,j=0;(j!=123)&(i4);i+);A. 无限循环 B. 循环次数不定 C. 执行4次 D. 执行3次 3 对于for(表达式1; ; 表达式3)可以理解为( )。A. for(表达式1;0; 表达式3)B. for(表达式1;1; 表达式3)C. for(表达式1; 表达式1; 表达式3)D. for(表达式1; 表达式3; 表达式3)4 执行下列程序段后,x值是( A ),i值是( C )。 int i,x; for(i=1,x=1;i=10) break; if(x%2=1) x+=5; continue; x-=3; A. 10 B. 7 C. 6 D. 145 下列程序的执行结果是( )。 #include main( ) int s=0, k; for(k=7;k=0;k-) switch(k) case 1: case 4: case 7: s+; break; case 2: case 3: case 6: break; case 0: case 5: s+=2; break; printf(s=%dn,s); A. s=4 B. s=7 C. s=3 D. s=56 下列程序段执行结果是输出( )。 x=3; do printf(%2d,x-); while(!x);A. 0 B. 3 C. 321 D. 210(二) 填空题1 C语言while和dowhile循环的主要区别是 前者先判后做 ,后者先做后判 。2 以下程序输出结果是 123 。 main( )int num=0; while(num=2) num+; printf(%dn,num); 3 下列程序运行输出结果是 12 23 3 34 4 4 4 5 5 5 5 56 6 6 6 6 6main( )int i,j,k; for(i=1;i=6;i+) for(j=1;j=20-2*i;j+) printf( ); for(k=1;k=i;k+) printf(%4d,i); printf(n); 4 下列程序执行结果是 237273 。 main( ) int i=2,j,k; for(j=0;j=9;j+) for(k=0;k=9;k+) if(i*j*k=42&i+j+k=12) printf(%d%d%dn,i,j,k); 5 下列程序执行时,若从键盘输入124cmknp 03,结果是 d=5 s=1 a=5 。 main( ) char c; int d,s,a; d=s=a=0; c=getchar( ); while(c!=n) if(c=0) d=d+1; if(c= ) s=s+1; if(c=a|c=A) a=a+1; c=getchar( ); printf(d=%d s=%d a=%dn,d,s,a); 6 下列程序执行结果是 72 。main( )int i,j,k,s=0; for(i=0;i3;i+) for(j=0;j4;j+) for(k=0;k2;k+) s=s+i+j+k; printf(%dn,s); 7 下列程序执行结果是 0 12 46 912 1617 1921 2427 3135 4042 4548 5256 6166 72 (代表回车换行) 。main( )int i,j,k,s=0; for(i=0;i3;i+) for(j=0;j4;j+) for(k=0;k2;k+) s=s+i+j+k; printf(%d ,s); printf(n); 8 下列程序执行结果是 * * * * 。main( )int i; char j=*; for(i=1;i4;i+) switch(i) case 1: printf( %cn,j); break; case 2: printf( %c%cn,j,j); break; case 3: printf(%c%c%cn,j,j,j); break; 9 执行下列程序,若由键盘输入4,程序执行结果是 4 7 9 10 。main( ) int s=0,i; scanf(%d,&i); do if(i=0) break;else s=s+i; printf(%dt,s); while(-i); 四、 数组(一) 选择题1 以下关于数组的描述正确的是( )。A. 数组的大小是固定的,但可以有不同类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同类型的数组元素2 下面一维数组a正确定义是( )。A. int a(10); B. int n=10,an;C. int n; scanf(%d”,&n); int an;D. # define SIZE 10int aSIZE;3 若定义int a10;则对a数组元素的正确引用是( )。A. a10 B. a4.3 C. a(5) D. a6-64 以下对一维数组进行正确初始化的语句是( )。A. int a3=(0,1; B. int a3=;C. int a=0; D. int a3=3*2;5 下列程序:# define N 6main()char aN; int i=0; for (;iN;ai=getchar(),i+); for (i=0;iN;putchar(ai),i+);运行时输入以下三行字符,每行输入都是在该行首列开始:abcdef程序输出结果是( )A. abcdef B. abcd C. abcd D. abcdef 6 运行下列程序的输出结果是( )。main() int a=5; float x=67.846; static char d10=abc; printf(%4d,%4.1f,%c,a,x,d2);A. 5,67.8,c B. 5,67.8,cC. 5,67.8, b D. 5,67.8,b7 若定义int a32;则printf(“%d”,a10);语句输出的是第( )个元素。A. 1 B. 3 C. 4 D. 58 当输出含空格的字符串时,应使用( )函数。A. printf() B. puts () C. putchar () D. putc()9 在执行char str10=”chnina”;strlen(str)的结果是( )。A. 5 B. 6 C. 7 D. 910 10当接收用户键入的含空格的字符串时,应使用( )函数。A. scanf() B. gets() C. getchar() D. getc()(二) 填空题1 C语言数组元素的下标必须是正整数、0或者 整型表达式 。2 C语言数组元素的下标下限为 0 。3 C语言的数组名是一个 地址 常量,不能对其进行赋值运算和自加、减运算。4 以下程序输出结果是 4 。# include main() char s1 =12345,s2 =1234; printf(%dn,strlen(strcpy(s1,s2);5 以下程序执行结果是 123 。main()char str =1a2b3c; int i; for (i=0;stri!=0;i+)if(stri=0&stri=9) printf(%c,stri);printf(n); 6 以下程序执行结果是 11,1,0 。main( ) int i,j,i1=0,j1=0,m; static int s33=101,201,301,11,18,30,60,20,70; m=s00; for (i=0;i3;i+)for (j=0;j3;j+) if(sijm)m=sij; i1=i; j1=j; printf(%d,%d,%dn,m,i1,j1);7 以下程序执行结果是 9,7 。main( ) int a45=1,2,4,-4,-4,5,-9,3; int b,i,j,i1,j1,n; n=-9;b=0; for (i=0;i4;i+)for (j=0;j5;j+) if(aij=n)i1=i;j1=j;b=1;break; if (b)break; printf(%d,%dn,n,i1*5+j1+1);8 以下程序执行结果是 s=45 。int f(int b3,int n,int m) int i,j,s; s=0; for (i=0;in;i+)for (j=0;jm;j+) s=s+bij; return(s);main( )int a3=1,2,3,4,5,6,7,8,9,n=3,m=3,s; s=f(a,n,m); printf(s=%dn,s);9 以下程序输入数据如下:C+BASICQUICKAdaPascal执行结果是 QUICK 。# include main( ) int i; char s10,st10; gets(st); for (i=0;i4;i+)gets(s); if(strcmp(st,s)0) strcpy(st,s); printf(%sn,st); (三) 程序填空题1 请在横线上填入合适的表达式,使数组元素按大小顺序排列。main()int a12=2,14,16,20,9,21,86,75,17,30,11,99,i,j,k; for (k=0;k12;k+) for (i=k;iak) j=ai; ai=ak; ak=j; for (i=0;i=0;j-) printf(%c,strj);void main( )pt(Hello);五、 函数(一) 选择题1 以下函数调用语句中有( )个实参。 func(a1,a2,a3),(a4,a5);A. 2 B. 5 C. 1 D. 不合法2 C语言中规定函数的返回值的类型是由( )。A. return语句中的表达式类型所决定B. 调用该函数时的主调用函数类型所决定C. 调用该函数时系统临时决定D. 在定义该函数时所指定的函数类型所决定3 对于C语言的函数,下列叙述中正确的是( )。A. 函数的定义不能嵌套,但函数的调用可以嵌套B. 函数的定义可以嵌套,但函数调用不能嵌套C. 函数的定义和调用都不能嵌套D. 函数的定义和调用都可以嵌套4 有如下函数定义: func(a) printf(%d,a); 则该函数的返回类型是( )。A. 与参数a的类型相同 B. void C. 没有返回值 D. 无法确定5 以下程序的输出结果是( )。int func(int a,int b) static int m=0,i=2; i+=m+1; m=i+a+b; return(m); main( ) int k=4,m=1,p; p=func(k,m); printf(%d,p); p=func(k,m); printf(%dn,p);A. 8,17 B. 8,16 C. 8,20 D. 8,86 以下程序的输出结果是( )。 int func(int a) int b=0; static c=3; b+;c+; return(a+b+c); main() int a=2,i; for(i=0;i3;i+) printf(%d,func(a); A. 777 B. 777 C. 789 D. 7897 以下程序输出结果是( )。 int i=10; int fun( ) int k=0; k=k+i; i=i+10; return(k); main( ) int j=1; j=fun( ); printf(%d,j); j=fun( ); printf(%d,j); A. 0,0 B. 10,20 C. 10,10 D. 20,208 以下程序输出结果是( )。 int i=10; main( ) int a=3,b=2,c=1; c-=+b; b*=a+c; int b=5,c=12; c/=b*2; a-=c; printf(%d,%d,%d,a,b,c); a+=-c; printf(%d,%d,%dn,a,b,c); A. 3,2,1,3,2,-2 B. 2,5,1,3,5,12 C. 2,5,1,2,3,-2 D. 3,2,1,3,5,129 以下程序的输出结果是( )。 int func(int m) int n; if(m=0|m=1)return(3); n=m-func(m-2); return n; main() printf(%dn,func(9); A. 7 B. 2 C. 0 D. 3(二) 填空题1 以下程序的执行结果是 x=3 。int x=3;void func(int x) x=8; main()func(x);printf(x=%dn,x); 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5 2 下列程序运行后的输出结果是 6 6 6 6 6 6 。main()int i,z,k; for(i=1;i7;i+) for(z=1;z21-2*i;z+) printf( ); for(k=1;ki+1;k+) printf(%4d,i); printf(n); * * * * * * * * *3 下列程序运行后输出结果是 * * * * * * * * * * * * * * * * main() int i,z,k; for(i=1;i5;i+) for(z=1;z21-3*i;z+)printf( ); for(k=1;k0;i-) for(z=1;z21-3*i;z+)printf( ); for(k=1;k2*i;k+)printf(%3s,*); printf(n); 4 以下程序的执行结果是 x=20 。 main() void func(int x); int x=20; func(x); printf(x=%dn,x); void func(int x) x=30; 5 以下程序执行结果是 a=10,b=3 。 void main() void swap(); extern int a,b; a=3; b=10; swap(); printf(a=%d,b=%d,a,b); int a,b; void swap() int temp; temp=a;a=b;b=temp;6 以下程序的执行结果是 s=10 。 void main() int s,i,sum(int z); for(i=1;i11;i+)s=sum(i);printf(s=%dn,s); int sum(int z) int x=0; return(x+=z); 7 将上题函数sum中x变量存储类型定义为static型,即static int x=0;程序的执行结果是 s=55 。8 以下程序的执行结果是 1.x=3 。 2.x=6 3.x=1 4.x=3 static int x=5; void main( ) auto int x=3; void f1( ); void f2( ); printf(1.x=%dn,x); f1( ); f2( ); printf(4.x=%dn,x); void f1( ) x+=1; printf(2.x=%dn,x); void f2( ) int x=1; printf(3.x=%dn,x); (三) 程序填空题1 下列程序的功能是统计从键盘上输入的字符中大写字母的个数。输入时用“*”作为输入结束标记。请为程序填空。 # include main() char cl; int count=0; while( cl=getchar() )!=*) if(isupper(cl) count+; printf(共有%d大写字母 ,count); 2 完成下面的程序,使它能够输出101000之间的所有素数。(只有能被本身及1除尽的数,称为素数)# include main( ) int i; int isprime(int n); for (i=10;i=1000; i+)if(isprime(i) printf(%d,i); printf(n); # include int isprime(int n) int i; for(i=2;i=sqrt(n);i+)if(n%i=0)return( 0 ); return( 1 ); 六、 指针(一) 选择题1 设int *p,i;以下正确合理的语句是( )。A. *p=10; B. i=p; C. i=*p; D. i=2*p+1;2 设char s10; int i; 以下引用数组s中元素正确的表达式是( )。A. s(i+2); B. *(s+i) C. *(&s+i) D. *(s+)+i)3 若有定义和语句int *pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf(“%d,%dn”,*p,*pp);则输出结果是( )。A. a=10,20 B. 10,10 C. 20,10 D. 20,204 若定义char s20=“programming”,*ps=s;则不能代表字符o的表达式是( )。A. ps+2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论