当前位置:文档之家› c语言试题及答案

c语言试题及答案

《C语言》课程综合复习资料一、单选题1. 在C语言中,字符型数据在存中的存储形式是A)原码 B)补码 C)反码 D)ASCII码2. 在C语言中,十进制数47可等价地表示为A) 2f B) 02f C) 57 D) 0573. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为A) 0 B) 1 C) 2 D) 34. 设有定义语句:char str[][20]={,"Beijing","中国石油大学"},*p=str;则printf("%d\n",strlen(p+20)); 输出结果是A)10 B) 6 C) 0 D) 205. 已定义以下函数: fun(int *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 ); D) void fun( 10 , 12.5 );8. 以下选项中不能正确赋值的是A) char b[]={′H′,′e′,′l′,′l′,′o′,′!′};B) char b[10];b="Hello!";C) char b[10]= "Hello!";D) char *str="Hello!";9. 若有以下定义:char s[20]= "programming",*ps=s;则不能代表字符g的表达式是A) ps+3 B)s[3] C) ps[3] D) ps+=3,*ps10. 当对两个字符串进行比较时,应该使用的函数是A) strcat B) strcmp C) strcpy D) strlen11. 若i为整型变量,则以下循环的次数是for(i=2;i==0;)printf(“%d”,i--);A)无限次 B) 0次 C) 1次 D) 2次12. 以下关于数组的描述正确的是A)数组大小固定,但是可以有不同类型的数组元素B)数组大小可变,但是所有数组元素的类型必须相同C)数组大小固定,所有元素的类型必须相同D)数组大小可变,可以有不同类型的数组元素13. 以下能正确定义数组并正确赋初值的语句是A)int N=5,b[N][N]; B)int a[1][2]={{1},{3}};C)int c[2][]= {{1,2},{3,4}}; D)int d[3][2]={{1,2},{34}};14. 设有定义 int a[ ]={1,5,7,9,11,13}, *p=a+3; 则*(p-2) , *(a+4) 的值是A)5 11 B)1 9 C)5 9 D)有错误15. 已知char b[5],*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. 当对两个字符串进行比较时,应该使用的函数是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 c[8]= "test"; int i;则下面的输出函数调用中错误的是A) printf("%s",c); B) for(i=0;i<8;i++) printf("%c",c[i]);C) puts(c) D) for(i=0;i<8;i++) puts(c[i]);21. 若有以下定义:char s[20]= "programming",*ps=s;则不能代表字符g的表达式是A) ps+3 B) s[3] C) ps[3] D) ps+=3,*ps22. 以下选项中不能正确赋值的是A) char b[]={′H′,′e′,′l′,′l′,′o′,′!′};B) char b[10];b="Hello!";C) char b[10]= "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 ); D) void fun( 10 , 12.5 );24.从变量的作用域来分,可分为全局变量和局部变量,形参是A)局部变量 B)全局变量 C)静态变量 D)动态变量二、读程序,写出程序的执行结果1. #include <stdio.h>void main(){ int x[]={1,2,3};int s,i,*p=x;s=1;for(i=0;i<3;i++)s*=*(p+i);printf(“%d\n”,s);}答案62. #include <stdio.h>char fun(char *s){ if( *s >= 'a' && *s <= 'z' )*s=*s-32;return *s;}void main(){ char a[20]="Welcome",*p,ch;for(p=a;*p!='\0';p++){ ch=fun(p);putchar(ch);}}答案WELCOME3. #include <stdio.h>void main(){ int x=26587,x1,r,sum=0;x1=x;while(x>0){ 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 <stdio.h>int fun(int x){ int y=1;static int z=4;z+=1;++y;return(x+y+z);}void main(){ int i;for(i=1;i<=3;i++)printf("%3d",fun(i));}8 10 125.#include <stdio.h>void main(){ int x=3,y=4;int j;for(j=1 ; y>0 ; y -- ) j=j*x;printf(“j=%d\n”,j);}运行结果:j=816.#include <stdio.h>void main(){ int x,y;for(y=1,x=1; y<=20;y++){ if(x>=8) break;if(x%2==1){ x+=5; continue ; } x-=3;}printf("x=%d, y=%d\n",x,y);}运行结果:x=8,y=47. #include <stdio.h>void main(){ char x[]="language";char *ptr=x;while(*ptr){ printf("%c\n",*ptr-32);ptr++;}}运行结果:LANGUAGE8. #include <stdio.h>void main(){ int x[]={5,6,7};int s=1,i,*p=x;for(i=0;i<3;i++)s*=*(p+i);printf(“%d\n”,s);}运行结果:2109.#include <stdio.h>int fun(int x){ return(x>0 ? x : -x);}void main(){ int a=12;printf(“%d, %d\n”,a,fun(a)) ;}运行结果:12,1210. #include <stdio.h>void ex( ){ static int x=3 ;--x ;printf(“%d”,x) ;}void main ( ){ ex( );ex( );}运行结果:2111. #include <stdio.h>void main(){ int i=0,a=0;while( i<20 ){ for(;;)if((i%10)= =0) break;else i- -;i+=11;a+=i;}printf("%d\n",a);}3212.#include <stdio.h>void main(){ int a[3][4]={{1,2,3,4},{9,7,10,6},{-1,8,-5,5}};int i,j,row=0,colum=0,max;max=a[0][0];for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>max){ max=a[i][j];row=i;colum=j;}printf("max=%d,row=%d,colum=%d",max,row,colum);}max=10 ,row=1,colum=213. #include <stdio.h>int f(int b[], int m,int n){ int i,s=0;for(i=m;i<n;i+=2) s+=b[i] ;return s;}void main(){ int x, a[]={1,2,3,4,5,6,7,8,9,10};x=f(a,3,8);printf("%d\n",x);}1814.#include <stdio.h>void swap(int b[]){ int *p,*p1,*p2;p1=&b[0] ;p2=&b[1];p=p1; p1=p1+1; p2=p;}void main(){ int a[]={5,9};printf("%d,%d\n",*a,*(a+1));swap(a);printf("%d,%d\n",a[0],a[1]);}5,915. #include <stdio.h>int b=3;int fun(int *a){ b+=*a;return(b);}void main(){ int a=2, b=2;b+=fun(&a);printf(“%d\n”,b);}716. #include <stdio.h>void main(){ int a[10],*p,*s,i;for(i=0;i<10;i++) scanf(%d”,a+i);for(p=a,s=a;p-a<10;p++) if(*p>*s)s=p;printf(“max=%d,index=%d\n”,*s, s-a);}简述上列程序完成的功能:查找数组中最大值并记录元素下标17. #include <stdio.h>void main(){ int x,y;for(y=1,x=1; y<=20;y++){ if(x>=8) break;if(x%2==1){ x+=5; continue ; }x-=3;}printf(“x=%d, y=%d\n”,x ,y);}运行结果:x=8,y=418. #include <stdio.h>#define N 3void zz(int x[N][N]){ int i,j,t;for(i=0;i<N;i++)for(j=0;j<i;j++){ t=x[i][j]; x[i][j]=x[j][i]; x[j][i]=t; } }void main(){ int str[N][N]={1,2,3,4,5,6,7,8,9}, i,j;zz(str);for(i=0;i<N;i++){ for(j=0;j<N;j++) printf(“%3d”,str[i][j]) ;printf("\n") ;}}运行结果:1 4 72 5 83 6 919.#include <stdio.h>void main ( ){ char a[20]= "abcXYZ", c ;int i, j;j= strlen(a)-1 ;for (i=0; j>i; i++,j--){ c=*(a+i); *(a+i)=*(a+j); *(a+j)=c; } puts(a);}运行结果:ZXYcba20. #include <stdio.h>int a=100,b=200;void f( ){ printf(“%d,%d\n”,a,b);a=1;b=2;}void main(){ int a=5,b=7 ;f( );printf(“%d,%d\n”, a,b) ;}运行结果:5,721. #include <stdio.h>int d=1 ;int fun(int p){ static int d=3 ;d+=p;printf("%3d" , d) ;return(d) ;}void main( ){ printf("%3d\n" , fun(2+fun(d))) ;} 运行结果:5,12,1222.#include <stdio.h>void main(){ char x[]="123456789",*p=x ;int i=0;while(*p){ if(i%2==0) *p='*’;p++; i++;}puts(x);}运行结果:*2*4*6*8*三、编程题1.编程输入实数x ,计算下面函数的值,并输出y 值。

相关主题