c语言学习知识题目及其规范标准答案.doc

上传人:小** 文档编号:2542178 上传时间:2020-04-19 格式:DOC 页数:15 大小:135.02KB
返回 下载 相关 举报
c语言学习知识题目及其规范标准答案.doc_第1页
第1页 / 共15页
c语言学习知识题目及其规范标准答案.doc_第2页
第2页 / 共15页
点击查看更多>>
资源描述

《c语言学习知识题目及其规范标准答案.doc》由会员分享,可在线阅读,更多相关《c语言学习知识题目及其规范标准答案.doc(15页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、. 考试题型考试题型 一、单项选择题(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,

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

3、循环体不能是复合语句 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 语句,则关于该函数正确的说法是_ _。

4、 A 没有返回值 B 能返回若干个系统默认值 . 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,

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

6、,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) C

7、ps02 D*(ps+1)+3 19当说明一个共用体变量时系统分配给它的存储容量是 。 A共用体中最后一个成员所需的存储容量 B共用体中第一个成员所需的存储容量 C成员中占存储量最大者所需的存储容量 D各成员所需存储容量的总和 20有定义如下: . 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

8、=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下面程序的输出结果是_。 #

9、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 . 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(

10、); 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

11、 xx x xx x y . 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

12、; (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;

13、case 6:k=2; break; case 7:k=3; break; case 8:k=4; break; (3) :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) int m,i,k; k=_(1)_; for(i=2;i=

14、_(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); 四、程序

15、设计题四、程序设计题 1编写程序计算分段函数 y 值。 2编写程序,输入一个字符串,求该字符串的有效长度。要求不能使用系统函数。 3编写程序实现,将键盘输入的一个十进制整数转换为 2 进制数并输出。 参考答案:参考答案: 一、选择题一、选择题 12345678910 0 01 0 xe x xe y x x . 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

16、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+) . ; 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+) s

17、tri=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(

18、) int x= 2,y=-1,z=2; if(xy) if(y0) z= 0; else z+ =1; printf(%dn,z); . 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); vo

19、id 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

20、) ) . 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; el

21、se 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(g

22、bs=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用递归实现将输入小于 32768 的整数按逆序输出。如输入 12345,则输出 54321。请完善程序。 #includestdio.h void main() int n

23、; 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 个学生数据信息(包括姓名 学号 年龄 住址),把他们转存到磁盘文件中。. 参考答案:参考答案: 一、选择题一、选择题 123456

24、78910 BCBADACABD 11121314151617181920 DBBCCACCDB 二、填空题二、填空题 1、 1 0 . 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(mid=0;mid=50;mid+) if(big*3+mid*2+(100-big

25、-mid)*0.5=100) printf(“%d,%d,%dn”,big,mid, 100-big-mid); 2、 #include Void main() int i,j,a10,temp; for(i=0;i10;i+) scanf(“%d”, For(i=0,j=9;ij;i+,j-) temp=ai; ai=aj; aj=temp; for(i=0;i10;i+) printf(“%d ”, ai); 3、#include . #define SIZE 2 struct student_type char name10; int num; int age; char addr15;

26、 studSIZE; void save() FILE *fp; int i; if(fp=fopen(d:fengyiexestu_dat,wb)=NULL) printf(cannot open filen); return; for(i=0;iSIZE;i+) if(fwrite( fclose(fp); void display() FILE *fp; int i; if(fp=fopen(d:fengyiexestu_dat,rb)=NULL) printf(cannot open filen); return; for(i=0;iSIZE;i+) fread( printf(%-10s %4d %4d %-15sn,studi.name, studi.num,studi.age,studi.addr); fclose(fp); main() int i; for(i=0;iSIZE;i+) scanf(%s%d%d%s,studi.name, save(); display();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁