c语言试题及答案_第1页
c语言试题及答案_第2页
c语言试题及答案_第3页
c语言试题及答案_第4页
c语言试题及答案_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、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)

2、 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

3、) fun( 10 , 12.5 ); 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. 当对两个字符串进行比较时,应该使用的函数是

4、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,bNN; B)int a12=1,3; C)int c2= 1,2,3,4; D)in

5、t d32=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 b5,*p=b; ,则正确的赋值语句是A)b=“abcd” ; B)*b=“abcd”; C) p=“abcd”; D)*p=“abcd”;16. 用数组名作为函数调用时的实参,则实际传递给形参的是A)数组的第一个元素值 B)数组中全部元素值C)数组的首地址 D)数组的元素个数17. 以下叙述中不正确的是A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个

6、函数内定义的变量只在本函数范围内有效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 c8= "test"; int i; 则下面的输出函数调用中错误的是A) printf("%s",c); B) for(i=0

7、;i<8;i+) printf("%c",ci);C) puts(c) D) for(i=0;i<8;i+) puts(ci);21. 若有以下定义:char s20= "programming",*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="

8、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() i

9、nt x=1,2,3; int s,i,*p=x; s=1; for(i=0;i<3;i+) s*=*(p+i); printf(“%dn”,s);答案62#include <stdio.h>char fun(char *s)if( *s >= ¢a¢ && *s <= ¢z¢ ) *s=*s-32;return *s;void main()char a20="Welcome",*p,ch;for(p=a;*p!=¢0¢p+)ch=fun(p);putchar(ch);

10、答案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

11、;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=%dn”,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; print

12、f("x=%d, y=%dn",x,y); 运行结果:x=8,y=47 #include <stdio.h>void main() char x="language"char *ptr=x;while(*ptr) printf("%cn",*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(“%dn”,s);

13、运行结果:2109#include <stdio.h>int fun(int x) return(x>0 ? x : -x);void main() int a=12; printf(“%d, %dn”,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

14、( i<20 ) for(;)if(i%10)= =0) break;else i- -; i+=11; a+=i; printf("%dn",a);3212#include <stdio.h>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;j<=3;j+)if(aij>max)max=aij;row=i;colum=j;printf("max=%d,row=%d,col

15、um=%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+=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 <stdio.h>void swap(int b) int *p,*p1,*p2; p1=&a

16、mp;b0 ;p2=&b1;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 <stdio.h>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 <stdio.h>vo

17、id main() int a10,*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=%dn”,*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(

18、“x=%d, y=%dn”,x ,y); 运行结果:x=8,y=418 #include <stdio.h>#define N 3void zz(int xNN) int i,j,t;for(i=0;i<N;i+)for(j=0;j<i;j+) t=xij; xij=xji; xji=t; void main() int strNN=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”,strij) ;printf("n") ; 运行结果:

19、1 4 7 2 5 83 6 919#include <stdio.h>void main ( ) char a20= "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,%dn”,a,b); a=1;b=2; void main() int a=5,

20、b=7 ; f( );printf(“%d,%dn”, 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("%3dn" , fun(2+fun(d) ; 运行结果:5,12,1222#include <stdio.h>void main() char x="123456789",*p=x ; i

21、nt i=0; while(*p) if(i%2=0) *p='*; p+; i+; puts(x);运行结果:*2*4*6*8*三、编程题1编程输入实数x,计算下面函数的值,并输出y值。 x 2 x<1 y= 3x-1 1 £ x £ 10 x > 10程序结果:#include <stdio.h>void main() int x,y; scanf(“%d”,&x); if(x<1) y=x*x; else if(x>=1&&x<=10)y=3*x-1; else y=x/5; printf(“x

22、=%d,y=%dn”,x,y); 2编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,并输出统计结果。程序结果:#include<stdio.h>#include<conio.h>void main()                     /*主函数*/char c;      

23、;                      /*定义变量*/int m=0,n=0,a=0,b=0;printf("请输入任意字符串.n");   /*输入提示部分,提示输入*/while(c=getchar()!='n')       /*循环语句,将由键盘输入的非&#

24、39;n'字符赋值给c*/   if(c>=65&&c<=90)|(c>=97&&c<=122)    /*第一个选择语句,统计英文字符个数*/       m=m+1;            else if(c=32)         

25、0;                /*第二个选择语句,统计空格字符的个数*/        n=n+1;      else if(c>=48&&c<=57)             

26、60;          /*第三个选择语句,统计数字字符的个数*/       a=a+1;      else                         

27、60;              /*统计其他字符的个数*/    b=b+1;printf("%d%d%d%d",m,a,n,b);                    /*输出最后统计结果*/  

28、0; getch();                                    /*输出结果后屏幕停留*/3. 编写打印如下图形的程序 (必须用循环语句实现) * * * * * * * * * * *程序结果:#includ

29、e<stdio.h> main( )int n,i,j;printf(“n=%dn”);scanf(“%d”,&n);for(i=0;i<n;i+) for(j=0;j<n-1-i;j+) Printf(“ ”); for(j=0;j<i+1;j+) Printf(“*”); printf(“n”);4. 编写程序,从键盘上任意输入20个整数,存入一个数组中,然后输出这些数中最大数及其下标以及最小数及其下标程序结果:#include<stdio.h> void main( )int a20,i,max,min,num1,num2;for(i=0

30、;i<20;i+)printf(“input the number%d:”,i);scanf(“%d”,&ai);printf(“n”);for(i=0;i<20;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 <s

31、tdio.h>#define N 11void main() int i,j,aNN; /*数组为11行11列,0行0列不用*/ for(i=1;i<N;i+) ai1=1; /*使第1列元素的值为1*/ aii=1; /*使对角线元素的值为1*/ for(i=3;i<N;i+) /*从第3行开始处理*/ for(j=2;j<=i-1;j+) aij=ai-1j-1+ai-1j; for(i=1;i<N;i+) /*输出数组各元素的值*/ for(j=1;j<=i;j+) printf(“%6d”,aij); printf(“n”); printf(“n”)

32、; 6求分段函数的值 程序结果:#include<stdio.h> #inclde<math.h>main() double x ,y; scanf(“%lf”,&x); if(x<0) y=log(x*x); else if(x=0) y=1;else y=1+exp(x);printf(“Y=%lf”,y);7编程打印以下图形 (要求用循环控制语句实现) & & & & & & & & & & & & & & & & &

33、; & & & &程序结果#include<stdio.h>main()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 2

34、4A二、读程序写出程序执行结果:1、62、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 <stdio.h>void main() int x,

35、y; scanf(“%d”,&x); if(x<1) y=x*x; else if(x>=1&&x<=10)y=3*x-1; else y=x/5; printf(“x=%d,y=%dn”,x,y); 2. #include<stdio.h>#include<conio.h>void main()                   

36、0; /*主函数*/char c;                            /*定义变量*/int m=0,n=0,a=0,b=0;printf("请输入任意字符串.n");   /*输入提示部分,提示输入*/while(c=getchar()!='n')&#

37、160;      /*循环语句,将由键盘输入的非'n'字符赋值给c*/   if(c>=65&&c<=90)|(c>=97&&c<=122)    /*第一个选择语句,统计英文字符个数*/       m=m+1;            else if(c=32) 

38、                         /*第二个选择语句,统计空格字符的个数*/        n=n+1;      else if(c>=48&&c<=57)     

39、;                   /*第三个选择语句,统计数字字符的个数*/       a=a+1;      else                              

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论