C语言答案解析.docx
- 文档编号:17398808
- 上传时间:2023-07-24
- 格式:DOCX
- 页数:52
- 大小:42.55KB
C语言答案解析.docx
《C语言答案解析.docx》由会员分享,可在线阅读,更多相关《C语言答案解析.docx(52页珍藏版)》请在冰点文库上搜索。
C语言答案解析
C语言模拟题答案
一、选择题:
1、下列哪一个选项不是结构化程序三种基本结构的共同特点:
D:
有分支结构
2、设inta,b,c;执行表达式a=b=1,a++,b+1,c=a+b--后,a,b和c的值分别是:
B:
2,0,3
3、若整型变量A、B、C、D中的值依次为:
1、4、3、2。
则条件表达式D
A:
C的值为:
A:
1
4、表示数学中的关系x B: (x 5、在C语言中,设x为int型变量,则执行以下语句后,x的值为 x=10;x=x+--x;: C: 18 6、在C语言中,执行下面语句后,输出的结果是 intx=10,y=3;printf("%d\n",y=x/y); C: 3 7、在C语言中,假定所有变量均已正确说明,下列程序段运行后x的值是 a=b=c=0;x=99; if(! a)x=9; elsex=3; B: 9 8、在C语言中,执行语句: for(i=1;i<4;i++);后,变量i的值是: B: 4 9、设intk;则语句for(k=0;k=1;k++);和语句for(k=0;k==1;k++);执行的次数分别是: A: 无限和0 10、执行语句 printf("Hequestionisinc: \\tools\book.exe"); 其输出为: C: Hequestionisinc: \toolook.exe 11、函数floatAAA(floatx,inty) {floati,fc=1; while(y>0) { fc*=x;y--;} returnfc; } 的功能是: A: 求x的y次方 12、对两个静态字符数组A和B进行如下初始化。 staticcharA[]="ABCDEF"; staticcharB[]={'A','B','C','D','E','F'}; 则下列叙述正确的是: D: A数组长度比B数组长 13、对于for(表达式1;;表达式3)可理解为: B: for(表达式1;1;表达式3) 14、C语言中,FILE结构指针变量名stdin代表哪类文件。 D: 标准输入 15、下列循环体执行()次 k=70; while(k=0)k-=1; D: 0次 16、有以下程序 #defineP3 voidF(intx){return(P*x*x);} main() {printf("%d\n",F(3+5));} 程序运行后的输出结果是 D: 编译出错 17、在一个源程序文件中定义的全局变量的有效范围为 C: 从定义处开始到该源程序文件结束 18、有以下程序 main() { intp[3]={11,12,13},i=0,j=0; while(i++<2)if(p[i]%2)j+=p[i]; printf("%d\n",j); }程序运行后的输出结果是 A: 13 19、以下能正确定义一维数组的选项是: D: chara[5]="0123"; 20、与定义charc[]={"GOD"};不等价的是 D: charc[3]={"GOD"}; 21、对于下面程序段,执行的结果是 charc[5]={‘a’,’b’,’\0’,’c’,’\0’}; printf(“%s”,c); B: ab 22、设charQ='a',*p=&Q;下面说法中错误的是 C: &p=&Q 23、有以下程序 main() {inta[]={1,2,3,4,5,6,7,8,9,0},*p; for(p=a;p<=a+9;p++)printf("%d,",*p); ) 程序运行后的输出结果是 A: 1,2,3,4,5,6,7,8,9,0, 24、若有语句: inta=4,*p=&a;,下面均代表地址的一组选项是 C: &a,p,&*p 25、设有语句: inta[10],*p=a;,则下面的语句中,不正确的是 D: a=a+1; 26、当int类型长度为2字节时,则类型unsignedint的值域范围为 0至65535 27、有如下程序: #include intb; voidf() {intt2;t2=b*3;b=100;} voidmain() {inta=2; b=4;f1(); } 叙述正确的是: D: a是局部变量,b是全局变量。 28、下面的for循环最多可执行________次。 for(x=0,y=0;(y! =99)&&(x<4);x++); A: 4次 29、下列判断char类型变量C1是否为数字的表达式中,哪个表达式最简单且正确。 B: (C1>='0')&&(C1<='9') 30、若有以下的说明,则对初值中字符'a'的引用方式为________。 staticstruct {charch; doublex; chart; }c[2][2]={{{'a',35,'b'},{'c',45,'d'},{'a',86,'m'}}}; D: c[0][0].ch 二、判断题: 1、在C程序中,注释部分从/*开始,到*/结束。 T 2、switch语句中,case后面既可以跟常量,也可以跟已赋值的变量。 F 3、一个C语言程序中包含有多个函数时,按书写顺序从上到下执行各函数。 F 4、若一个函数的返回类型为void,则表示其没有返回值。 T 5、student_name、_name、name8和name_8都是合法标识符。 T 6、不对自动(auto)数组进行初始化,数值型数组隐含初值为0,字符数组隐含初值空字符'\0'。 F 7、假设int型数组a的起始地址为2000,则元素a[3]的地址为: 2000+4×2=2008。 F 8、结构化程序设计认为一个"好"程序主要应该是: 程序短而紧凑。 F 9、如果知道整型变量a的地址是2000,可以直接用int*pa=2000;给指针变量pa赋值,使其指向变量a。 F 10、在C语言的if语句中,用作判断的表达式只能为逻辑表达式和关系表达式。 F 三、综合应用题 1、计算下面公式的值。 T=1/1! +1/2! +1/3! +……+1/m! 当m=10时的结果(按四舍五入保留3位小数)。 (注: 所有变量用float数据类型定义! ) 答案: 1.718 2、求[10,2000]之间能被2或3或5整除的数之和。 改正程序中的错误(共3处错误)。 答案: 1466295 #include voidmain() { intsum; inti; for(i=10;i<2000;i++) if(i%2==0&&i%3==0&&i%5==0) sum=sum+i; printf("sum=%d\n",sum); } 3、/*下面程序的功能是: 计算并输出500以内的最大的10个能被13或者17整除的自然数之和。 请改正程序中的错误,并运行,最后给出程序运行的正确结果。 (注: 只有一处错误! )*/ #include voidmain() { inttotal=0,mc=1,k=500; intpm[10],count=0; while((k>=2)&&mc<=10) { if((k%13==0)||(k%17==0)) { pm[mc]=k; mc++; } k--; } for(k=1;k<=10;k++) total+=pm[k-1]; printf("%d\n",total); } 答案: 4622 4、下列程序的功能是: 求出以下分数序列的前30项之和, 2/1,3/2,5/3,8/5,13/8,21/13,……请改正程序中的错误,并运行修改后程序,给出程序结果(按四舍五入保留6位小数)。 结果: 48.840601。 (有3处错误) #include #include main() {intk; doubles; longa,b,c; clrscr(); s=0.0;a=2;b=1; for(k=1;k<=30;k++) s=s+a/b; c=a;a=a+b;b=c; printf("\n结果: %lf\n",s); } 5、/*求200到1000之间的双胞胎数的对数。 双胞胎数: 两素数差为2称为双胞胎数。 例如227和229是一对双胞胎数,它们都是素数且差为2。 */ #include intprime(intx) { intk; for(k=2;k if(__________)break; if(k==x)return1; elsereturn0; } voidmain() {inta,b,n=0; intprime(intx); for(a=200;a<=998;a++) { if(prime(a)==1) {b=a+2; if(__________)n++; } } printf("%d\n",n); } 答案: 20 C语言程序设计题库及答案 1、计算下面公式的值。 T=1/1! +1/2! +1/3! +……+1/m! 当m=5时的结果(按四舍五入保留3位小数)。 (注: 所有变量用float数据类型定义! )答案: 1.717 #include floatjc(floatx) { floatjc=1,i; for(i=1;i<=x;i++) jc=jc*i; returnjc; } voidmain() { floatjc(floatx); floatm,t=0,i; printf("PleaseInput: \n"); scanf("%f",&m); for(i=1;i<=m;i++) t=t+1/jc(i); printf("t=%.3f\n",t); } 2、程序填空: 用*号输出字母C的图案。 #include"stdio.h" #include"conio.h" main() { _printf("***\n");__ printf("*\n"); printf("*\n"); printf("***\n"); getch(); } 3、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,8+2+3+2=15,9+6+7+8=30。 编写程序,求四位数的所有奇数中,这样的数(各位数字之和是15的倍数)的总和。 (注: 所有变量用long数据类型定义! )答案: 1533459 #include longf(longx) { longs=0; if(x%2! =0) { while(x>0) { s=s+x%10; x=x/10; } if(s%15==0)return1; elsereturn0; } elsereturn0; } voidmain() { longf(longx); longi,sum=0; for(i=1000;i<=9999;i++) if(f(i)) sum=sum+i; printf("sum=%ld\n",sum); } 4、下面程序的功能是: 计算并输出700以内的最大的10个能被13或者17整除的自然数之和。 请改正程序中的错误,并运行,最后给出程序运行的正确结果。 (注: 只有一处错误! )答案: 6591 #include voidmain() { inttotal=0,mc=1,k=700;//改为: inttotal=0,mc=0,k=700; intpm[10],count=0; while((k>=2)&&mc<=10) { if((k%13==0)||(k%17==0)) { pm[mc]=k; mc++; } k--; } for(k=1;k<=10;k++) total+=pm[k-1]; printf("%d\n",total); } 5、求x=1+1/5+1/7+1/9+…的近似值,直到最后一项的绝对值小于10-5为止。 #include #include main() { inti; doublex; x=1; i=5; do { x=x+1/(double)i; i=i+2; }while(fabs(1/(double)i)>1e-5); printf("%.2lf\n",x); } 输出: 6.058 6、计算如下公式的A20值。 A1=1,A2=1/(1+A1),A3=1/(1+A2),A4=1/(1+A3),......(按四舍五入保留10位小数)。 答案: 0.6180339850 (1)可用递归: 1n=1 F(n)= 1/(1+f(n-1))n>1 #include doublef(doublen) { doublea; if(n==1)a=1; elsea=1.0/(1+f(n-1)); returna; } voidmain() { doublef(doublen); printf("f(20)=%.10lf\n",f(20)); } (2)不用递归: #include voidmain() { doublei,c,a=1,b=1,x; for(i=1;i<20;i++) { c=a; a=b; b=c+b; } x=a/b; printf("x=%.10lf\n",x); } 7、求[10,1600]之间能被7整除的奇数之和。 答案: 90965 (1)用函数可写成: #include intjx(intx) { if(x%2! =0)return1; elsereturn0; } intf(intx) { if(jx(x)) if(x%7==0)return1; elsereturn0; elsereturn0; } voidmain() { intjx(intx); intf(intx); inti,s=0; for(i=10;i<=1600;i++) if(f(i))s=s+i; printf("s=%d\n",s); } (2)不用函数可写成: #include voidmain() { intjx(intx); intf(intx); inti,s=0; for(i=10;i<=1600;i++) if(i%2! =0&&i%7==0)s=s+i; printf("s=%d\n",s); } 8、函数mystrlen(char*s)的功能是求字符串s的长度。 请填空。 intmystrlen(char*s) {intnum=0; while(*s++! ='\0'){_num++_;} return(num); } 9、[100,500]之间同时满足除以7余5,除以5余3,除以3余1的整数之和。 答案: 1042 #include voidmain() { inti,sum=0; for(i=100;i<=500;i++) { if(i%7==5&&i%5==3&&i%3==1) sum=sum+i; } printf("sum=%d\n",sum); } 10、求[100,999]之间所有的素数的个数。 答案: 143 #include intsushu(intx) { inti; for(i=2;i if(x%i==0)break; if(i==x)return1; elsereturn0; } voidmain() { intsushu(intx); inti,num=0; for(i=100;i<=999;i++) if(sushu(i)) num++; printf("num=%d\n",num); } 11、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。 答案: 110 #include intf(intx) { inta,b,c,d; a=x/1000; b=x/100%10; c=x/10%10; d=x%10; if(a+b==b+c)return1; return0; } voidmain() { inti,num=0; for(i=1000;i<=9999;i++) if(i%8==0) if(f(i))num++; printf("num=%d\n",num); } 12、数列1,2,1,4,7,12,23…具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7….。 下列程序的功能是求出该数列前10项的和。 请改正程序中的错误,并运行修改后的程序,给出程序结果。 (注: 只有一处错误! ) 答案: 311 #include voidmain() { longsum=0,a[30]={1,2,1}; intk,j; for(k=3;k<10;k++) a[k]=a[k-1]+a[k-2]+a[k-3]; for(j=1;j<=10;j++) sum+=a[j];//改为: sum+=a[j-1]; printf("%ld\n",sum); } 13、/*求1到2000之间的双胞胎数的对数。 双胞胎数: 两素数差为2称为双胞胎数。 例如227和229是一对双胞胎数,它们都是素数且差为2。 */答案: 61 #include intprime(intx) { intk; for(k=2;k if(_x%k==0_)break; if(k==x)return1; elsereturn0; } voidmain() {inta,b,n=0; intprime(intx); for(a=2;a<=1998;a++) { if(prime(a)==1) {b=a+2; if(_prime(b)==1_)n++; } } printf("%d\n",n); } 14、编写程序,统计200~400之间的所有满足三个数字之积为42,三个数字之和为12的数的个数。 答案: 4 #include voidmain() { inti,num=0; inta,b,c; for(i=200;i<=400;i++) { a=i/100; b=i/10%10; c=i%10; if(a*b*c==42&&a+b+c==12) num++; } printf("num=%d\n",num); } 15、有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)? 答案: 9 #include voidmain() { intnum=0; inti,j,k;//i为大学生人数,j为中学生人数,k为小学生人数 for(i=1;i<=30;i++) for(j=1;j<=30-i;j++) for(k=1;k<=30-i-j;k++) if(i*3+j*2+k*1==50&&i+j+k==30) { printf("%d,%d,%d\n",i,j,k); num++; } printf("num=%d\n",num); } 16、爱因斯坦走台阶: 有一台阶,如果每次走两阶,最后剩一阶;如果每次走三阶,最后剩两阶;如果每次走四阶,最后剩三阶;如果每次走五阶,最后剩四阶;如果每次走六阶,最后剩五阶;如果每次走七阶,刚好走完.求满足上述条件的最小台阶数是多少? 答案: 119 #include voidmain() { intx; for(x=1;;x++) if((x%2==1)&&(x%3==2)&&(x%5==4)&&(x%6==5)&&(x%7==0)) {printf("%d\n",x);break;} } 17、求1000以内最大的10个素数的和。 答案: 9664 #include intprime(longn) { longk; for(k=2;k<=n-1;k++) if(__n%k==0__)return0; return1; } voidmain() { longt,total=0,num=0; intprime(longn); for(t=1000;t>=2;t--) { if(_prime(t)__) { total=total+t;num++; } if(num==10)break; } printf("\n%ld",total); } 18、/*求1! +2! +3! +...+7! ,7! 表示7的阶乘。 */答案: 5913 #include longjc(longx) { longk,fac=1; for(k=1;_k<=x__;k++) fac*=k; _returnfac__; } voidmain() { longn,sum=0; longjc(longx); for(n=1;n<=7;n++) _sum=sum+jc(n)_; printf("\n%ld",sum); } 19、求10000以内所有完数之和,"完数"是指: 一个数如果刚好与它所有的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 答案 解析