《c语言试题及答案(19页).doc》由会员分享,可在线阅读,更多相关《c语言试题及答案(19页).doc(19页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-c语言试题及答案-第 18 页C语言课程综合复习资料一、单选题1. 在C语言中,字符型数据在内存中的存储形式是 A)原码 B)补码 C)反码 D)ASCII码2. 在C语言中,十进制数47可等价地表示为A) 2f B) 02f C) 57 D) 057 3. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为 A) 0 B) 1 C) 2 D) 34. 设有定义语句:char str20=,Beijing,中国石油大学,*p=str; 则printf(%dn,strlen(p+20); 输出结果是A)10 B) 6 C) 0 D) 205. 已定义以下函数: fun(i
2、nt *p) return *p; 该函数的返回值是 A)不确定的值 B)形参p所指存储单元中的值C)形参p中存放的值 D)形参p的地址值6. C语言中,函数返回值的类型是由A)return语句中的表达式类型决定B)调用函数的主调函数类型决定C)调用函数时的临时类型决定 D)定义函数时所指定的函数类型决定7. 有以下函数定义: void fun( int n , double x ) 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是 A) fun( int y , double m ); B) k=fun( 10 , 12.5 );C) fun( 10 , 12.5 );
3、D) void fun( 10 , 12.5 );8. 以下选项中不能正确赋值的是A) char b=H,e,l,l,o,!;B) char b10;b=Hello!;C) char b10= Hello!;D) char *str=Hello!;9. 若有以下定义:char s20= programming,*ps=s;则不能代表字符g的表达式是A) ps+3 B)s3 C) ps3 D) ps+=3,*ps10. 当对两个字符串进行比较时,应该使用的函数是A) strcat B) strcmp C) strcpy D) strlen11. 若i为整型变量,则以下循环的次数是for(i=2;
4、i=0;)printf(“%d”,i-); A) 无限次 B) 0次 C) 1次 D) 2次12. 以下关于数组的描述正确的是A) 数组大小固定,但是可以有不同类型的数组元素B) 数组大小可变,但是所有数组元素的类型必须相同C) 数组大小固定,所有元素的类型必须相同D) 数组大小可变,可以有不同类型的数组元素13. 以下能正确定义数组并正确赋初值的语句是 A)int N=5,bNN; B)int a12=1,3; C)int c2= 1,2,3,4; D)int d32=1,2,34;14. 设有定义 int a =1,5,7,9,11,13, *p=a+3; 则*(p-2) , *(a+4)
5、 的值是A)5 11 B)1 9 C)5 9 D)有错误15. 已知char b5,*p=b; ,则正确的赋值语句是A)b=“abcd” ; B)*b=“abcd”; C) p=“abcd”; D)*p=“abcd”;16. 用数组名作为函数调用时的实参,则实际传递给形参的是A)数组的第一个元素值 B)数组中全部元素值C)数组的首地址 D)数组的元素个数17. 以下叙述中不正确的是A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量在本函数范围内有效18. 当对两个字符串进行比较时,应该使用的
6、函数是A) strcat B) strcmp C) strcpy D) strlen19. 有如下定义:long m;char c;float x;double y;则表达式c+m*x/y的值的类型是A) long B) char C) float D) double20. 假设已定义 char c8= test; int i; 则下面的输出函数调用中错误的是A) printf(%s,c); B) for(i=0;i8;i+) printf(%c,ci);C) puts(c) D) for(i=0;i8;i+) puts(ci);21. 若有以下定义:char s20= programming
7、,*ps=s;则不能代表字符g的表达式是A) ps+3 B) s3 C) ps3 D) ps+=3,*ps22. 以下选项中不能正确赋值的是A) char b=H,e,l,l,o,!;B) char b10;b=Hello!;C) char b10= Hello!;D) char *str=Hello!;23. 有以下函数定义: void fun( int n , double x ) 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是_。 A) fun( int y , double m ); B) k=fun( 10 , 12.5 );C) fun( 10 , 12.5
8、); D) void fun( 10 , 12.5 );24从变量的作用域来分,可分为全局变量和局部变量,形参是A)局部变量 B)全局变量 C) 静态变量 D) 动态变量二、读程序,写出程序的执行结果1. #include void main() int x=1,2,3; int s,i,*p=x; s=1; for(i=0;i3;i+) s*=*(p+i); printf(“%dn”,s);答案62#include char fun(char *s)if( *s = a & *s = z ) *s=*s-32;return *s;void main()char a20=Welcome,*p,
9、ch;for(p=a;*p!=0;p+)ch=fun(p);putchar(ch);答案WELCOME3#include void main()int x=26587,x1,r,sum=0;x1=x;while(x0)r=x%10;sum+=r;x/=10;printf( Sum of the digits in %d is %d, x1,sum);答案Sum of the digits in 26587 is 284#include int fun(int x)int y=1;static int z=4;z+=1;+y;return(x+y+z);void main()int i;for(
10、i=1;i=3;i+)printf(%3d,fun(i);8 10 125#include void main() int x=3,y=4; int j;for(j=1 ; y0 ; y - ) j=j*x;printf(“j=%dn”,j);运行结果:j=816#include void main() int x,y; for(y=1,x=1; y=8) break; if(x%2=1) x+=5; continue ; x-=3; printf(x=%d, y=%dn,x,y);运行结果:x=8,y=47 #include void main() char x=language;char
11、*ptr=x;while(*ptr) printf(%cn,*ptr-32); ptr+;运行结果:LANGUAGE8. #include void main() int x=5,6,7; int s=1,i,*p=x; for(i=0;i3;i+) s*=*(p+i); printf(“%dn”,s);运行结果:2109#include int fun(int x) return(x0 ? x : -x);void main() int a=12; printf(“%d, %dn”,a,fun(a) ;运行结果:12,1210 #include void ex( ) static int x
12、=3 ; -x ; printf(“%d”,x) ; void main ( ) ex( ); ex( ); 运行结果:2111. #include void main() int i=0,a=0;while( i20 ) for(;)if(i%10)= =0) break;else i- -; i+=11; a+=i; printf(%dn,a);3212#include void main()int a34=1,2,3,4,9,7,10,6,-1,8,-5,5;int i,j,row=0,colum=0,max;max=a00;for(i=0;i=2;i+)for(j=0;jmax)max
13、=aij;row=i;colum=j;printf(max=%d,row=%d,colum=%d,max,row,colum);max=10 ,row=1,colum=213. #include int f(int b, int m,int n) int i,s=0; for(i=m;in;i+=2) s+=bi ; return s; void main() int x, a=1,2,3,4,5,6,7,8,9,10; x=f(a,3,8); printf(%dn,x); 1814#include void swap(int b) int *p,*p1,*p2; p1=&b0 ;p2=&b1
14、;p=p1; p1=p1+1; p2=p;void main() int a=5,9;printf(%d,%dn,*a,*(a+1); swap(a); printf(%d,%dn,a0,a1);5,915. #include int b=3;int fun(int *a) b+=*a; return(b);void main() int a=2, b=2; b+=fun(&a);printf(“%dn”,b); 716. #include void main() int a10,*p,*s,i; for(i=0;i10;i+) scanf(%d”,a+i); for(p=a,s=a;p-a*
15、s)s=p; printf(“max=%d,index=%dn”,*s, s-a);简述上列程序完成的功能:查找数组中最大值并记录元素下标17 #include void main() int x,y; for(y=1,x=1; y=8) break;if(x%2=1) x+=5; continue ; x-=3; printf(“x=%d, y=%dn”,x ,y); 运行结果:x=8,y=418 #include #define N 3void zz(int xNN) int i,j,t;for(i=0;iN;i+)for(j=0;ji;j+) t=xij; xij=xji; xji=t;
16、 void main() int strNN=1,2,3,4,5,6,7,8,9, i,j; zz(str);for(i=0;iN;i+) for(j=0;jN;j+) printf(“%3d”,strij) ;printf(n) ; 运行结果:1 4 7 2 5 83 6 919#include void main ( ) char a20= abcXYZ, c ; int i, j;j= strlen(a)-1 ; for (i=0; ji; i+,j-) c=*(a+i); *(a+i)=*(a+j); *(a+j)=c; puts(a); 运行结果:ZXYcba20 #include
17、int a=100,b=200;void f( ) printf(“%d,%dn”,a,b); a=1;b=2; void main() int a=5,b=7 ; f( );printf(“%d,%dn”, a,b) ; 运行结果:5,721 #include int d=1 ;int fun(int p) static int d=3 ; d+=p; printf(%3d , d) ; return(d) ; void main( ) printf(%3dn , fun(2+fun(d) ; 运行结果:5,12,1222#include void main() char x=1234567
18、89,*p=x ; int i=0; while(*p) if(i%2=0) *p=*; p+; i+; puts(x);运行结果:*2*4*6*8*三、编程题1编程输入实数x,计算下面函数的值,并输出y值。 x 2 x 10程序结果:#include void main() int x,y; scanf(“%d”,&x); if(x=1&x=10)y=3*x-1; else y=x/5; printf(“x=%d,y=%dn”,x,y);2编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,并输出统计结果。程序结果:#include#includevoid m
19、ain() /*主函数*/char c; /*定义变量*/int m=0,n=0,a=0,b=0;printf(请输入任意字符串.n); /*输入提示部分,提示输入*/while(c=getchar()!=n) /*循环语句,将由键盘输入的非n字符赋值给c*/ if(c=65&c=97&c=48&c=57) /*第三个选择语句,统计数字字符的个数*/ a=a+1; else /*统计其他字符的个数*/ b=b+1;printf(%d%d%d%d,m,a,n,b); /*输出最后统计结果*/getch(); /*输出结果后屏幕停留*/3. 编写打印如下图形的程序 (必须用循环语句实现) 程序结果
20、:#include main( )int n,i,j;printf(“n=%dn”);scanf(“%d”,&n);for(i=0;in;i+) for(j=0;jn-1-i;j+) Printf(“ ”); for(j=0;ji+1;j+) Printf(“*”); printf(“n”);4. 编写程序,从键盘上任意输入20个整数,存入一个数组中,然后输出这些数中最大数及其下标以及最小数及其下标程序结果:#include void main( )int a20,i,max,min,num1,num2;for(i=0;i20;i+)printf(“input the number%d:”,i
21、);scanf(“%d”,&ai);printf(“n”);for(i=0;i20;i+) If(ai= a0) min=ai;Num1=i; Else max=ai;num2=i;printf(“min=%d,num1=%dn”,min,num1);printf(“max=%d,num2=%dn”,max,num2);5. 编程打印下列的杨辉三角形。(设8行) 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 程序结果:#include #define N 11void main() int i,j,aNN; /*数组为11行11列,0行0列不用*/ f
22、or(i=1;iN;i+) ai1=1; /*使第1列元素的值为1*/ aii=1; /*使对角线元素的值为1*/ for(i=3;iN;i+) /*从第3行开始处理*/ for(j=2;j=i-1;j+) aij=ai-1j-1+ai-1j; for(i=1;iN;i+) /*输出数组各元素的值*/ for(j=1;j=i;j+) printf(“%6d”,aij); printf(“n”);printf(“n”); 6求分段函数的值 程序结果:#include #incldemain() double x ,y; scanf(“%lf”,&x); if(x0) y=log(x*x); el
23、se if(x=0) y=1;else y=1+exp(x);printf(“Y=%lf”,y);7编程打印以下图形 (要求用循环控制语句实现)程序结果#includemain()int i,j;for(i=1;i=6;i+)for(j=1;j=6-i;j+)printf( );for(j=1;j=i;j+)printf(& );printf(n);C语言课程综合复习资料答案一、单选题:1D 2D 3A 4A 5D 6B 7C 8B 9A 10B 11B 12C 13D 14A 15C 16C 17D 18B 19D 20D 21A 22B 23C 24A二、读程序写出程序执行结果:1、62、
24、WELCOME3、Sum of the digits in 26587 is 284、8 10 125、j=81 6、x=8,y=4 7、LANGUAGE8、210 9、12,12 10、2111、32 12、max=10,row=1,colum=2 13、18 14、5,9 15、7 16、查找数组中最大值并记录元素下标17、x=8,y=418、1 4 7 19、ZYXcba2 5 8 20、5,73 6 9 21、5,12,1222、*2*4*6*8*三、编程题1、#include void main() int x,y; scanf(“%d”,&x); if(x=1&x=10)y=3*x
25、-1; else y=x/5; printf(“x=%d,y=%dn”,x,y);2. #include#includevoid main() /*主函数*/char c; /*定义变量*/int m=0,n=0,a=0,b=0;printf(请输入任意字符串.n); /*输入提示部分,提示输入*/while(c=getchar()!=n) /*循环语句,将由键盘输入的非n字符赋值给c*/ if(c=65&c=97&c=48&c=57) /*第三个选择语句,统计数字字符的个数*/ a=a+1; else /*统计其他字符的个数*/ b=b+1;printf(%d%d%d%d,m,a,n,b);
26、 /*输出最后统计结果*/getch(); /*输出结果后屏幕停留*/3. #include main( )int n,i,j;printf(“n=%dn”);scanf(“%d”,&n);for(i=0;in;i+) for(j=0;jn-1-i;j+) Printf(“ ”); for(j=0;ji+1;j+) Printf(“*”); printf(“n”);4. #include void main( )int a20,i,max,min,num1,num2;for(i=0;i20;i+)printf(“input the number%d:”,i);scanf(“%d”,&ai);p
27、rintf(“n”);for(i=0;i20;i+) If(ai= a0) min=ai;Num1=i; Else max=ai;num2=i;printf(“min=%d,num1=%dn”,min,num1);printf(“max=%d,num2=%dn”,max,num2);5. #include #define N 11void main() int i,j,aNN; /*数组为11行11列,0行0列不用*/ for(i=1;iN;i+) ai1=1; /*使第1列元素的值为1*/ aii=1; /*使对角线元素的值为1*/ for(i=3;iN;i+) /*从第3行开始处理*/ for(j=2;j=i-1;j+) aij=ai-1j-1+ai-1j; for(i=1;iN;i+) /*输出数组各元素的值*/ for(j=1;j=i;j+) printf(“%6d”,aij); printf(“n”);printf(“n”);6.7略