C语言程序设计试题及答案全解.doc_第1页
C语言程序设计试题及答案全解.doc_第2页
C语言程序设计试题及答案全解.doc_第3页
C语言程序设计试题及答案全解.doc_第4页
C语言程序设计试题及答案全解.doc_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

C C 语言程序设计试题语言程序设计试题 第第 1 1、2 2、3 3 章章 概述、类型、表达式概述、类型、表达式 一、选择题一、选择题 1、一个 C 程序由若干个 C 函数组成,各个函数在文件中的位置顺序为:( ) A、任意 B、第一个函数必须是主函数,其他函数任意 C、必须完全按照执行的顺序排列 D、其他函数可以任意,主函数必须在最后 2、下列四个叙述中,正确的是:( ) A、C 程序中的所有字母都必须小写 B、C 程序中的关键字必须小写,其他标示符不区分大小写 C、C 程序中的所有字母都不区分大小写 D、C 语言中的所有关键字必须小写 3、下列四个叙述中,错误的是:( ) A、一个 C 源程序必须有且只能有一个主函数 B、一个 C 源程序可以有多个函数 C、在 C 源程序中注释说明必须位于语句之后 D、C 源程序的基本结构是函数 4、下面不是 C 语言合法标识符的是:( ) A、abc B、5n C、_4m D、x3 5、以下叙述不正确的是:( ) A. 分号是 C 语句的必要组成部分 B. C 程序的注释可以写在语句的后面 C. 函数是 C 程序的基本单位 D. 主函数的名字不一定非用 main 来表示 6、 C 语言中允许的基本数据类型包括:( ) A. 整型、实型、逻辑型 B. 整型、实型、字符型 C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型、字符型 7、 C 语言中能用八进制表示的数据类型为:( ) A、字符型、整型 B、整形、实型 C、字符型、实型、双精度型 D、字符型、整型、实型、双精度型 8、 下列属于 C 语言合法的字符常数是:( ) A、 97 B、 ”A” C、 t D、 ”0” 9、 在 C 语言(VC 环境)中,5 种基本数据类型的存储空间长度的排列顺序为:( ) A、charint=long int =floatdouble B、char=intlong int =floatdouble C、charintlong int=float=double D、char=int=long int =floatdouble 10、在 C 语言中(VC 环境) ,一定是长整型常数的是:( ) A、0L B、4962710 C、0412765 D、0 xa34b7fe 11、若有以下定义语句 char c1=b, c2=e; printf(“%d,%cn”,c2-c1,c2- a+A);则输出结果是:( ) A、2,M B、3,E C、2,E D、输出项与相应的格式控制不一致,输出结果 不确定 12、以下合法的赋值语句是:( ) A、x=y=100 B、d-; C、x + y D、c = int(a+b); 13、设变量 t 为 int 型,下列选项中不正确的赋值语句是:( ) A、+t; B、n1=(n2=(n3=0); C、k=i=m; D、a=b+c=1; 14、在以下一组运算符中,优先级最高的是:( ) A、=10 or a=10 | a=10 后,t 的值为 0 29. ( )若 a 和 b 类型相同,在计算了赋值表达式 a=b 后 b 中的值将放入 a 中,而 b 中的值不 变 30. ( )在 C 程序中,%是只能用于整数运算的运算符 31. ( )在 C 语言中,逻辑“真”等价于不等于 0 的数 32. ( )C 语言中字符型、整型、实型都能用八进制表示 33. ( )在 VC 语言中,5 种基本数据类型的存储空间长度的排列顺序为:charintlong int float5) printf(%d,x) else printf(%dn,x-); A) 7 和 5 B) 6 和 3 C) 7 和 4 D) 6 和 4 18、若执行下面的程序从键盘输入 3 和 4,则输出是:( ) main() int a,b,s; scanf(%d%d, s=a; if (ac) printf(%dn, d); else if ( (c-1 = d) =1) printf(%dn, d+1); else printf(%dn, d+2); 执行后输出结果是:( ) A)2 B)3 C)4 D)编译时有错,无结果 4. 有以下程序 main() int i=0,s=0; do if (i%2) i+; continue; i+; s += i; while( ib?(ac?a:c):(b); A) 5 B) 4 C) 6 D) 不确定 6. 以下程序中,while 循环的循环次数是:( ) main() int i=0; while(i10) if(i1) continue; if(i=5) break; i+; A) 1 B) 10 C) 6 D) 死循环,不能确定次数 7. 以下程序的输出结果是:( ) main( ) int a=0,i; for(i=1;i5;i+) switch(i) case 0: case 3: a+=2; case 1: case 2: a+=3; default: a+=5; printf(%dn,a); A) 31 B) 13 C) 10 D) 20 8. 以下程序的输出结果是:( ) main() int a=4,b=5,c=0,d; d=!a printf(%dn,d); A) 1 B) 0 C) 非 0 的数 D) -1 9. 以下程序的输出结果是:( ) #include main() int i=0,a=0; while(i20) for( ; ; ) if(i%10)=0) break; else i-; i+=11; a+=i; printh(%dn,a); A) 21 B) 32 C) 33 D) 11 10.阅读以下程序:( ) main() int x; scanf(%d, if(x-5) printf(%dx); else printf(%dx+); 程序运行后,如果从键盘上输人 5,则输出结果是:( ) A)3 B) 4 C) 5 D) 6 11.假定 w、x、y、z、m 均为 int 型变量,有如下程序段: w=1; x=2; y=3; z=4; m=(wx)?w : x; m=(my)?m : y; m=(mz)?m: z; 则该程序运行后,m 的值是:( ) A) 4 B) 3 C) 2 D) 1 12.以下程序的输出结果是:( ) main() int a, b; for(a=1, b=1; a=10) break; if (b%3=1) b+=3; continue; printf(%dn,a); A) 101 B) 6 C) 5 D) 4 13.若执行以下程序时从键盘上输入 9,则输出结果是:( ) main() int n; scanf (%d, if(n+10) printf (%dn,n); else printf(%dn,n-); A) 11 B) 10 C) 9 D) 8 14.有以下程序段 int k=0 while(k=1) k+; 则 while 循环执行的次数是:( ) A) 无限次 B) 有语法错,不能执行 C) 一次也不执行 D) 执行 1 次 15.以下程序执行后 sum 的值是:( ) main() int i , sum; for(i=1;i6;i+) sum+=i; printf(%dn,sum); A)15 B)14 C) 不确定 D)0 16.有以下程序段 int x=3 do printf (%d,x -=2); while (!(-x); 其输出结果是:( ) A) 1 B) 3 0 C) 1 -2 D) 死循环 17.若变量 c 为 char 类型,能正确判断出 c 为小写字母的表达式是:( ) A) a=c= a)|(c= a) char ch ; while (ch=getchar()!=#) switch (ch ) case a: case h: default:v1+; case 0:v2+; printf(“%d,%dn” ,v1,v2); A) 2,0 B)5,0 C) 5,5 D)2,5 24.设有如下定义: int a=1,b=2,c=3,d=4,m=2,n=2; 则执行表达式:(m=ab) for (i=0;i2;i+) x+; for(j=0;j3;j+) if (j%2) continue; x+; x+; printf(“x=%dn” ,x); A)x=4 B)x=8 C)x=6 D)x=12 26.设 x 和 y 均为 int 型变量,则执行以下的循环后,y 值为:( ) for(y=1,x=1;y5 ? 8 :9 )后,变量 k 的值为:( ) A. 9 B. 8 C. 15 D. 1 32.以下程序运行后,如果从键盘上输人 5,则输出结果是:( ) main( ) int x; scanf(%d, for(k=2;k6;k+,k+) s=1; for (j=k;j6;j+) s+=j; printf(“%dn”,s); A)9 B)1 C)11 D)10 34.以下程序段的输出是:( ) int i,j,m=0; for (i=1;i=15;i+=4) for (j=3;j=19;j+=4) m+; printf(“%dn”,m); A)12 B)15 C)20 D)25 35.以下程序段的输出结果是:( ) int i, sum; for(i=1;i6;i+) sum+=sum; printf(“%dn”,sum); A)15 B)14 C)不确定 D)0 36.下面程序的输出是:( D ) main() int x=3,y=6,a=0; while (x+!=(y-=1) a+; if (y7) n-; printf(%3d,n); A) 10 9 8 B) 9 8 7 C) 10 9 8 7 D) 9 8 7 6 38.以下程序段的输出结果是:( ) int x=3; do printf(%3d,x-=2; while (!(-x); A) 1 B) 3 0 C) 1 -2 D) 死循环 39.执行下面的程序后,a 的值为:( ) main() int a,b; for (a=1,b=1;a=20) break; if (b%3=1) b+=3; continue; b-=5; A) 7 B) 8 C) 9 D) 10 40.读程序: main() int num=0; while (num=2) num+; printf(%3d,num); 上面程序的输出结果是:( ) A) 1 B) 2 2 C) 1 2 3 D) 1 2 3 4 41.以下循环体的执行次数是:( ) main() int i,j; for(i=0,j=1;i=j+1;i+=2,j-) printf(%d n,i); A) 3 B) 2 C) 1 D) 0 42.在 C 语言的循环语句 for,while,do-while 语句中,用于直接中断最内层循环的语句是: ( ) A) switch B) continue C) break D) if 二、判断题:二、判断题: 1. ( )用 1 作 while 循环的判断条件,则循环一次也不执行。 2. ( )for 循环表达式的括号内的 3 个表达式均不可以省略。 3. ( )语句 while(!E);中的条件!E 等价于 E=0。 4. ( )语句 while(E);中的条件 E 等价于 E!=0。 5. ( )若有 for( ; ; ),是指循环体执行 0 次。 6. ( )程序有死循环的时候,上机编译不能通过。 7. ( )强制终止死循环可以使用 CTRL+BREAK 组合键。 8. ( )执行 for(I=0;I=0) m=a; Dif (a=b;)=0) m=a; 3、 如果不加花括号表示 else 与 if 的配对关系,则 else 与 if 的匹配方法,不正确的是 Aelse 与它上面最远的 if 配对 Belse 与它上面最近的 if 配对 Celse 与离它最近的 if 配对 D.else 与它上面最近的且没有和其他 else 配对的 if 配对 4、 关于条件运算符的叙述正确的是 A条件运算符的优先级别比关系运算符和算术运算符都低 B条件运算符是 C 语言中惟一的一个三目运算符 C条件运算符的结合方向是“自右至左” D条件运算符可以替代任何 if 语句的功能 5、 关于 switch 语句叙述正确的是 A语句中,case 的冒号后面允许没有语句。 Bswitch 语句中,每一个 case 的冒号后面都允许跟有多条语句。 C在与 switch 语句配套的 case 语句中所使用的表达式可以是变量或 常量 Dswitch 语句中,可以没有 default 语句。 6、 在计数循环 for(表达式 1;表达式 2;表达式 3)中,可以省略的表达式是:( ) A表达式 1 B表达式 2 C表达式 3 D三个表达式都可以 E一个都不能少 7、 下列语句段是死循环的是( ) An=100; Bs=33; while(n) n=n%100+1; while(s+%2+s%2) s+; Cfor(;); Dfor(i=1;) if(-i)break; Ex=0; do x+; while(x=0); 第第 7 7 章章 数组数组 一、选择题一、选择题 1、若有以下说明语句: int a12=1,2,3,4,5,6,7,8,9,10,11,12; char c=a,d,g; 则数值为 4 的表达式是:( ) 。 A、ag-c B、a4 C、ad-c D、ad-c 2、假设 int 型变量占两个字节的存储单元,若有定义: int x10=0,2,4; 则数组 x 在内存中所占字节数为:( ) A、3 B、6 C、10 D、20 3、下列合法的数组定义是:( ) A、int a=”string”; B、int a5=0,1,2,3,4,5; C、char a=”string”; D、char a=0,1,2,3,4,5; 4、若给出以下定义: char x=”abcdefg”; char y=a,b,c,d,e,f,g; 则正确的叙述为:( ) A、数组 x 和数组 y 等价 B、数组 x 和数组 y 的长度相同 C、数组 x 的长度大于数组 y 的长度 D、数组 y 的长度大于数组 x 的长度 5、下面程序段的输出结果是:( ) int j; int x33=1,2,3,4,5,6,7,8,9; for (j=0;j3;j+) printf(“%d”,xj2-j); A、1 5 9 B、1 4 7 C、3 5 7 D、3 6 9 6、下列程序运行后的输出结果是:( ) main() int n3,t,j,k; for(t=0;t3;t+) nt=0; k=2; for(t=0;tk;t+) for(j=0;j3;j+) nj=nt+1; printf(“%dn”,n1); A、 2 B、 1 C、 0 D、3 7、有以下程序 main() int p7=11,13,14,15,16,17,18, i=0,k=0; while(i7 i+; printf(%dn, k); 执行后输出结果是:( ) A、58 B、56 C、45 D、24 8、以下能正确定义数组并正确赋初值的语句是:( ) A、int N=5,bNN; B、int a12=1,3; C、int c2= 1,2,3,4; D、int d32=1,2,3,4; 9、有以下程序 main() int m3=1,4,7,2,5,8,3,6,9; int i,j,k=2; for(i=0; i3; i+) printf(%d ,mki); 执行后输出结果是:( C ) A、4 5 6 B、2 5 8 C、3 6 9 D、7 8 9 10、以下能正确定义一维数组的选项是:( ) A、int num; B、int num0.100; C) #define N 100 D) int N=100; int numN; int numN; 11、下列选项中正确的语句组是:( ) A、char s8; s=Beijing; B、char *s; s=Beijing; C、char s8; s=Beijing; D、char *s; s=Beijing; 12、有以下程序段 int a10=1,2,3,4,5,6,7,8,9,10,*p= b=p5; b 中的值是:( ) A、5 B、6 C、8 D、9 13、有以下程序 main( ) char a=abcdefg,b10=abcdefg; printf(%d %dn,sizeof(a),sizeof(b); 执行后输出结果是:( ) A、7 7 B、8 8 C、8 10 D、10 10 14、有以下程序的输出结果是:( ) void swap1(int c) int t; t=c0;c0=c1;c1=t; void swap2(int c0,int c1) int t; t=c0;c0=c1;c1=t; main( ) int a2=3,5,b2=3,5; swap(a); swap2(b0,b1); printf(%d %d %d %dn,a0,a1,b0,b1); A、5 3 5 3 B、 5 3 3 5 C、3 5 3 5 D、3 5 5 3 15、有以下程序 int f(int b4) int i,j,s=0; for(j=0;j2) i=3-j; s+=bij; return s; main( ) int a44=1,2,3,4,0,2,4,5,3,6,9,12,3,2,1,0; printf(%dn,f(a); 执行后的输出结果是:( ) A、12 B、11 C、18 D、16 16、有以下程序 void sort(int a,int n) in t i,j,t; for(i=0;in-1;i+=2) for(j=i+2;jn;j+=2) if(aiaj) t=ai;ai=aj;aj=t; main() int aa10=1,2,3,4,5,6,7,8,9,10,i; sort(aa,10); for(i=0;i10;i+) printf(%d,aai); printf(n); 其输出结果是:( ) A、1,2,3,4,5,6,7,8,9,10, B、10,9,8,7,6,5,4,3,2,1, C、9,2,7,4,5,6,3,8,1,10, D、1,10,3,8,5,6,7,4,9,2, 17、有以下程序 void f(int a,int i,int j) int t; if(ij) t=ai; ai=aj;aj=t; f(a,i+1,j-1); main( ) int i,aa5=1,2,3,4,5; f(aa,0,4); for(i=0;i5;i+) printf(%d,aai); printf(n); 执行后输出结果是:( ) A、5,4,3,2,1, B、5,2,3,4,1, C、1,2,3,4,5, D、1,2,3,4,5, 18、 以下程序的输出结果是:( ) main() char cf35=AAAA,BBB,CC; printf(%sn,ch1); A、AAAA B、 BBB C、 BBBCC D、 CC 19、 以下程序的输出结果是:( ) main() int b33=0,1,2,0,1,2,0,1,2,i,j,t=1; for(i=0;i3;i+) for(j=i;j=i;j+) t=t+bibjj; printf(%dn,t); A、 3 B、 4 C、 1 D、 9 20、有以下程序 main() int aa44=1,2,3,4,5,6,7,8,3,9,10,2,4,2,9,6; int i,s=0; for(i=0;i=0j+=2) s=10*s+chj-0; printf(“%dn”,s); A、12ba56 B、66521 C、6 D、62 26、设已定义 char s=”NameAddress”n”;,则字符串 s 所占的字节数是:( ) A、19 B、18 C、15 D、14 27、设已定义 char c8=”Tianjin”和 int j,则下面的输出函数调用中错误的是:( ) A、printf(“%s”,c); B、for(j=0;j8;j+) printf(“%c”,cj); C、puts(c); D、for(j=0;j8;j+) puts(cj); 28、设已定义 char a10和 int j,则下面输入函数调用中错误的是:( ) A、scanf(“%s”,a); B、for(j=0;j9;j+) scanf(“%c”,aj); C、gets(a); D、for(j=0;j9;j+) scanf(“%c”, 29、设已定义 char x8和 int j,为了给该数组赋值,下面语句中正确的是:( ) A、x8=”Turbo C”; B、x=” Turbo C”; C、x=”Turbo C”; D、for(j=0;j0)Dif(strcmp(s1,s2)0) 44. 若有说明:int a4=0,0;,则下面不正确的叙述是:( ) 。 A数组 a 的每个元素都可得到初值 0 B二维数组 a 的第一维大小为 1 C因为二维数组 a 中初值的个数不能被第二维大小的值整除,则第一维的大小等于 所得商数再加 1,故数组 a 的行数为 1 D只有元素 a00和 a01可得到初值 0,其余元素均得不到初值 45. 下列语句中,不正确的是:( ) 。 Achar str5=hello; Bchar str=h,e,l,l,o,0; Cchar str5=hi; Dchar str100=; 46. 下面错误的初始化语句是:( ) 。 Achar str=hello; Bchar str100=hello; Cchar str=h,e,l,l,o; Dchar str=hello; 47. 定义了一维 int 型数组 a10后,下面错误的引用是:( ) 。 Aa0=1; Ba10=2; Ca0=5*2; Da1=a2*a0; 48. 下面的二维数组初始化语句中,错误的是:( ) 。 Afloat b22=0.1,0.2,0.3,0.4; Bint a2=1,2,3,4; Cint a2= 1,2,3,4; Dfloat a22=0; 49. 引用数组元素时,数组下标可以是:( ) 。 A整型常量B整型变量C整型表达式D以上均可 50. 定义了 int 型二维数组 a67后,数组元素 a34前的数组元素个数为:( ) 。 A24B25C18D17 51. strlen(A0B0C)的结果为:( ) 。 A0B1C2D3 52. 下面程序的运行结果是:( ) 。 main() int a3=1,2,3,4,5,6; printf(%d,a11); A3B4C5D6 53. 下面程序的运行结果是:( ) 。 main() char s120=Good!; char s215=AB; printf(%d,strlen(strcpy(s1,s2); A20B15C5D2 54. 下面程序的运行结果是:( ) 。 main() char s120=ABCDEF; int i=0; while(s1i+!=0) printf(%c, s1i+); AABCDEF BBDF CABCDEDBCDE 55. 下面程序的运行结果是:( ) 。 main() int n2=0,i,j,k=2; for(i=0;ik;i+) for(j=0;jk;j+) nj=ni+1; printf(%dn,nk); A不确定的值B3C2D1 56. 下面程序的运行结果是:( ) 。 main() int x=22,33,44,55,66,77,88; int k,y=0; for (k=1;k=4;k+) if (xk%2=1) y+; printf(%d,y); A0B1C2D3 57. 下面程序的运行结果是:( ) 。 main() int a33=1,2,3,4,5,6,i,j,s=0; for(i=1;i3;i+) for(j=0;j=0 i+; AabBab1c2d4eCabcdeDa 60. 下面程序的运行结果是:( ) 。 main() int i=0,n=0; char s10=298h01; for(i=0;si!=0;i+) if(si=0) n=n*10+(si-0); else break; printf(%dn,n); A298h01B29801C01D298 二、判断题:二、判断题: 1. ( )在程序中可以对数值数组中的数据进行整体使用。 2. ( )如果 strcmp(s1,s2)的返回值为一个负数,则表明字符串 s1 一定小于字符串 s2。 3. ( )字符数组的输出不能一次性的整体输出。 4. ( )用 scanf 函数输入的字符串不可以带空格。 5. ( )用 gets 函数输入的字符串可以带空格。 6. ( )实现两个字符串的复制可以使用 str1=str2;语句。 7. ( )使用 strcpy 函数可以实现两个字符串的复制。 8. ( )使用 strcat 函数可以实现两个字符串的连接。 9. ( )使用 strlen 函数可以求出一个字符串的实际长度(包含0字符) 。 10. ( )如有定义 char a=”student”;则数组 a 的长度为 7。 11. ( )如有定义 char a20;则可以通过 a=“I am a boy”;给 a 赋值。 12. ( )如有定义 int a23;则数组 a 的最后一个元素为 a12。 13. ( )如有定义 int a340; 则数组 a 的所有元素初值均为 0。 14. ( )C 语言中数组名实质上是数组的首地址,是一个变量地址,可对其进行赋值。 15. ( )构成数组的各个元素可以有不同的数据类型。 16. ( )若有说明:int a10;,则可以 a10引用数组 a 的第 10 个

温馨提示

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

评论

0/150

提交评论