《c语言期末复习试题(附答案)(12页).doc》由会员分享,可在线阅读,更多相关《c语言期末复习试题(附答案)(12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-c语言期末复习试题(附答案)-第 12 页试卷编号:11201所属语言:C语言试卷方案:C语言期末考试试卷总分:100分共有题型:4种一、单项选择 共30题 (共计60分)第1题 (2.0分)设有定义:int k=0;,以下选项的四个表达式中与其他三个表达式的值不相同的是( A ).A:k+ B:k+=1C:+kD:k+1第2题 (2.0分)已知int i=5,执行语句i+=+i后, i的值是( C).A:10B:11C:12D:A、B、C都不对第3题 (2.0分)以下程序的功能是:给r输入数据后,计算半径为r的圆面积s.程序在编译时出错.#include void main( )/* Be
2、ginning */ int r; float s; scanf(%d,&r); s=p*r*r; printf(s=%fn,s);出错的原因是(D ).A:注释语句书写位置错误B:存放圆半径的变量r不应该定义为整型C:输出语句中格式描述符非法D:计算圆面积的赋值语句中使用了非法变量第4题 (2.0分)ABC的长度是( B ).A:11B:7C:5D:3第5题 (2.0分)已知int j,i=1;,执行语句j=i+;后,j的值是( C ).A:1B:2C:-1D:-2第6题 (2.0分)有以下程序:#include void main( ) int s=0, a=1, n; scanf(%d,
3、 &n); do s+=1; a=a2; while(a!=n); printf(%dn, s); 若要使程序的输出值为2,则应该从键盘输入给n的值是( B ).A:-1B:-3C:-5D:0第7题 (2.0分)执行以下程序后,输出的结果是( D ).#include void main( ) int y=10; do y ; while( y); printf(%dn,y );A:-1B:1C:8D:0第8题 (2.0分)以下循环体的执行次数是( C ).#include void main( ) int i,j; for(i=0,j=1; i=j+1; i+=2, j )printf(%d
4、n,i);A:3B:2C:1D:0第9题 (2.0分)有以下程序段:int k=0;while(k=1)k+;while循环执行的次数是(A ).A:无限次B:有语法错误,不能执行C:1次也不执行D:执行1次第10题 (2.0分)有以下程序#include void main( ) int m,n,p; scanf(m=%dn=%dp=%d,&m,&n,&p); printf(%d%d%dn,m,n,p);若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是( A ).A:m=123n=456p=789B:m=123 n=456 p=789C:m=1
5、23,n=456,p=789D:123 456 789第11题 (2.0分)设变量已正确定义,以下能正确计算f=n!的程序段是(D)A:f=0; for(i=1;i=n;i+) f*=i;B:f=1;for(i=1;i1;i+) f*=i;D:f=1; for(i=n;i=2;i ) f*=i;第12题 (2.0分)在下列程序中,没有构成死循环的程序段是( B ).A: int i=100;while(1) i=i%100+1; if(i100) break;B:int k=1000;do+k; while(k=10000);C:for(;);D:int s=36; while(s); -s;
6、第13题 (2.0分)有如下程序:#include void main( ) int n=9; while(n6) n-;printf(%d,n);该程序段的输出结果是( B ).A:987B:876C:8765D:9876第14题 (2.0分)以下程序的输出结果是( D ).#include void main( ) int x=10,y=10,i; for(i=0;x8;y=+i) printf(%d %d ,x ,y);A:10 1 9 2B:9 8 7 6C:10 9 9 0D:10 10 9 1第15题 (2.0分)有如下程序:#includevoid main( ) int n5=
7、0,0,0,i,k=2; for(i=0;ik;i+) printf(%dn,nk);该程序的输出结果是( D ).A:不确定的值B:2C:1D:0第16题 (2.0分)下列程序执行后的输出结果是( A ).#includevoid main( ) char arr24; strcpy(arr,you); strcpy(arr1,me); arr03=&; printf(%s n,arr); A:you&meB:youC:meD:err第17题 (2.0分)以下程序的输出结果是( C ).#includevoid main( ) int i, x33=1,2,3,4,5,6,7,8,9; fo
8、r(i=0;i3;i+) printf(%d,xi2i);A:1,5,9,B:1,4,7,C:3,5,7,D:3,6,9,第18题 (2.0分)以下数组定义中不正确的是( D ).A:int a23;B:int b 3=0,1,2,3;C:int c100100=0;D:int d3 =1,2,1,2,3,1,2,3,4;第19题 (2.0分)以下能正确定义数组并正确赋初值的语句是(D ).A:int N=5,bNN;B:int a12=1,3;C:int c2 =1,2,3,4;D:int d32=1,2,3,4;第20题 (2.0分)有以下程序:int a=4;int f(int n) i
9、nt t=0; static int a=5; if(n%2) int a=6; t+=a+; else int a=7; t+=a+; return t+a+;main( ) int s=a,i=0; for( ; i2; i+) s+=f(i); printf(dn,s);程序运行后的输出结果是(B)A:24B:28C:32D:36第21题 (2.0分)以下正确的函数定义形式为(A)A:double fun(int x, int y)B:double fun(int x; y)C:double fun(int x; int y)D:double fun(int x, y)第22题 (2.0
10、分)C语言规定,函数返回值的类型是由(D)A:return语句中的表达式类型所决定的B:调用该函数时的主调函数类型所决定的C:调用该函数时系统临时决定的D:在定义该函数时所指定的函数类型所决定的第23题 (2.0分)有以下程序: 输出结果是() (注:5353)void swap1(int c0 , int c1 ) int t ; t=c00; c00=c10; c10=t; void swap2(int *c0, int *c1) int t; t=*c0; *c0=*c1; *c1=t; main( ) int a2=3,5, b2=3,5; swap1(a, a+1); swap2(&
11、b0, &b1); printf(%d %d %d %dn,a0,a1,b0,b1);A:3 5 5 3B:5 3 3 5C:3 5 3 5D:5 3 5 3第24题 (2.0分)以下程序的输出结果是( A ).amovep(int*p, int (*a)3,int n) int i, j; for( i=0;in;i+) for(j=0;jn;j+) *p=aij; p+; main( ) int *p,a33=1,3,5,2,4,6; p=(int *)malloc(100); amovep(p,a,3); printf(%d %d n,p2,p5); free(p); A) 5 6 B)
12、 2 5 C) 3 4 D) 程序错误第25题 (2.0分)有以下函数:fun(char *a,char *b) while(*a!=0)&(*b!=0)&(*a=*b) a+; b+; return (*a*b); 该函数的功能是(D ).A:计算a和b所指字符串的长度之差B:将b所指字符串复制到a所指字符串中C:将b所指字符串连接到a所指字符串后面D:比较a和b所指字符串的大小第26题 (2.0分)有以下程序:fun(char p 10) int n=0,i; for(i=0;i7;i+) if(pi0= T ) n+; return n;main( ) char str 10=Mon,T
13、ue,Wed,Thu,Fri,Sat,Sun; printf(%dn,fun(str);程序执行后的输出结果是( B ).A:1B:2C:3D:0第27题 (2.0分)有以下程序:main( ) char str10=China,Beijing,*p=str; printf(%sn,p+10); 程序运行后的输出结果是( B ).A:ChinaB:BeijingC:ngD:ing第28题 (2.0分)有以下程序:#define f(x) (x*x)main( ) int i1, i2; i1=f(8)/f(4) i2=f(4+4)/f(2+2) printf(%d,%dn,i1,i2);程序运
14、行后的输出结果是( C ).A:64, 28B:4, 4C:4, 3D:64, 64第29题 (2.0分)有以下程序: 结果是(A)void change(int k ) k0=k5; main( ) int x10=1,2,3,4,5,6,7,8,9,10,n=0; while(n=4) change(&xn); n+; for(n=0;n5;n+) printf(%d,xn); printf(n); A) 678910 B) 13579 C) 12345 D) 62345A:678910B:13579C:12345D:62345第30题 (2.0分)在以下程序中,能够通过调用函数fun(
15、),使main( )函数中的指针变量p指向一个合法的整型单元的是(C ).A:main( )int *p;fun(p); int fun(int *p) int s;p=&s; B:main( ) int *p; fun(&p);int fun(int *p) int s;*p=&s; C:#include main( ) int *p; fun(&p); int fun(int *p) *p=(int*)malloc(2); D:#include main( ) int *p; fun(p); int fun(int *p) p=(int*)malloc(sizeof(int); 二、程序填
16、空 共1题 (共计10分)第1题 (10.0分)【程序填空】功能:计算平均成绩并统计90分以上人数。main() int n,m;float grade,average; /*SPACE*/ average=n=m=【?】; /此处为: 0 while(1) /*SPACE*/ 【?】(%f,&grade); /此处为: scanf if(grade0) break; n+; average+=grade; /*SPACE*/ if(grade90)【?】; /此处为:break m+; if(n) printf(%.2f%dn,average/n,m);三、程序改错 共1题 (共计10分)第
17、1题 (10.0分)【程序改错】功能:首先把b所指字符串中的字符按逆序存放, 然后将a所指字 符串中的字符和b所指字符串中的字符,按排列的顺序交叉 合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如:当a所指字符串中的内容为“abcdefg”,b所指字符串中的 内容为“1234”时,c所指数组中的内容应该为“a4b3c2d1 efg”;而当a所指字符串中的内容为“1234”,b所指字符 串中的内容为“abcdefg”时,c所指数组中的内容应该为 “1g2f3e4dcba”。#include #include #include void fun( char *a, char *b, c
18、har *c ) int i , j; char ch; i = 0; j = strlen(b)-1; /*FOUND*/ while ( i j ) /此处 改为 ch = bi; bi = bj; bj = ch; i+; j-; /*FOUND*/ while ( *a &*b ) / 此处&改为 |(逻辑或) if ( *a ) *c = *a; c+; /*FOUND*/ a+; /此处a+ if ( *b ) *c = *b; c+; b+; *c = 0;main() char s1100,s2100,t200; clrscr(); printf(nEnter s1 strin
19、g : ); scanf(%s,s1); printf(nEnter s2 string : ); scanf(%s,s2); fun( s1, s2, t ); printf(nThe result is : %sn, t );四、程序设计 共1题 (共计20分)第1题 (20.0分)【程序设计】功能:判断一个整数w的各位数字平方之和能否被5整除, 可以被5整除则返回1,否则返回0。#include stdio.h#includeconio.hint fun(int w) /*Program*/ int s=0,m=w; while(m) s+=(m%10)*(m%10);m/=10; if
20、 (s%5=0) return 1; else return 0; /* End */main() int m; printf(Enter m: ); scanf(%d, &m); printf(nThe result is %dn, fun(m); yzj(); getch();yzj() FILE *IN,*OUT; int c ; int t; int o; IN=fopen(in.dat,r); if(IN=NULL) printf(Read File Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write File Error); for(c=1;c=5;c+) fscanf(IN,%d,&t); o=fun(t); fprintf(OUT,%dn,o); fclose(IN); fclose(OUT);