(中职)C语言程序设计练习题及答案2套.docx
C语言程序设计练习题及答案2套#include <stdio.h>void main() int a,b,s;scanf("%d,%d",&a,&b);s=a;if (s<b) s=b;s=s*s;printf("%dn's);IA) 14 B)16 C)18 D)2056、以下程序的执行结果是 D.#include <stdio.h>void main() int x=0.y=l,z=0;if (x=z=y)x=3;printf("%d,%dn",x,z);1A) 3,0B)0,0C) 0,1D)3,l57、假定等级和分数有以下对应关系:等级:A分数:85100等级:B分数:6084等级:C分数:60以下对于等级grade输出相应的分数区间,能够完成该功能的程序段是DA) switch (grade)(case ,A':printf(,85-100nH);case 'B':printf("60-84n");case 'C':printf("60 以下n"); defiault:printf("等级错误!n");)switch (grade)(case 'A':prinlf(”85-100n");break;case 'B':pnnlf("60-84n");case 'C':primf(”60 以下n”);default:printf("等级错误!n");1switch (grade)case 'A':printf("85-100nH);break;case 'B':printf("60"84n");break;case 'C':prinlf("60 以下n");default:printf("等级错误!n");D) switch (grade)case 'A':prinlf("85-1 OOn");break;case 'B':printf("60-84n");brcak;case 'C':pnnlf("60 以下 n");break;dcfault:printf("等级错误!n");58、能够完成如下函数计算的程序段是_B.r -1x<0y= H 0x=0x>0L 1A)y=l;if(x!=O)if(x>0) y=l;else y=0;C) y=0;if(x>=0) if (x>0) y=l;B)if(x>=0) if(x>0) y=l; else y=0: else y=-l;D)y=-1; if(x>0) y=l; else y=0;else y=-l;59、有如下程序#inciude <stdio.h>void main() float x=5.0,y;if(x<0.0) y=0.0;else if (x< 10.0) y= 1.0/x;else y= 1.0;printf("%fn",y);)该程序的输出结果是CA) ().000000B) 0.50000C) 0.200000D) 1.000000 60、以下程序的执行结果是_B.#include <stdio.h>void main() int x=l,y=0;switch (x)case 1:switch (y)(case O:prin【f("firsi'n"):break:case 1 :printf(,secondn");break;)case 2:printf("thirdn");B) firstB) firstA) firstsecondthirdC) firstD) secondthird61、以下程序的执行结果是A.#include <stdio.h> void main() ini a,b,c,d,x; a=c=0; b=l; d=20;if (a) d=d-10; else if(!b)if (!c) x=l5;else x=25; printf("d=%dn",d); )A)d=20B)d=10 C)d=15 D) 2562、有如下程序:#include <stdio.h> void main() inta=2,b=-l,c=2; if(a<b)if (b<0) c=0;else C+; printf("%dn",c); )该程序的输出结果是_C.A)0B) 1C)2D)363、以下程序执行后的输出结果是B.#include <stdio.h> void main() int x,y=l,z;if(z=y)<0) x=4;else if (y=0) x=5;else x=6; printf("%d,%dn",x,y);IA) 4,1 B) 6,1 C) 5,0 D)出错信息64、有如下程序#include <stdio.h> void inain() int x=l,a=0,b=0; switch(x)case 0: b+;case 1: a+;case 2: a+;b+;)printf("a=%d,b=%dn",a,b);该程序的输出结果是 A.A) a=2,b= 1 B) a=l,b=l C) a=l,b=0 D) a=2,b=265、下面程序的输出结果是 C.#inckide <stdio.h>void main() int a=-l,b=l,k;if(+a<0) && (b-<=0)printf("%d %dn",a,b);elseprintfC'%d %dn",b,a);)A)-l 1B)0 1 C) 1 0D)0 066、假定w、x、y、z、m均为int型变量,有如下程序段: w=l;x=2;y=3;z=4;m=(w<x)?w:x; m=(m<y)?m:y; m=(m<z)?m:z;那么该程序段执行后,m的值是D.A) 4B)3C)2D) 167、以下程序的输出结果是_D.main() int a=100;if(a>100) printf("%dnH,a>100);else printf("%dn'a<=100);IA) a<=100 B) 100C)0D) 168、假设执行下面的程序从键盘上输入9,那么输出结果是.B#include <stdio.h>void main()int n;scanf("%d",&n);if (n+<10) printf("%dn",n);else printf("%dn",n-);A) 11 B) 10C)9D)869、以下程序输出结果是 D.#include <stdio.h>void main() int m=4;if (+m>5) printf("%dn",m-);else printf("%dn",-m);A) 7B)6C)5D)470、假设执行下面的程序从键盘上输入5,那么输出结果是.#inciude <stdio.h>void main()int x;scanf("%d",&x);if (x+>5) printf("%dn",x);else printf("%dn",x-);)A) 7B)6C)5D)471、以下程序段运行结果是一A.in( x= 1 ,y= 1 ,z=-1;x+=y+=z;printf("%dn",x<y?y:x);A) 1B)2C)4 D)不确定的值72、有以下程序#include <stdio.h>void tnain() int a,b,c=246;a=c/100%9;b=(-!)&&(-!);printf("%d,%dn",a,b);I输出结果是A.A) 2,1B)3,2C) 4,3 D) 2,-173、运行下面程序时,假设从键盘输入数据为“123”, 那么输出结果是_C.#includc "stdio.h"void main() int num,i,j,k,place;scanf("%d",&num);if (num>99)placc=3;else if(num>9)place=2;elseplace= 1;i=num/IOO;j=(num-i* 100)/10;k=(num-i* 100-j*10);switch (place) case 3: printf("%d%d%dn",kj,i);break;case 2: printf("%d%dn",kj);break;case 1: printf("%dn",k);I)A) 123B) 1,2,3 C) 321 D) 3,2,174、执行以下程序后的输出结果是一D.#include <stdio.h>void main() int k=4,a=3,b=2,c= 1;printf("%dn'k<a?k:c<b?c:a);IA) 4B)3C)2D) 175、以下条件表达式中能完全等价于条件表达式x的是 B_.A) (x=0)B) (x!=0)C) (x=l)D) (x!=l)76、假设运行下面程序时,给变量a输入15,那么输出结果是_A_.#include <stdio.h>void main() int a,b;scanf("%d",&a);b=a>15?a+10:a-10;printf("%dn,b);IA) 5B)25C) 15 D) 1077、运行下面程序后,输出是D.#include <stdio.h>void main() in( k=-3;if(k<=0) printf(H*n");else printf("#n")A)#B)*C)#*D)有语法错误不能通过编译78、执行下面程序的输出结果是C.#include <stdio.h>void main() int a=5,b=0,c=0;if(a=a+b) printf(n*n");else printf("#n");1A)有语法错误不能编译B)能通过编译,但不能通过连接C)输出* D)输出# 79、为了防止嵌套的if-clse语句的二义性,C语言规定else总是与C组成配对关系.A)缩排位置相同的ifB)在其之前未配对的ifC)在其之前尚未配对的最近的ifD)同一行上的if80、设x、y、z、t均为血型变量,那么执行以下语句后,t的值为C.x=y=z=l;t=+x | +y && +z;A)不定值 B)4 C) 1D)081、以下程序段 C.x=-l;do(x=x*x; while (!x);A)是死循环B)循环执行两次C)循环执行一次D)有语法错误82、对下面程序段描述正确的选项是一B.int x=0,s=0;while (!x!=0) s+=+x;printf("%d”,s);A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段循环无数次83、下面程序段的输出结果是C.x=3;do y=x;if (!y) printf("*");continue;printfC'#"); vhile(x=2);A)#B)#* C)死循环D)输出错误信息84、下面程序的运行结果是一B.#include<stdio.h>void main() int a= 1 ,b= 10;do b-=a;a+;)while(b<0);printf("%d,%dn",a,b);A) 3,11B)2,8 C) 1,-1D) 4,985、下面程序段的运行结果是一B.int n=0;while (n+<=2)printf("%d'n);A)012 B) 123 C) 234 D)错误信息86、下面程序段的运行结果是_D.int x=O,y=O;while (x<15) y+,x+=+y;printf("%d,%d",y,x);A) 20,7B)6,I2 C) 20,8D)8,2087、下面程序的运行结果是一B.#includc<stdio.h>void main() int s=0,i=l;while (s<= 10) s=s+i*i;i+;)printf("%d",-i);)A) 4B)3C)5D)688、函数pi的功能是根据以下近似公式求n值:C (7T*7t)/6= 1 + 1 /(2*2)+1 /(3 *3)+.+ 1 /(n*n)请填空,完成求n的功能。#includc <niath.h>void main() double s=0.0; int i,n; scanf("%ld",&n);for(i=l;i<=n;i+) s=s+;s=(sqrt(6*s); printf("s=%e",s);)A) l/i*i B) 1.0/i*i C) 1.0/(i*i) D) 1.0/(n*n)89、下面程序段的运行结果是一B.for(x=10;x>3;x-) if(x%3) x-;-x; -x;printf(n%d ",x);A) 6 3B)7 4C)6 2D)7 390、下面程序的运行结果是 D.#inc)ude<stdio.h> void main() int a,b; a=-l; b=0; do +a; +a; b+=a; while(a<9); printf(,'%dn',b);A) 34B)24C) 26 D) 2591、下面程序段的运行结果是 D.for(i=l;i<=5;) prinlf("%d",i); i+;A) 12345 B) 1234 C) 15 D)无限循环92、下面程序的输出结果是 B.#include<stdio.h> void main() in( n=4;while (n-) printf("%d ",n);IA) 2 0B)3 1C)3 2 1D)2 1 093、以下程序运行后的输出结果是_D.#includc<stdio.h> void main() int i=10J=0;doJ while(i>2); printf("%dnM,j);)A) 50B)52C)51D)894、以下函数的功能是:求x的y次方,请填空.一C #include<stdio.h>void main() int i,x,y; double z; scanf(u%d %d”,&x,&y); for(i=l,z=x;i<y;i+)z=z*; printf("xAy=%en",z);A) i+ B) x+C) x D) i95、有如下程序#include<stdio.h> void main() int x=23; do printf("%d",x-); while(!x);1该程序的执行结果是一BA)321B)23C)不输出任何内容D)陷入死循环96、以下程序段的执行结果是一C一.int i,j,m=0;for(i=l;i<=l5;i+=4) for(j=3;j<= 19;j+=4) m+;printf("%dn",m);A) 12 B) 15C) 20 D) 2597、下面程序的输出结果是 A.#include<stdio.h> void main() int i;for(i=l;i<6;i+) if (i%2!=0) printfC'icontinue;) prinlf("*");) printf("n");)A)#*#*#B)# C)* D) *#*#*98、下面程序的输出结果是一D.#include<stdio.h> void main() int x=10,y=10,i;for(i=0;x>8;y=+i) printf("%d %d)A) 10 1 92B)9876C) 10990D) 10 109 199、执行以下程序后,输出的结果是 D.#includc<stdio.h> void main() int y=10;1、下面程序的输出是D#include<stdio.h>void main() int k=l 1;printf(,'k=%d,k=%o,k=%xn'k,k,k);A) k=l l,k=12,k=l 1B) k=l l,k=13,k=l3C) k=ll,k=O 13,k=0xbD) k= ll,k=l3,k=b2、在以下选项中,不正确的赋值语句是_D.A)+t;B) nl=(n2=(n3=0);C) k=i=j;D) a=b+c= I;3、下面合法的C语言字符常量是 A.A) 'f B) "A"C) 65D)A4、表达式:10!=9的值是 D.A) true B)非零值 C) 0 D) 1 5、C语言提供的合法的数据类型关键字是 BA) Double B) short C) integer D) Char 6、字符(char)型数据在微机内存中的存储形式是_D_.A)反码 B)补码 C) EBCDIC 码 D) ASCII 码7、C语言程序的基本单位是 C.A)程序行 B)语句 C)函数 D)字符8、设int a=12,那么执行完语句a+=a-二a*a后,a的值是 DA)552 B) 264 C) 144 D) -264 9、执行下面程序中的输出语句后,输出结果是一B_.#include<stdio.h>void main()int a;printf("%dn",(a=3*5,a*4,a+5);A) 65B)20 C) 15D) 1010、下面程序的输出是 B.#include<stdio.h>void main()int x=O23;printf(',%dn",-x);1A) 17 B) 18 C) 23 D) 2411、下面程序的输出的是 C.#include<stdio.h>do y-;while (-y);printf("dn",y-);1A)-I B) I C)8D)0100、有如下程序#include<stdio.h>void main() ini n=9;while(n>6) n-;printf("%d",n);)该程序段的输曲结果是 B.A) 987B)876 C) 8765 D) 9876101、有如下程序#includc<stdio.h>void main() int i,sum=0;for(i= I ;i<=3;sum+) sum+=i;printf("%dn",sum);该程序的执行结果是 C.A) 6B)3 C)死循环 D)0102、以下循环体的执行次数是一D#include<stdio.h>void main() int ij;for(i=0,j=1; i<=j+1; i+=2, j-)printf("d1A) 3B)2C) 1D)0103、在执行以下程序时,如果从键盘上输入:ABCdcf回车,,那么输出为 B#include <stdio.h>void main() char ch;while (ch=gelchar( )!=n') if(ch>='A'&&ch<=,Z,)ch=ch+32;else if (ch>-a' && ch<'z') ch=ch-32;printf("%c",ch);)printf("n");1A) ABCdef B) abcDEF C) abc D) DEF104、下面程序的输出结果是一D.main()int i,k=O, a=0, b=0;fbr(i=l;i<=4;i+)k+;if (k%2=0) a=a+k; continue;b=b+k;a=a+k;printf("k=%d a=%d b=%dn",k,a,b);A) k=5 a= 10 b=4B) k=3 a=6 b=4C) k=4 a=10b=3D) k=4 a= 10 b=4105、执行下面程序段后,k的值是一D.int i,j,k;for(i=0j=10;i<j;i+j-)k=i+j;A) 9B) 11C)8D) 10 106、下面程序是计算n个数的平均值,请填空.B#include<stdio.h> void main() int i,n;float x,avg=0.0; scanf("%d'&n); for(i=0;i<n;i+) scanf("%f;&x); avg=avg+; avg=;printf("avg=%fn,avg);)A)iB)xC)xD)iavg/iavg/navg/x avg/n107、以下程序的功能是:从键盘上输入假设干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。 请填空。D#include<stdio.h> void main() float x.amax,amin;scanf("%r,&x);amax=x;amin=x;while () if (x>amax) amax=x;if () amin=x; scanf("%f',&x);printf("namax=%iAnamin=%in",aniax,amin);A)x<=0 B)x>0 C)x>0 D)x>=0 x>amin x<=amin x>amin x<amin108、阅读以下程序,程序运行后的输出结果是_B.#include<stdio.h>void main() int x;fbr(x=5;x>0;x-)if(x-<5) prin"("d,”,x); else printf("%d.",x+); A) 4,3,2B)4,3,l, C) 5,4,2 D) 5,3,1,109、以下程序段的输出结果是C.int k,n,m;n=10;m=1;k=l;while (k<=n) m*=2;k+=4; prinlf("%dn”,m);A) 4B) 16C)8D)32 110、下面程序的输出结果是_B.#include<stdio.h>void main()int y=9;for(;y>0;y-)if(y%3=0) prinlf("%d”,-y); continue;)A) 741B)852 C) 963 D) 875421 111、下面程序的输出结果是一B.#include<stdio.h>void main()int x=3;do printf(n%d H,x-=2);while(!(-x);)A) 1 B) 1 -2C)3 0 D)是死循环H2、定义如下变量:int n=10;那么以下循环的输出结果是_B.while(n>7) n-; printf("%dnM,n);)A) 10B)9C) 10D)99898H3、语句while(!e);中的条件!e等价于A,A) e=0 B)e!=l C) e!=0 D) -e 114、以下表达正确的选项是 B.A)continue语句的作用是结束整个循环的执行B)只能在循环体内和switch语句体内使用break语句C)在循环体内使用break语句或continue语句的作用相同D)从多层循环嵌套中退出时,只能使用got。语句115、在以下选项中,没有构成死循环的程序段是_D_.A) int i=100;B) for(;);while (1) i=i%100+l;if (i>100) break;IC) int k=1000:D) int s=36;do +k;) while (k>= 1000); while (s) -s;116、下面程序的输出结果是 A.#include<stdio.h>void main() int i;for(i=l;i<=5;i+) if(i%2) primf("字”);else continue;printf("#");) printf("$n"); A) *#*#*#S B) #*#*#*$ C) #*#*$ D) *#*#$ 117,下面程序段中,循环体的执行次数是C.int a= 10,b=0;do b+=2;a-=2+b; while(a>=0);A) 4B)5C)3D)2118、假设i为整型变量,那么以下循环语句的循环次数是_B_.for(i=2;i=0;)printf("%d",i-);A)无限次 B) 0次 C) 1次 D) 2次119、C语言中while do-while循环的主要区别是._A_do-while的循环体至少无条件执行一次A) while的循环控制条件比do-while的循环控制条件严格do-while允许从外部转到循环体内B) do-whilc的循环体不能是复合语句120、对于for(表达式1;表达式3)可理解为 BA) for(表达式1;0;表达式3)for(表达式1;1;表达式3)B) for(表达式1;表达式1;表达式3)for(表达式1;表达式3;表达式3)121、合法的数组定义是_D.A) int a6="string"B) int a5=0,1,2,3,4,5(;C) char a= "string"); D) char a =0,123,4,5;122、要求下面的程序运行后,显示如下结果:21046152324785132那么程序中的划线处应填入一B.#include <stdio.h>void main() inta4Jl4J=;int i,j;for(i=0;i<4;i+)for(j=0;j<4;j+) printf("%4d",aij); printf("n"); A) 1,5,2,3,2,4,7,8,5,3,2B)2,10,4,6, 1,5,2,3,2,4,7,8 (,5,1,3,25,1,3,2,2,4,7,8,1,5,2,3)C) 2,1,2,5,10,5,4,1,4,2,7,3,6,3,8,2123、给出以下定义:char x ="abcdefg"chary那么正确的表达为一C.A)数组x和数组y等价B)数组x和数组y的长度相同C)数组x的长度大于数组y的长度D)数组x的长度小于数组y的长度124、定义如下变量和数组:int i;int X44= 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16);那么下面语句的输出结果是_C.for(i=0;i<4;i+) printf(”3d”,x3-iD;A) I 5 9 13B) 1 6 11 16C)4 7 10 13D)4 8 12 16125、下面程序输出的结果是D一.#include <stdio.h>void main() int i,j,x=O;static int a6= 1,2,3,4,5,6);for(i=0,j=l ;i<5;+i j+) x+=ai*aj;printf(H%dn'x);)A)数组a中首尾的对应元素的乘积B)数组a中首尾的对应元素的乘积之和C)数组a中相邻各元素的乘积D)数组a中相邻各元素的乘积之和126、假设希望下面的程序运行后输出45,程序空白处的正确选择是_C.#include <stdio.h>void niain() inti,j=10,al = 1,3,5,7,9,11,13,15;for()j+=ai;printf(,%dn"j);IA) i=5;i>l;i- B) i=0;i<7;+iC) i=5;i>=l;-i D) i=2;i<6;+i127、假设有以下说明:char si ="tree"),s2="flower",那么以下对数组元素或数组的输出语句中,正确的选项是_C_.A) printf("%s%s",sl5,s27j);B)printf("%c%c",sl,s2);C) puts(s l);puts(s2); D) puts(s l,s2);128、以下一维数组初始化语句中,正确且与语句float a=0,3,8,0,9;等价的是 DA) float a6=0,3,8,0,9; B) float a4=0,3,8,0,9;C) float a7=0,3,8,0,9; D) float a5=0,3,8,0,9;129、运行下面程序段的输出结果是_A.char sl10='S',e,t,0','u';p,;0,;printf("%s",sl);Set B) Setup C) Set up D)130、以下程序段的输出结果是一B char s ="an apple"printf("%dn'strlen(s);D) 10D) 10A) 7B) 8C)9131、假设有说明:char那么下述说法中正确的选项是D.A)c不可引用B)c可引用,但值不确定C) c4不可引用C) c4不可引用D)c4可引用,其值为空字符132、以下初始化语句中,正确且与语句char c ="slring"等价的是 C.A) char c132、以下初始化语句中,正确且与语句char c ="slring"等价的是 C.A) char cchar c 1-string1;C) char c7=,s'X'r;'f;nVgr0,);D) char c7=,string';133、假设有说明char那么对元素的非法引用是 C.A)cO B) c9-6 C) c4*21 D) c2*3134、如有说明:charsl5,s2r7;,要给数组si和s2整体赋值,以下语句中正确的选项是CA) sl=getchar(); s2=getchar();B)scanf("%s%s",sl,s2);C) scanf("%c%c'sl,s2);D) gets(s 1 ,s2);135、以下一组初始化语句中,正确的选项是B.A) int a8= ;B) int a9=05.0,4,8;int a5= 95,7,4,0,2;D) int a=7*6;136、以下程序输出的结果是一D.#include <stdio.h>void main() char strl J="la2b3c" int i;for(i=0;stri!='0'i+)if(stri>='0,&&stri<='9,) primf(”c”,stri);printf("nn);IA) 123456789 B) Ia2b3c C) abc D) 123137、以下程序输出的结果是C.#include <stdio.h>void main() int a =5,4,3,2,l,i,j;long s=0;for(i=0;i<5 ;i+)s=s* 10+ai;printf("s=%ldn",s);)A) s= 12345B)s=5 43 2 1C) s=54321D)以上都不对138、以下程序输出的结果是A.#include <stdio.h>void main() int a = l,2,3,4,5,ij,s=0;for(i=0;i<5;i+)s=s*10+ai;printf("s=%dn",s);)A) s= 12345B)s=l 2 34 5C) s=54321D) s=5 4 3 2 1139、在定义inta56;后,数组a中的第10个元素是.C (设a00为第一个元素)A) a25 B) a2H4 C)a D) alJ5J14()、当接受用户输入的含有空格的字符串时,应使用 A函数.A) gets() B) getchar() C) scanf() D) printf()141 >以下程序执行时输入Language Programmingv回车:>,输出结果是 D.#includc <stdio.h> void main() char str3O;gets(str);printf(,'str=%sn",str);)A) Lcinguage Programming B) Language C) str=Languagc D) str= Language Programming142、以下一维数组a的正确定义是D.A) int a(10);B) int n=10,an;int n;D) #define SIZE 10scanf("%d",&n);int aSIZE;int an;143、以下对二维数组a进行正确初始化的是_B.A) int a23= 1,2,3,4,5,6 ;B)int a 3=123,4,5,6 ;C) int a2= 1,2,345,6;int a2=1 1,2,(3,4);144、以下关于数组的描述正确的选项是 C.A)数组的大小是固定的,但可以有不同类型的数组元素。B)数组的大小是可变的,但所有数组元素的类型必须相同。C)数组的大小是固定的,所有数组元素的类型必须相同。D)数组的大小是可变的,可以有不同类型的数组元素。145、以下程序的输出结果是B.#include<stdio.h> void main() int a44=1,3,5,),2,4,6),3,5,7);printf(