为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C语言期末考试复习资料及试题题库资料1

2017-09-30 42页 doc 87KB 168阅读

用户头像

is_003124

暂无简介

举报
C语言期末考试复习资料及试题题库资料1C语言期末考试复习资料及试题题库资料1 选择题: 11、在C语言中,if(a)语句,当a的值为_____ 1、下面不属于结构化程序设计的三种基本时不执行if后面的语句。 结构的是_______ 。 A、-1 B、0.1 C、1 D、0 A、顺序结构 B、跳转结构 12、已知:char ch='q';则下列表达式的值C、循环结构 D、选择结构 是______ 2、下列各组字符序列中,可用作C语言程 ch = (ch>='a'&&ch A、a B、Q C、q D、z A、12abc B、 abc$12 13、以下程序的...
C语言期末考试复习资料及试题题库资料1
C语言期末考试复习资料及试题题库资料1 选择题: 11、在C语言中,if(a)语句,当a的值为_____ 1、下面不属于结构化程序设计的三种基本时不执行if后面的语句。 结构的是_______ 。< b > A、-1 B、0.1 C、1 D、0 A、顺序结构 B、跳转结构 12、已知:char ch='q';则下列表达式的值C、循环结构 D、选择结构 是______ 2、下列各组字符序列中,可用作C语言程 ch = (ch>='a'&&ch<='z') ? (ch-32) : ch; 序标识符的是_______。< d > A、a B、Q C、q D、z A、12abc B、 abc$12 13、以下程序的输出结果是_______。 C、abc%% D、 _abc12 main() 3、,语言中的简单数据类型包括——。< c > {int a=10,b; A、整型、实型、逻辑型 b=++a;b+=a; B、整型、字符型、逻辑型 printf(" %d",b); C、整型、实型、字符型 b=a--; D、整型、实型、逻辑型、字符型 b+=a; 4、下列符号中,不属于转义字符的是 < a > printf(" %d",b); A(\0xAA B(\\ C(\t D(\0 } 5、已知各变量的类型说明如下: A、20 21 B、22 21 C、21 22 D、21 20 int m=8,n, a, b; 14、已知int a=1,b=2,c=3; 以下语句执行后 unsigned long w=10; a,b,c的值是_____。 double x=3.14159, y=0.12; if(a>b) 则以下符合C语言语法的表达式是 c=a; a=b; b=c; A.a+=a-=(b=2)*(a=8) B.n=n*3=18 A(a=2, b=3, c=3 B(a=1, b=2, c=3 C.x%3 D.y=float (m) C(a=2, b=3, c=1 D(a=2, b=3, c=2 6、假设所有变量均为整型,则表达式(x=2, 15、有以下程序,若输入为字符s,则程序y=5, y++, x+y)的值是_______。< d > 运行结果为_______。 A(2 B(6 C(7 D(8 #include "stdio.h" 7、设x、y均为整型变量,且x=10,y=3,则 main() 以下语句的输出结果是____。< b > { char ch; printf(%d,%d\n",x--,--y); ch=getchar(); A、10,3 B、10,2 C、9,2 D、9,3 switch (ch) 8、以下程序段的输出结果是______。< a > { case 'a': printf("a=%c\n",ch); float a=12345.98; default: printf("end!\n"); printf("%5.2f\n",a); case 'b': printf("b=%c\n",ch); A、12345.98 B、12345 C、45.98 D、 case 'c': printf("c=%c\n",ch); 提示出错、无结果 } 9、putchar函数可以向终端输出一个_ 。 } A(整型变量表达式值 B(字符串 A(end! B(end! C(有语法错误 C(字符或字符型变量值 D(实型变量值 D(a=s 10、有如下程序段,从键盘输入数据的正确 b=s 形式应是________。(注:??代表空格) end! float x,y,z; c=s scanf(“x=%d,y=%d,z=%d”,&a,&y,&z); 16、设a为int型变量,则能正确表达数学A(123 B(x=1,y=2,z=3 关系-1 C(1,2,3 D(x=1??y=2??z=3 A、10>a >-1 B、!(a>,1 && a<10) C、-1 B、调用该函数时所定义的调函数类型所决main() 定的 { int n=2; C、调用该函数时系统临时决定的 while (n--) D、return 语句中的表达式类型所决定的 printf("%d",--n); 23、在C语言中,形参的缺省存储类型是} ________ A. 1-1 B. 10 C. 21 D. 0 A、auto B、register 18、当执行以下程序段时,_________。 C、static D、extern x=-1; 24、在一个源程序文件中定义的全局变量的 do 有效范围是______。 {x=x*x;} A. 本源程序文件的全部范围 while (!x); B. 一个C程序的所有源程序文件 A.循环体将执行一次B.循环体将执行 C. 函数内全部范围 两次C.循环体将执行无数多次 D. 从定义变量的位置开始到源程序文D.系统将提示有语法错误 件结束 19、以下程序的输出结果是_______。 25、以下程序的输出结果是_______。 main() fun(int x, int y, int z) { int i; { for (i=1;i<=5;i++) z=x*x+y*y; { } if(i%2) main() printf("#"); { else int a=12; continue; fun(4,7,a); printf("*"); printf("%d",a); } } printf("$\n"); A. 无确定值 B. 0 } C. 12 D.28 A、*#*#*#$ B、#*#*#*$ 26、以下程序的输出结果是________ C、*#*#$ D、#*#*$ f(int b[],int m,int n) 20、若i,j已定义为int类型,则以下程序段{ int i,s=0; 中内循环的总的执行 for(i=m;i s=s+b[i]; for (i=3;i;i--) return s; for (j=0;j<2;j++) } {…} main() A.12 、 B.9 、 C.6 、 D.2 { int x,a[]={1,2,3,4,5,6,7,8,9}; 21、在以下给出的表达式中,与do-while(E)x=f(a,3,7); 语句中的(E)不等价的表达式是_。 printf("%d\n",x); A. (E==0) B. (E>0||E<0) } C. (!E==0) D. (E!=0) A、8 B、10 C、18 D、15 22、C语言中规定函数的返回值类型是由27(下列程序执行后的输出结果是_______。 ________。 #define MA(x) x*(x-1) C、156 D、155 main() 34、以下程序的输出结果是_____ 。 { main() int a=2,b=3; {int a[]={1,2,3,4,5,6,7,8,9,10}; printf("%d \n",MA(1+a+b)); int *p; } p=a; A. 10 B. 18 C. 24 D. 35 printf("%d ",*p++); 28、若有定义: char s[200];则数组上、下 printf("%d\n",*p++); 标为______。 } A、0,199 B、1,200 A、1 2 B、1 1 C、2 3 D、2 2 C、200,1 D、199,0 35、以下程序的输出结果是_______ 29、以下程序段的输出结果是_______ 。main() {char b[]="computer!"; Char s[]="abcd\'"; char *p=b; printf("%d\n",strlen(s)); printf("%c ",*(b+3)); A、8 B、7 C、6 D、5 p=p+8; 30、合法的数组定义是 _______。 printf("%c\n",*p++); A、char a[]={'O', 'K', '!'}; } B、char a[3]={"O", "K", "!"}; A、3 8 B、m r C、p ! D、m ! C、char a={'O','K','!'}; D、char a[3]="OK!"; 二、编程题 31、以下程序的输出结果是________。 1、从键盘输入一个4位数的正整数n,将该 main() 数反序输出。例如,若输入的是1357,则输 { 出的是7531。 int i, a[10]; 2、已知一组字符串 for(i=9;i>=0;i--) a[27]="jjyyzzabcdefgJJYYZZABCDEFG"; a[i]=10-i; 请编一程序,将其 中的小写字母换成其 printf("%d%d%d",a[2],a[5],a[8]); 前一个字母,即z换成y,y换成x,...,b } 换成a,若是a则换成z。然后对数组a[27] A. 258 B. 741 从小到大排序,并输出排序后的字符串。 C. 852 D. 369 #include ”stdio.h” 32、有以下程序 main() main( ) { int i, j;char ch,a[27]= { "jjyyzzabcdefgJJYYZZABCDEFG"; int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0; for(i=0; i<26; i++) for(i=1;i<3;i++) if(a[i]>'a' && a[i]<='z') for(j=0;j<=i;j++) s+=a[i][j]; a[i]=a[i]-1; printf("%d\n",s); else if(a[i]=='a') a[i]='z'; } for(i=0;i<25;i++) 该程序的输出结果是_________。 for(j=i+1;j<26;j++) A.21 B. 20 C. 19 D. 18 if(a[i]>a[j]) 33、若定义:int a=155,*b=&a,则 {ch=a[i];a[i]=a[j]; a[j]=ch;} printf("%d\n",*b);语句 printf(“\n The sorted new array 的输出结果为_______。 is:\n”); A、无确定值 B、a的地址 printf("\n %s ",a);} 1、C语言程序的基本单位是________。 A(56 B(78 A(程序行 B(语句 C(5678 D(提示出错、无结果 C(函数 D(字符 11、已知:char ch='A';则下列表达式的值2、请选出可用作C语言用户标识符的一组是______。 标识符__ ch = (ch>='A'&&ch<='Z') ? (ch+32) : ch; A(void B(a3_b3 C(For D(2a A、A B、a C、Z D、z define _123 -abc DO 12、已知:int a=4,b=5;则执行表达式"a=a>b" WORD IF ase sizeof 后, 3、假定x和y为double型,则表达式 变量a的值为______。 (x=2,y=x+5/2)的值是。 A、0 B、1 C、4 D、5 A.4.500000 B.4 C.4.000000 D.2.000000 13、下列描述,正确的是____。 4、下列可以正确表示字符型常量的是 A、表达式3.91%5是合法的 A、"a" B、'\t' C、"\n" D、297 B、用b=89作为while循环的条件是合法的 5、在C语言中,要求运算数必须是整型的C、逗号表达式是没有值和类型的 运算符是。 D、字符型变量和int型变量的操作完全不 A(/ B(++ C(*= D(% 同 6、以下说法中正确的是 14、阅读以下程序: A(C语言程序总是从第一个定义的函数开 main() 始执行 {int x; B(在C语言程序中,要调用的函数必须在 scanf("%d",&x); main( )函数中定义 if(x--<5) printf("%d",x); C(C语言程序总是从main( )函数开始执行 else printf("%d",x++); D(C语言程序中的main( )函数必须放在程 } 序的开始部分 程序运行后,如果从键盘上输人5,则输7、C语言中,复合语句的构成是将一系列出结果是______ 。 语句置于__。 A、3 B、 4 C、 5 D、 6 A(begin与end之间 B.方框号“[ ]”之间 15、下列程序的运行结果是______。 C.花括号“{ }”之间D.圆括号“( )”之间 #include ”stdio.h” 8.有如下程序段,对应正确的数据输入是A main() float x,y; { int k; scanf(”%f%f”, &x,&y); k=3; printf(”a=%f,b=%f”, x,y); switch(k) A(2.04<回车> 5.67<回车> { case 1: printf(”%d\n”, k++); B(2.04,5.67<回车> case 2: printf(”%d\n”, k++); C(A=2.04,B=5.67<回车> case 3: printf(”%d\n”, k++); D(2.045.67<回车> case 4: printf(”%d\n”, k++); 9、getchar( )函数可以从输入设备上输入一 break; 个___ default: printf(”Full!\n”); A(整型变量表达式值。 } B(字符或字符型变量值 } C(实型变量值。 D(字符串。 A(3 B(4 C(3 D(4 10、以下程序段的输出结果是___ 4 4 int a=5678; 16、设a、b、C、d、m、n均为int型变量, printf(”%2d\n”, a); 且a=5、b=6、c=7、d=8、m=2、n=1,则逻 辑表达式(m==a C、由实参传给形参,再由形参传回实参 A、0 B、 1 C、2 D、 3 D、传递方式由用户指定 17、设x、y和temp均为long int型变量,23.在C语言的函数中,下列正确的说法是.C 则以下语句: A. 必须有形参 B. 形参必须是变量名 temp=x; x=y; y=temp; 的功能是 C. 可以有形参,也可以没有形参 A、把x和y按从大到小排列 D. 数组名不能作形参 B、把x和y按从小到大排列 24、以下程序的输出结果是 ___ 。 C、无确定结果 f ( int a) D、交换变量x和变量y的值 {int b=0; 18、以下的for循环______ 。 static int c = 3; for(x=0, y=0; (y!=123)&&(x<4);x++) ; b++; c++; A、执行4次 B、执行3 次 return(a+b+c); C、一次也不执行 D、是无终止的循环 } 19、以下程序的输出结果是 ______ 。 main() main() {int a = 2, i; {int a, b; for(i=0;i<3;i++) printf("%d\n",f(a)); for(a=1, b=1; a<=100; a++) } {if(b>=10) break; A. 7 B. 7 C. 7 D. 7 if (b%3==1) 8 9 10 7 { b+=3; continue; } 9 11 13 7 } 25、设C程序如下: printf("%d\n",a); #define ABC(x) x*x } #include"stdio.h" A、4 B、6 C、5 D、101 main() 20、执行以下程序后输出的结果是 {int a=3,b; main() b=ABC(a+1); { int y=10; printf("b=%d", b); } do{y--;} 上述程序运行输出的结果是___ 。 while(--y); A、b=4 B、b=a+1 C、b=16 D、b=7 printf("%d\n",y--);} 26、有如下程序 A. -1 B. 1 C. 8 D. 0 int func(int a,int b) 21、执行以下程序后输出的结果是 { return(a+b);} main() main() {int i, j,w=0; { for(i=4; i; i--) int x=4,y=-3,z=12,r; for(j=1;j<=2;j++) r=func(func(x,y),z); w=w+i*j; w=i*j; printf("%d\n",r); printf("%d\n",w); } } 该程序的输出的结果是___。 A、4 B、0 C、1 D、30 A. 1 B. 13 C. 9 D. 16 22、在调用函数时,如果实参是简单变量,27、以下程序段的输出结果是__ 。 它与对应形参之间的 Char s[]="\141abc\'"; 数据传递方式是______ 。 printf("%d\n",strlen(s)); A、地址传递 B、单向值传递 A、9 B、11 C、5 D、3 28、以下对数组的定义语句中,错误的是} 。 A( 45 B( 44 C(0 D( 9 A、int n=17,a[n]; B、char a[4]={'7','8','9'}; 35、以下程序的输出结果是 C、char s[10]="test"; D、double a[]={1,2}; main() 29、以下程序运行后,输出结果是。 {char b[]="Language"; main() char *p=b; { printf("%c ",*(b+2)); int n[5]={3,3,3},i,k=2; p=p+7; for(i=0;i 编程题D(共30分): main() 一、编一程序找出100至999中能被3整除, {int i, a[10]; 且至少有一位数字是7的所有数三位数,例 for(i=9;i>=0;i--) a[i]=10-i; 如177。(12分) printf("%d %d %d",a[1],a[6],a[9]); 要求:1利用TC编译系统进行调试、运行 } 2将源程序以“d1.c”为文件名保存A、1 6 9 B、9 4 1 C、9 6 1 D、3 5 7 在网络盘(K:盘)的考生文件夹上,用其它31、 若定义如下变量和数组: 文件名保存或保存在其他地方均不能得分 int i; 二、已知由20个两位正整数组成的数组int x[3][3]={1,2,3,4,5,6,7,8,9}; a[20]={10,11,12,13,14,19,18, 则下面语句的输出结果是______ 。 17,16,15,20,21,22,23,24,29,for(i=0;i<3;i++) 28,27,26,25},请编程将数组 printf("%d",x[i][2-i]); a中满足:"个位数减十位数>0"的元素A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9 (例如:12,13)存放在数组b[]中, 32、若定义:float x=3.14159,*p=&x; 并对数组b[]从小到大排序后,然后输则printf("%f\n",*p++);的输出结果为 。 出排序后的数据。(18分) A、无确定值 B、x的地址 要求:1利用TC编译系统进行调试、运行 C、4.14159 D、3.14159 2程序运行后每行输出5个整数 33、若有定义:long a[8]; 则以下表达式中 3将源程序以“d2.c”为文件名保存在不能代表数组元素 网络盘(K:盘)的考生文件夹上,用其它文 a[1]的地址的是 件名保存或保存在其他地方均不能得分 A、&a[0]+1 B、&a[1] 1、下面哪一个是C语言的合法关键字? C、a+1 D、&a[0]++ A(Float B(integer 34、下列程序的输出结果是 C(signed D(Char #include "stdio.h" 2、对C的源程序进行编译是指 main() A、建立并修改源程序 { B、将C源程序翻译成目标程序 int a[]={1,2,3,4,5,6,7,8,9,0}, i, s, *p; C、将目标程序连接成可执行程序 p=a;s=0; D、对程序进行查错和排错 for(i=0;i<=9;i++) 3、在C语言中,十进制的35可等价地写为 s+=*p++; ______ 。 printf("%d\n", s); A、023 B、043 C、43 D、23 4、下列描述中,正确的是______ 。 11、已知:int a=9,b=-1;则执行语句"a=a<=b;"A、逗号表达式是没有值和类型的 后,变量a的值为______。 B、表达式6.3%5是合法的 A、0 B、-1 C、9 D、8 C、C程序是由若干个函数组成的,但是必12、以下程序的输出结果是______ 。 须有、而且只能有一个主函数 main() D、int型变量和字符型变量的操作完全不同 {int x=4,b=5,c=0,d; 5、设x、y和p均为float型变量,则以下 d=!x && !b || !c; 语句: p=x; x=y; y=p; 的功能是 printf("%d\n",d); A、把x和y按从小到大排列 } B、把x和y按从大到小排列 A、0 B、非0的数 C、1 D、-1 C、无确定结果 13、以下程序的运行结果是______。 D、交换x和y中的值 #include "stdio.h" 6、已知字母A的ASCII码为十进制数65, main() 且s为字符型,则执行 { char ch='F'; 语句s='A'+'6'-'3';后,s中的值为___。 if (ch>='A'&&ch<='Z') A('D' B(68 ch =(ch+32); C(不确定的值 D('C' else ; 7、假定x和y为double型,则表达式 putchar(ch); x=3,y=x+7/2的值是______ 。 } A、6.500000 B、6.000000 A、A B、Z C、f D、ch C、6 D、3.000000 14、以下程序的运行结果是______。 8、设有输入语句如下: #include ”stdio.h” scanf("x=%d; y=%d", &x, &y); main() 为使变量x的值为25,变量y的值为37,{ 则从键盘输入数据的正确格式是___ int a=2,b= -1,c=2; A、 2537 B、 25 37 if (a c=0; main() else c++; {int b=2; printf(”%d\n”,c); printf("%d\n",(b+=b-=b*b) ); } } A(3 B(2 C(1 D(0 A、-8 B、10 15、执行下列程序,输出结果为______ C、-4 D、0 #include ”stdio.h” 10、阅读以下程序,当输入数据的形式为:main() 12,34<回车>,输出结果为________。 { #include ”stdio.h” int k; main() k=4; { int a,b; switch(k) scanf(”%d%d”, &a,&b); { case 1: printf(”%d\n”, k++); break; printf(”a+b=%d\n”,a+b); case 2: printf(”%d\n”, k++); } case 3: printf(”%d\n”, k++); break; A(a+b=46 B(有语法错误 case 4: printf(”%d\n”, k++); C(a+b=12 D(不确定值 default: printf(”Full!\n”); } for (i=5;i;i--) } for (j=0;j<3;j++) A(4 B(5 C(4 D(5 sum++; Full! Full! printf("%d",sum); 16、以下程序的输出结果是 ______ 。 } main() A. 3 B. 5 {int x=9,y=7,z=2,d; C. 12 D. 15 d=(x>y>z); 21、有以下语句: printf("%d\n",d); i=1; } for(;i<=100;i++) sum+=i; A、1 B、3 与以上语句序列不等价是________。 C、0 D、4 A. for(i=1; ;i++) {sum+=i;if(i==100)break;} 17、在C语言中,为了结束while语句构成的B. for(i=1;i<=100;) {sum+=i;i++;} 循环,while后一对圆括号中表达式的值应C. i=1;for(;i<=100;) sum+=i; 该为_______。 D. i=1;for(; ;) {sum+=i;if(i==100)break;i++;} A. 0 B. 1 22、设C程序如下: C. true D. 非0 #define ABC(x) x*x 18、标有/**/的语句的执行次数是 #include"stdio.h" main() main() { {int a=3,b; int y=0,i; b=ABC(a-2); for(i=0;i<10;i++) printf("b=%d", b); } {if(i%2==0) continue; 上述程序运行输出的结果是__ y+=i; /**/ A、b=-5 B、b=a-2 } C、b=1 D、b=-6 } 23、对于C语言中的函数,下列叙述中正确A. 10 B. 9 的是______ 。 C. 5 D. 0 A、函数的定义不能嵌套,但函数的调用可19、执行以下程序后输出的结果是_______。以嵌套 B、函数的定义和调用都不能嵌套 main() C、函数的定义和调用都能嵌套 { int x=-10; D、函数的定义可以嵌套,但函数的调用不 do 能嵌套 { x++; 24、以下函数值的类型是_______。 } fun (float x) while(++x); { printf("%d\n",++x);} float y; A. -1 B. 1 y= 3*x-4; C. -8 D. 0 return y; 20、以下程序运行后,输出的结果是} ________。 A. 不确定 B. int #include "stdio.h" C. void D. float main() 25、以下程序运行后的输出结果是 {int i, j ,sum=0; ______ 。 f ( int a) for(i=9;i>=0;i--) a[i]=i*i; {int b=0; printf("%d %d %d",a[1],a[4],a[7]); static int c = 1; } b++; c++; A、1 4 7 B、1 16 49 return(a+b+c); C、49 16 1 D、7 4 1 } 30、以下程序运行后,输出结果是 __ main() main() {int a = 2, i; { for(i=0;i<3;i++) printf("%d\n",f(a)); int a[4][4]={{1,3,5},{2,4,6},{3,5,7}}; } printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1] A. 5 B. 5 C. 5 D. 5 ,a[3][0]); 8 7 6 5 } 11 9 7 5 A. 0650 B. 1470 26、以下程序运行后,从键盘输入5,则程 C. 5430 D. 输出值不定 序的输出结果是____。 31、下述对C语言字符数组的描述中正确的 long fac( int n) 是_______。 {long f; A. 一维字符数组的第一个元素是其下标为 if(n==0) 1的元素 f=1; B. 一维字符数组的元素在引用时其下标大 else 小没有限制 f=n*fac(n-1); C. 任何一个一维字符数组的元素,可以根 return f; 据内存的情况按照其先后顺序以连续或非 } 连续的方式占用存储空间 main() D. 任何一维字符数组的名称都是该数组存 {long y; int n; 储单元的开始地址,且其每个元素按照顺序 scanf("%d",&n); 连续占存储空间 y=fac(n); 32、以下程序运行后,输出结果是____ printf("%ld",n); main() } { A、 5 B、 1 char cf[3][5]={"AAAA","BBB","CC"}; C、 15 D、 120 printf("\"%s\"\n",ch[2]); 27、合法的数组定义是______ 。 A. "AAAA" B. "BBB" A、char a={'U', 'V', 'W','X', 'Y'}; C. "BBBCC" D. "CC" B、char a[5]={"A","A", "A","A","A"}; C、char a[6]= {'A','B','C','D','E'}; D、char a[5]= "ABCDE"; 28、以下程序段的输出结果是______ 。 Char s[]="\113vwxyz\x41"; printf("%d\n",strlen(s)); A、8 B、10 C、3 D、7 29、以下程序的运行后输出结果是___ main() {int i, a[10]; 33、若定义:int x=459,*y=&x; 则printf("%d\n",++(*y));的输出结果为---- A、459 B、x的地址加1 C、460 D、“*”号的ASCII值 34、以下程序的输出结果是 _______ 。 main() {char a[]={1,2,3,4,5,6,7,8,9,10}; char *p; p=a; printf("%d ",(*p)++); p=p+5; printf("%d\n",*p++); } A、1 6 B、2 7 C、1 5 D、2 6 35、有以下程序 void ss( char *s, char t) { while (*s) { if (*s==t) *s=t-'a'+'A'; s++; } } main() { char str[100]="abcddfefdb", c='d'; ss(str, c); printf("%s\n", str1); } 程序运行后的输出结果是________。 A( ABCDDEFEDB B( abcDDfefDb C( abcAAfefAb D( Abcddfefdb 一、编一个程序,从键盘输入一个任意整数n,计算n 的阶乘n!。并输出计 算结果。 (12分) 要求:1)利用VC++编译系统进行调试、运行 2)对输入数据的合法性进行检查 3)将源程序以“a1.c”为文件名保存在网络盘(K:盘)的考生文 件夹上,用其它文件名保存或保存在其他地方均不能得分 二、已知有20个三位正整数的数组a[20]={210,211,212,213,214,119, 118,117,116,115,320,321,322,323,324,329,328,327, 326,325},编一程序,将数组a中满足:个位数或十位数或百位数是偶 数的元素(如:210,211)赋给数组b[],然后对数组b[]从小到大排序, 并输出。(18分) 要求:1)利用VC++编译系统进行调试、运行 2)程序运行后每行输出2个整数 3)将源程序以“a2.c”为文件名保存在网络盘(K:盘)的考生文 件夹上,用其它文件名保存或保存在其他地方均不能得分 1、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成C、若干过程组成 D、若干子程序组成 2、下面不属于结构化程序设计的三种基本结构的是( ) A、顺序B、跳转C、循环D、选择 3、下面四个选项中,均是不合法的用户标识符的选项是 ( ) A.b-a B.Float C.a2 D._123 goto P_0 int temp int char 2b double 4、若有代数式(3ae)/bc,则不正确的C语言表达式是( 4 )。 A、a/b/c*e*3 B、3*a*e/b/c C、a*e/c/b*3 D、a*e/c/b*3 5、表达式21/4*sqrt(9.0)/4值的数据类型是( 5 ) A、float B、int C、不确定 D、double 6、若希望当字符变量a中为数字字符时,表达式的值为"真",为非数字字符时,表达式的值为"假"。则以下不能满足要求的表达式是( 6 )。 A、a>=0 && a<=9 B、a>='0' && a<='9' C、a>=48+0 && a<=48+9 D、a-'0'>=0 && a-'0'<=9 7、以下程序的输出结果是( 7 )。 main() { int a=8; printf("%d\n", (a+=a-=a*a)); } A、0 B、-112 C、-180 D、-48 8、一个C语言的语句至少应包一个 A、{ } B、逗号 C、分号 D、什么不要 9、程序中定义以下宏#define S(a,b) a*b 若定义int area;且令area=S(3+4,5+1),则变量area的值为( 9 ) 。 A、42 B、24 C、25 D、23 10、在C语言中,函数的隐含存储类别是 A、auto B、static C、extern D、无存储类别 11、有如下程序 main() { int i,sum; for(i=1;i<=3;sum++) sum+=i; printf("%d\n",sum); } 该程序的执行结果是( 11 ) A、6 B、3 C、死循环 D、0 12、为了避免嵌套的if-else语句的二义性,C语言规定else总是与( 12 )组成配对关系。 A、缩排位置相同的if B、在其之前未配对的if C、在其之前未配对的最近的if D、同一行上的if 13、有以下程序,程序运行后的输出结果是。 main() { int a=15, b=21, m=0; switch (a%3) { case 0: m++; break; case 1: m++; switch (b%2) { default: m++; case 0: m++; break; } } printf(”%d\n”,m); } A、1 B、2 C、3 D、4 14、有以下程序 main( ) { int i,n=0; for(i=2;i<5;i++) { do { if(i%3) continue; n++; }while(!i); n++; } printf("n=%d\n",n); } 程序执行后的输出结果是( 14 ) A、n=5 B、n=2 C、n=3 D、n=4 15、假定有以下变量定义 int k=7, x=12; 则能使值为7的表达式是( 15 )。 A、x%k B、k%x C、k/x D、3%k 16、以下对C语言函数的有关描述中,正确的是( 16 )。 A、调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B、C函数既可以嵌套定义又可以递归调用 C、函数必须有返回值,否则不能使用函数 D、C程序中有调用关系的所有函数必须放在同一个源程序文件中 17、有如下函数调用语句 func(rec1,rec2+rec3,(rec4,rec5)); 该函数调用语句中,含有的实参个数是 A、4 B、3 C、5 D、有语法错 18、合法的数组定义是 ( 18 ) A、char a={'O', 'K', '!'}; B、char a[3]={"O", "K", "!"}; C、char a[4]={'O','K','!'}; D、char a[3]="OK!"; 19、 以下程序运行后,输出结果是( 19 ) main() { int a[10], a1[ ]={1,3,6,9,10}; int a2[ ]={2,4,7,8,15},i=0,j=0,k; for(k=0;k<4;k++) if(a1[i] A、4 B、5 C、9 D、10 21、若有以下数组定义,其中不正确的是( 21 ) 。 A、int a[2][3]; B、int b[][3]={0,1,2,3}; C、int c[100][100]={0}; D、int d[3][]={{1,2},{1,2,3},{1,2,3,4}}; 22、以下程序输出的结果是(22 )。 main( ) {char w[][10]={"ABCD","EFGH","IJKL","MNOP"}, k; for (k=0;k<3;k++) printf("%s\n",&w[k][k]); } A、ABCD B、ABCD FGH EFG KL IJ M C、EFG D、FGH JK KL O 23、以下程序的输出结果是( 23 ) main() { int i; for (i=1;i<=5;i++) { if(i%2==0) printf("#"); else continue; printf("*"); } printf("$\n"); } A、*#*#*#$ B、#*#*#*$ C、*#*#$ D、#*#*$ 24、若有说明语句:int a, b, c, *d=&c;, 则能正确从键盘读入三个整数分别赋给变量a、b、c 的语句是( 24 )。 A、scanf("%d%d%d",&a,&b,&d); B、scanf("%d%d%d",&a,&b,d); C、scanf("%d%d%d",a,b,d); D、scanf("%d%d%d",a,b,*d); 25、若定义:int a=511,*b=&a则printf("%d\n",*b);的输出结果为( 25)。 A、无确定值 B、a的地址 C、512 D、511 26、运行下面的程序,如果从键盘上输入:123<空格>456<空格>789<回车>,输出结果是 ( 26 )。 A、123,456,789 B、1,456,789 C、1,23,456,789 D、1,23,456 main( ) { char s[100]; int c, i; scanf("%c",&c); scanf("%d",&i); scanf("%s",s); printf("%c,%d,%s\n",c,i,s); } 27、若有数组定义: char array [ ]="China"; 则数组array所占的空间为( 27 )。 A、4个字节 B、5个字节 C、6个字节 D、7个字节 28、若有以下的定义: int a[ ]={1,2,3,4,5,6,7,88,9,10}, *p=a; 则值为3的表式是( 28 ) A) p+=2, *(p++) B) p+=2,*++p C) p+=3, *p++ D) p+=2,++*p 29、以下程序运行后的输出结果是 func(int a) { auto int b=0; auto int c=1; b++; c++;; return (a+b+c); } main( ) { int x=2, i; for(i=0; i<3; i++) printf("%d\n",func(x)); } A. 5 B. 5 C. 5 D. 5 8 7 6 5 11 9 7 5 30、若已定义: int a[]={0,2,4,6,8,10,12,14,16,18},*p=a, i; (i在0至9的范围),以下对a数组元素的引用 不正确 的是( 30 ) A、a[p-a] B、*(&a[i]) C、p[i] D、*(*(a+i)) 31、以下程序的输出结果是( 31 ) main() { int *p; int a[5]={2, 6, 8, 7, 1}; p=a; printf("%d %d %d\n", a[p-a], *p++, *++p); } A、8 6 6 B、2 2 8 C、2 6 8 D、6 8 6 32(下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。填第一空《B》 #include main() { int n, sum=0; n=2345; do { sum=sum+( 32 ); n=( 33 ); }while(n); printf("sum=%d",sum); } A、n%10 B、(n%10)*(n%10) C、n/10 D、(n/10)*(n/10) 33、下面程序的功能是计算正整数2345的各位数字平方和,请选择填空。填第二空( 33 ): #include main() { int n, sum=0; n=2345; do { sum=sum+( 32 ); n=( 33 ); }while(n); printf("sum=%d",sum); } A、n/1000 B、n/100 C、n/10 D、n%10 34、下面程序的功能是求出用数字1、3、5、7可以组成多少个没有重复的三位数,且每行控制输出4个数。请选择填空。填第一空( 34 ): main() { int i, j, k, count=0; for(i=1; i<=7; i=i+2) for(j=1;j<=7; j=j+2) for(k=1;k<=7; k=k+2) if( 34 ) {printf("%5d",i*100+j*10+k); count++; if(35) printf("\n"); } } A、(i!=j!=k) B、(i!=j && i!=k && j!=k) C、(i!=j && i!=k) D、(i!=j || i!=k || j!=k) 35、下面程序的功能是求出用数字1、3、5、7可以组成多少个没有重复的三位数,且每行控制输出4个数。请选择填空。填第二空( 35 ): main() { int i, j, k, count=0; for(i=1; i<=7; i=i+2) for(j=1;j<=7; j=j+2) for(k=1;k<=7; k=k+2) if( 34 ) {printf("%5d",i*100+j*10+k); count++; if(35) printf("\n"); } } A、count/4==0 B、count%4 C、count%4==0 D、count/4 1、对于C语言的函数,下列叙述中正确的是(A) A、函数的定义不能嵌套,但函数调用可以嵌套 B、函数的定义和调用都有不能嵌套 C、函数的定义和调用都能嵌套 D、函数的定义能嵌套,但函数调用不能嵌套 2、以下程序的输出结果是 ( A )。 main() {int x=1,a=2, b=3; switch(x) { case 0: b=b+a;break; case 1: a=b+a; case 2: ++a;++b; } printf("a=%d,b=%d\n",a,b); } A、a=6,b=4 B、a=5,b=3 C、a=6,b=3 D、a=5,b=4 3、以下程序的输出结果是( A )。 main() {int a=1,c; c=7/2||++a; printf("%d,%d ",a,c); } A、1,1 B、0,1 C、1,3 D、2,3 4、若: char s[30][30];则数组元素的非法引用是(B)。 A、s[20][9] B、s[29+1][2*3] C、s[3][29] D、s[9][30-1] 5、有以下定义语句: int a[10]={3, 9, 11, 14, 20, 32, 60}, *p;p=a; 则 ++(*++p) 的值是 (D) A、 9 B、11 C、22 D、10 6、下列可以正确表示字符型常数的是 ( C ) A、"a" B、"\010" C、'\n' D、h 7、若定义语句 float bb[100],则该数组array元素的 上、下限为 ( A ) 。 A、 0,99 B、99,0 C、100,1 D、0,100 8、下列各组字符序列中,可用作C语言程序标识符的是(A)。 A、SBSD B、 _1$234 C、spr#it D、 4_cf_1在 9、已知:char ch='t';则下列表达式的值是 ( A ) ch = (ch>='a'&&ch<='z') ? (ch-32) : ch; A、T B、A C、Z D、t 10、以下程序段的输出结果是( B ) 。 Char s[]="\\\nabcert"; printf("%d\n",strlen(s)); A、9 B、8 C、11 D、110 11、能正确表达数学关系|a|>10的表达式是 ( B) 。 A、10>a>-10 B、a>10 ||-10>a C、a>-10||10>a D、a>10 && -100;x++); A、是无终止的循环 B、一次也不执行 C、执行4次 D、执行3 次 16、以下程序的输出结果是(C)。 #include main() { int x,t; x=10; t=(--x)+(--x); printf("%d\n",t); } A、17 B、19 C、16 D、18 17、合法的数组定义是 (C)。 A、char b[n]="yes"; B、char b[4]={"y", "e", "s"}; C、char b[4]={'y','e','s'}; D、char b="yes"; 18、以下程序的输出结果是:(A) main() {char *ch[]={"cccc","bbbb","aaaa","dddd"}; printf("\"%s\"\n",ch[2]); } A、"aaaa" B、"bbbb" C、"cccc" D、"dddd" 19、以下程序的输出结果是(D) 。 #include main() { int a=2, b=5; printf("a=%d%%,b=%d%%\n",a, b); } A、a=%2, b=%5 B、a=2, b=5 C、a=%%d, b=%%d D、a=2%, b=5% 20、有如下程序: main() { int i,sum; for(i=1;i<6;i++) sum+=i; printf("%d\n",sum); } 程序执行后sum的值是(C) A、15 B、14 C、不确定 D、0 21、若变量a是float类型,并执行了语句:a='B'+2.6;则正确的叙述是(B)。 A、a的值是字符b b、a的值是字符'B'的ASCII值加上2.6 C、a的值是整型 D、a的值是字符'B'的ASCII值加上2 22、以下程序的输出结果是( C )。 main() { int i; for (i=1;i<=5;i++) { if(i%2==1) printf("*"); else printf("#"); } printf("$\n"); } A、***##$ B、###**$ C、*#*#*$ D、#*#*#$ 23、若有说明语句:int a, b, c, *d=&a;, 则能正确从键盘读入三个整数 分别赋给变量a、b、c的语句是( C )。 A、scanf("%d%d%d",&a,&b,&d); B、scanf("%d%d%d",&a,&b,c); C、scanf("%d%d%d",d,&b,&c); D、scanf("%d%d%d",a,b,*d); 24、若定义:char a='B',*b=&a则printf("%c\n",++*b); 的输出结果为( D)。 A、'a' B、a的地址 C、'B' D、'c' 25、(为判断char型变量m是否是小写字母,可用表达式 (C) 。 A、"a"<= m && m<=“z” B、a<=m && m<=z C、'a'<=m && m<='z' D、三个答案都错 二、填空题(两题共16分) 26、计算数列 sum=1+1/2*3 +1/3*4 +....1/10*11.将方括号[26][27][28][29]填空,先填 [i]。 main() { int [26]; float t,sum; [27]; for(i=1;i<= [28] ;i++) { t=i*(i+1); sum=sum+[29];} printf("%f",sum);} 27、题的第二空。 float t,sum; [27]; 28、题的第三空。10 for(i=1;i<= [28] ;i++) 29、题的第四空。<1.0/t或(int)i/t> t=i*(i+1); sum=sum+[29]; 30 < i-1> ********* 打印左边三角形图案, 程序如 ******* 下,将方括号 [30][31] ***** [32][33]空 的 部分 *** 补充,完善程序。 * 先填[30] main() { int i,j,k; for (i=1;i<=5;i++) {for (j=1;j<=[30] ;j++) printf(" "); for(k=1;k<=[ 31 ];k++) [32] ; } [ 33 ]; } } 31、题的第二空。<2*(5-i)+1或11-2*i> for(k=1;k<=[ 31 ];k++) 32、题的第三空。 for(k=1;k<=[ 31 ];k++) [32] ; 33、题的第四空。 for(k=1;k<=[ 31 ];k++) [32] ; } [ 33 ]; } } 1、 任意输入20个整数,求这20个数中的平均值,并输出。 2、 已知一组字符串a[20]="yyzzabcdefYYZZABCDE"; 编一程,将其中的小写字母换成下一 个字母,即a换成b,b换成c,z换成a。然后对数组a[20] 从小到大排序。 3.已知一组数组a[10]={11,12,9,3,6,8,23,24,33,34};一组数组b[10]; 编一程序,请将数组a[]中的偶数放入数组b[]中,并对数组b[]按从小到大顺序排序,(数组b[]中没有值的不排)最后打印数组b[]。 4.已知有20个两位正整数的数组 a[20]={10,11,12,13,14,19,18,17,16,15,20,21,22,23,24,29,28,27,26,25},编一程,将数组a中满足:个位数加十位数是奇数的元素赋给数组b[],并对数组b[]从大到小排序打印。 #include "stdio.h" #include "string.h" 5.已知一组字符串a[20]="yyzzabcdefYYZZABCDE"; 编一程,将其中的小写字母放在字符数组b[20]中,然后对数组b[20] 从小到大排序。 6.已知一组字符串a[10]=" xyzbcdefg"; 编一程,将其中的小写字母换成下一个字母,即a换成b,b换成c,z换成a。 3.#include "string.h" main() {int a[10]={11,12,9,3,6,8,23,24,33,34},b[10]; int i,j,k,cnt; cnt=0; for(i=0;i<10;i++) if(a[i]%2==0) b[cnt++]=a[i]; for(i=0;ib[j]) {k=b[i];b[i]=b[j];b[j]=k;} for(i=0;i='a'&&a[i]<='z') if(a[i]=='z') a[i]='a'; else a[i]=a[i]+1; for(i=0;i<9;i++) printf("%c",a[i]); } 7、从键盘输入10个整数到数组a[10],然后逆序打印。 实验二、已知一组数组a[15]={3,5,7,8,9,2,5,7,9,49,3,1,11,23,15}. 1、求累加数,平均数。2、打印数组,每打5个元素,分行。 8、已知一组数组a[15]={3,5,7,8,9,2,5,7,9,49,3,1,11,23,15}.求最大值和下标。 9、已知一组数组a[15]={3,5,7,8,9,2,5,7,9,49,3,1,11,23,15}.将最大值调到前 面。 7.#include "stdio.h" main() { int a[10]; int k; printf("\n 请输入10个整数:\n"); for(k=0;k<10;k++) scanf("%d",&a[k]); for(k=9;k>=0;k--) printf("a[%d]= %d ",k,a[k]); } 8.#include "stdio.h" main() { int a[15]={3,5,7,8,9,2,5,7,9,49,3,1,11,23,15}; int sum=0,averg,k,cont=0; for(k=0;k<15;k++) sum=sum+a[k]; averg=sum/15; for(k=0;k<15;k++) { printf("a[%d]= %d ",k,a[k]); cont ++; /*计数器*/ if(cont%5==0) printf("\n");} printf("\n sum=%d,averg=%d\n",sum,averg); } 9.#include "stdio.h" main() { int a[15]={3,5,7,8,9,2,5,7,9,49,3,1,11,23,15}; int k,i,max; max=a[0]; for(k=1;k<15;k++) {if(maxa[k]) {min=a[k]; i=k;}} {k=a[0];a[0]=a[i];a[i]=k;} for(k=0;k<15;k++) printf("a[%d]= %d ",k,a[k]); } 求两个数之间最小公倍数与最大公约数。 1、编写求最小公倍数的子程序 方法1: #include "stdio.h" int min1(int a,int b) { int r,i; i=a>b ? a:b; for(r=i; ;r++) if(r%a==0&&r%b==0) break; return r;} main() { int a,b,r; printf("\n input a,b:"); scanf("%d,%d",&a,&b); r=min1(a,b); printf("最小公倍数r=%d\n",r);} 方法2 #include "stdio.h" int min2(int a,int b) { int r; r=a>b ? a:b; while(r%a!=0||r%b!=0) r++; return r;} main() { int a,b,r; printf("\n input a,b:"); scanf("%d,%d",&a,&b); r=min2(a,b); printf("最小公倍数r=%d\n",r);} 四、编写求最大公约数的子程序 方法1: #include "stdio.h" int max1(int a,int b) { int r,i; i=a
/
本文档为【C语言期末考试复习资料及试题题库资料1】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索