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

下载本文档

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

文档简介

考试题型考试题型 一、单项选择题(30 分) 二、填空题 (20 分) 三、阅读程序写结果(20 分) 四、编程序题(30) 复习题一复习题一 一、一、 选择题选择题 1下列说法中正确的是 。 AC 语言程序由主函数和 0 个或多个函数组成 BC 语言程序由主程序和子程序组成 CC 语言程序由子程序组成 DC 语言程序由过程组成 2执行语句“x=(a=3,b=a-)”后,x,a,b 的值依次为 。 A3,3,2 B3,2,2 C3,2,3 D2,3,2 3设有 int i=010,j=10;则 printf(%d,%dn,+i,j-); 的输出的是 。 A11,10 B9,10 C010,9 D10,9 4设 a、b 为字符型变量,执行 scanf(a=%c,b=%c, 后使 a 为A, b 为B,从键盘上的正确输 入是 。 AA B BA,B CA=A,B=B Da=A,b=B 5已知 int x=12, y=3;执行下述程序后,变量 x 的值是_。 do x/=y-;while(xy); A1 B2 C3 D程序运行有错误 6C 语言中 while 和 do-while 循环的主要区别是 。 Ado-while 的循环体至少无条件执行一次 Bwhile 的循环控制条件比 do-while 的循环控制条件严格 Cdo-while 允许从外部转到循环体内 Ddo-while 的循环体不能是复合语句 7设 x 和 y 均为 int 型变量,则执行下面的循环后,y 的值为 。 for (y=1,x=1;y=10 ) break; if (x%2=1) x+=5;continue; x - =3; A2 B4 C6 D8 8以下正确的说法是_。 A用户若需调用标准函数,调用前必须重新定义 B用户可以重新定义标准库函数,若如此,该函数将失去原有含义 C系统根本不允许用户重新定义标准函数 D用户若需要调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系 统自动去调 9若调用一个函数,且此函数中没有 return 语句,则关于该函数正确的说法是_ _。 A 没有返回值 B 能返回若干个系统默认值 欢迎下载2 C 能返回一个用户所希望的函数值 D 返回一个不确定的值 10已知函数定义如下: float fun1(int x,int y) float z; z=(float)x/y; return(z); 主调函数中有 int a=1,b=0;可以正确调用此函数的语句是_。 Aprintf(%f,fun1(a,b); Bprintf(%f,fun1( A1,12 B0,11C1,11 D0,12 13以下合法的数组定义是 。 Aint a3 =0,1,2,3,4,5; Bint a 3 =0,1,2,3,4; Cint a23=0,1,2,3,4,5,6; Dint a23=0,1,2,3,4,5,; 14函数调用:strcat(strcpy (str1,str2),str3); 的功能是 。 A将字符串 str1 复制到字符串 str2 中后再连接到字符串 str3 之后。 B将字符串 str1 连接到字符串 str2 之后再复制到字符串 str3 之后。 C将字符串 str2 复制到字符串 str1 中后再将字符串 str3 连接到字符串 str1 之后。 D将字符串 str2 连接到字符串 str1 之后再将字符串 str1 复制到字符串 str3 中。 15设有二维数组定义如下,则不正确的数组元素引用是 。 int a34 =1,2,3,4,5,6,7,8,9,10,11,12; Aa23 Baa001 Ca7 Da2c-a 16若用数组名作为函数调用时的实参,则实际上传递给形参的是 。 A数组首地址 B数组的第一个元素值 C数组中全部元素的值 D数组元素的个数 17以下对指针变量进行操作的语句,正确的选项是 。 Aint *p,*q; q=p; Bint a,*p,*q; q= p=*q; Cint a=b=0,*p; p= b=*p; Dint a=20,*p,*q= p=q; 18若有以下定义和语句: int s45,(*ps)5;ps=s; 则对 s 数组元素的正确引用形式是 。 Aps+1 B*(ps+3) Cps02 D*(ps+1)+3 19当说明一个共用体变量时系统分配给它的存储容量是 。 A共用体中最后一个成员所需的存储容量 B共用体中第一个成员所需的存储容量 C成员中占存储量最大者所需的存储容量 D各成员所需存储容量的总和 20有定义如下: 欢迎下载3 struct student int age; char num8; stu3=20,200401,21,200402,10,200403; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是 。 A(p+)-num Bp-num C(*p).num Dstu3.age 二、填空题二、填空题 1设 a=3,b=2,c=1,则 ab 的值为 ,abc 的值为 。 2若 w, x, y, z, m 均为 int 型变量,则执行下面程序段后的 m 值是 。 w= 1; x = 2; y= 3; z=4; m=(wy)?w:x; m= (my)? m:y; m=(mz)?m:Z; 3下面程序的输出结果是_。 #include main() int a=1,b=0; do switch(a) case 1: b=1;break; case 2: b=2;break; default : b=0; b=a+b; while(!b); printf(a=%d,b=%d,a,b); 4下面程序的输出结果是_。 #include main() int x,i; for(i=1;i=100;i+) x=i; if(+x%2=0) if(+x%3=0) if(+x%7=0) printf(%d ,x); 5下面程序的输出结果是_。 #include 欢迎下载4 int func(int a,int b) int c; c=a+b; return(c); void main() int x=6,y=7,z=8,r; r=func(x-,y+,x+y),z-); printf(%dn,r); 6下面程序的输出结果是_。 #include void main() int x=1; void f1(),f2(); f1( ); f2(x); printf(%dn,x); void f1(void) int x=3; printf(%d ,x); void f2(x) int x; printf(%d ,+x); 7程序中有定义: #define S(r) r/r int a=4,b=3,area; 则表达式 area=S(a+b)的值为_。 三、程序完善题三、程序完善题 1以下程序的功能是计算分段函数 y 的值。请完善程序。 #include void main() int x,c,m; float y; scanf(“%d”, if( (1) ) c=-1; 4020205 . 0 201010 100 00 xx x xx x y 欢迎下载5 else c= (2) ; switch( c) case 1: y=0; break; case 0: y=x; break; case 1: y=10; break; case 2: case 3: y=-0.5*x+20; break; default : y=-2; if( (3) ) printf(“y=%f”, y); else printf(“errorn”); 2有以下程序段: s=1.0; for(k=1;k=n;k+) s=s+1.0/(k*(k+1); printf(%fn,s); 填空完成下述程序,使之与上述程序的功能完全相同。 s=0.0; (1) ; k=0; do s=s+d; (2) ; d=1.0/(k*(k+1); while( (3) ); printf(%fn,s); 3根据以下嵌套的 if 语句说给条件,填写 switch 语句,使它完成相同的功能。 (假设 score 的取值在 1100 之间。 ) if 语句: if(score60) k=1; else if(score70) k=2; else if(score80) k=3; else if(score90) k=4; else if(score=100) k=5; switch 语句: switch( (1) ) (2) : k=1; break; case 6:k=2; break; case 7:k=3; break; case 8:k=4; break; (3) :k=5; 4输入 2 个整数,输出它们的最小公倍数和最大公约数。请完善程序。 欢迎下载6 #include void main( ) int m,n,gbs,gys; scanf((1)); for(gbs=m; (2) ; gbs=gbs+m); gys= (3) ; printf(“gbs=%dtgys=%dn”, gbs,gys); 5下面函数的功能是判断一个数是否为素数。请完善程序。 void f(int m) int m,i,k; k=_(1)_; for(i=2;i=_(2)_;i+) if(_(3)_)break; if(_(4)_)printf(“是素数”); else printf(“非素数”); 6一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。请完善 程序。 void fun(long x) long ge,shi,qian,wan; wan= (1) ; qian=_(2)_; shi=_(3)_; ge=x%10; if (_(4)_) printf(this number is a huiwenn); else printf(this number is not a huiwenn); 四、程序设计题四、程序设计题 1编写程序计算分段函数 y 值。 2编写程序,输入一个字符串,求该字符串的有效长度。要求不能使用系统函数。 3编写程序实现,将键盘输入的一个十进制整数转换为 2 进制数并输出。 参考答案:参考答案: 一、选择题一、选择题 12345678910 0 01 0 xe x xe y x x 欢迎下载7 ACBDDACBAD 11121314151617181920 DBBCCACCCD 二、填空题二、填空题 1、 1 0 2、 1 3、 a=1,b=2 4、 25 67 5、 21 6、 3 2 1 7、 7 三、程序完善题三、程序完善题 1、 x0 x/10 x40 2、 d=1 k+ k0) y=exp(-x); else if(x=0) y=1; else y=-exp(x); printf(“%f”,y); 2、 #define max 20; void main() char strmax; int len; scanf(“%s”,str); for(len=0;strlen!=0;len+) 欢迎下载8 ; printf(“%d”,len); 3、#include void main() unsigned n; char str10,t; int k,i,j; printf(“please input:”); scanf(“%u”, for(i=0;n!0;i+) stri=n%2+0; n/=2; stri=0; printf(“the result is :”); for(k=0,j=i-1;kdata.a Dp.data.a 二、填空题二、填空题 1设 a=3,b=2,c=1,则 ab 的值为 ,abc 的值为 。 2设 x 和 y 均为 int 型变量,且 x=1,y=2,则表达式 1.0+x/y 的值为 。 3以下程序段的输出结果是 。 int a=10,b=50,c=30; if(ab) a=b; b=c; c=a; printf(a=%d b=%d c=%dn,a,b,c); 4以下程序的输出结果是 。 #include void main() int x= 2,y=-1,z=2; if(xy) if(y0) z= 0; else z+ =1; printf(%dn,z); 欢迎下载11 5下面程序的输出结果是_。 #include int func(int a,int b) int c; c=a+b; return(c); void main() int x=6,y=7,z=8,r; r=func(x-,y+,x+y),z-); printf(%dn,r); 6下面程序的输出结果是_。 #include void main() int x=1; void f1(),f2(); f1( ); f2(x); printf(%dn,x); void f1(void) int x=3; printf(%d ,x); void f2(x) int x; printf(%d ,+x); 7以程序的输出结果是_。 #define MA(x) x*(x-1) #include void main() int a=1,b=2; pirntf(“%dn”,MA(1+a+b); 三、程序完善题三、程序完善题 1下列程序计算并输出方程 X2+Y2+Z2=1989 的所有整数解。请完善程序。 #include void main() (1) ; for(i=-45;i=45;i+) for((2) ) for(k=-45;k=45;k+) if( (3) ) 欢迎下载12 printf( “%4d%4d%4dn”, i,j,k); 2有以下程序段: s=1.0; for(k=1;k=n;k+) s=s+1.0/(k*(k+1); printf(%fn,s); 填空完成下述程序,使之与上述程序的功能完全相同。 s=0.0; (1) ; k=0; do s=s+d; (2) ; d=1.0/(k*(k+1); while( (3) ); printf(%fn,s); 3根据以下嵌套的 if 语句说给条件,填写 switch 语句,使它完成相同的功能。 (假设 score 的取值在 1100 之间。 ) if 语句: if(score60) k=1; else if(score70) k=2; else if(score80) k=3; else if(score90) k=4; else if(score=100) k=5; switch 语句: switch( (1) ) case 0 ,1,2,3,4,5: k=1; break; (2) :k=2; break; case 7:k=3; break; (1) :k=4; break; default:k=5; 4输入 2 个整数,输出它们的最小公倍数和最大公约数。请完善程序。 #include void main( ) int m,n,gbs,gys; scanf((1)); for(gbs=m; (2) ; gbs=gbs+m); gys= (3) ; printf(“gbs=%dtgys=%dn”, gbs,gys); 5下面函数的功能是判断一个数是否为素数。请完善程序。 void f(int m) 欢迎下载13 int m,i,k; k=_(1)_; for(i=2;i=_(2)_;i+) if(_(3)_)break; if(_(4)_)printf(“是素数”); else printf(“非素数”); 6用递归实现将输入小于 32768 的整数按逆序输出。如输入 12345,则输出 54321。请完善程序。 #includestdio.h void main() int n; printf(Input n : ); scanf(%d, (1) ); r(n); printf(n); void r(int m) printf(%d, (2) ); m = (3) ; if( (4) ) r(m); 四、程序设计题四、程序设计题 1 100 匹马驮 100 担货,大马一匹驮担,中马一匹驮担,小马两匹驮担。试编写程序计算大、中、 小马的数目。 2.编写程序,输入 10 个整数存入一个一维数组中,再按逆序重新存放后输出。 3.从键盘输入 4 个学生数据信息(包括姓名 学号 年龄 住址),把他们转存到磁盘文件中。. 参考答案:参考答案: 一、选择题一、选择题 12345678910 BCBADACABD 11121314151617181920 DBBCCACCDB 二、填空题二、填空题 1、 1 0 欢迎下载14 2、 1.0 3、 a=10 b=30 c=10 4、 2 5、 21 6、 3 2 1 7、 8 三、程序完善题三、程序完善题 1、 int i ,j,k j=-45;j=45;j+ x*x+y*y+z*z=1989 2、 d=1 k+ k=n 3、 score/10 case 6 case 8 4、 “%d %d”, for(big=0;big=33;big+) for(

温馨提示

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

评论

0/150

提交评论