




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
部分习题答案第1章 C程序知识初步答案略第2章 基本数据类型及其操作1判断题 2填空题 (1)int a; float b; char c;(2)3(3)double(4)a=1,b=2,c=3(5)0 整型(6)2(7)若有定义:int x=3,y=2;float a=2.5,b=3.5; 则表达式(x+y)%2+(int)a/(int)b的值为 1 。(8)f 3选择题ACDDB DBACD4改错题(1)#include 改成 #include int celsius;fahr; 改成 float celsius,fahr;printf(“fahr=d,celsius=%dn”,fahr,celsius); 改成 printf(“fahr=%f,celsius=%fn”,fahr,celsius);(2)printf(%dn,m/n+a); 改成 printf(%fn,m/n+a);printf(%fn,m%a+b); 改成 printf(%fn,m%(int)a+b);(3)下面程序中有两处错误,请查找并改正。#includevoid main () int m,n; float a,b; scanf(%d,%f,&m,&a); scanf(%d,%f,&b,&n); 改成scanf(%f,%d,&b,&n); printf(%fn,m/n+a); printf(%fn,m%n+b) 改成 printf(%fn,m%n+b);5阅读程序(1)2 * * * * * * *(2)(3)程序的功能:从键盘任意输入两个整数,输出它们的和。(4)26.7654326编程题(1)编程求华氏温度50F 对应的摄氏温度C。#include void main() float celsius,fahr;fahr=50;celsius=5*(fahr-32)/9;printf(fahr=%f,celsius=%fn,fahr,celsius);(2)编程从键盘输入一个数a,求它的平方并输出。#include void main() int a,b;scanf(%d,&a);b=a*a;printf(a=%d,b=%dn,a,b);(3)定义三个int型变量x、y、z, 从键盘读入x、y,把x对y的余数赋给z,并输出结果。#include void main() int x,y,z;scanf(%d%d,&x,&y);z=x%y;printf(%d对%d的余数为%dn,x,y,z);(4)定义两个整型变量并赋值,编程实现两个整型数的互换。#include void main() int x,y,t;x=3; y=4;t=x; x=y; y=t;printf(x=%d,y=%d n,x,y);(5)当n为152时,编程分别求出n的个位数(digit1)、十位数(digit2)和百位数(digit3)。#include void main() int n,x,y,z;n=152;x=n/100;y=n/10%10;z=n%10;printf(%d的百位、十位、个位分别为%d,%d,%dn,n,x,y,z);第3章 选择结构程序设计1 选择题BCCCC DCADA2填空题(1)10.500000(2)优先级 结合性(3) ASCII (4)0.000000(5)0 1(6) (ch=a) & (ch=A) & (ch=0) & (ch=9) )(7) c=getchar() %c &c putchar(c) (8) t/3 default 1-d/100.0 3分析下列程序,写出程序运行结果。 (1)123.456001 * 123.46*123.456?(2)#includevoid main() int a ,b,max;scanf(“%d%d”,&a,&b);if(ab) max=a ;else max=b ;printf(“max=%dn”,max) ;如果输入3和4,则输出结果为max=4 (3)-1 (4)5 (5)a=2,b=14改错题(1) scanf(“%c , %d , %d , %f ”,c , b , a , c ); 改成 scanf(“%c , %f , %d ”,&c , &b , &a ); printf(“%c , %d , %d , %f ”,c , b , a , c ); 改成 printf(“%c , %f , %d , %d ”,c , b , a , c ); (2)if(xy) x=y;y=x; 改成 if(xy) x=y;y=x; else x=x+1;y=y+1; 改成 else x=x+1;y=y+1; 5编程题(1)计算以下分段函数#includevoid main()float x,y; scanf(%f,&x); if (x=15) y=4*x/3; else y=2.5*x-10.5; printf(y=f(%f)=%f,x,y);(2) 输入一个整数,若为奇数则输出其平方根,否则输出其立方根。(提示:可以利用数学函数pow(x,1.0/3)计算x的立方根) #include#include void main()int t; scanf(%d,&t); if (t%2=1) printf(%d的平方根为%f,t,sqrt(t); else printf(%d的立方根为%f,t,pow(t,1.0/3);(3) 从键盘输入一个整数,判断该整数是否能同时被3和7整除。#includevoid main()int t; scanf(%d,&t); if (t%3=0 & t%7=0) printf(%d能同时被3和7整除n,t); else printf(%d不能同时被3和7整除n,t); (4) 输入一个英文字母,判断该字母是大写字母还是小写字母。#includevoid main()char ch; ch=getchar(); if (ch=a & ch=z)printf(%c是小写字母n,ch); else printf(%c是大写字母n,ch); (5) 从键盘任意输入一个字符,如果它是英文字母,则以小写的形式输出,否则输出“它不是英文字母”。#includevoid main()char ch; ch=getchar(); if (ch=a & ch=A & ch=Z) printf(%cn,ch+32); else printf(%c不是英文字母n,ch); (6) 从键盘输入3个整数a、b、c,输出其中的最大数。#includevoid main()int a,b,c,max;scanf(%d%d%d,&a,&b,&c);if(ab)max=a;else max=b;if (maxc)max=c;printf(%d,%d,%d中的最大数是%dn,a,b,c,max); (7)从键盘输入x,计算下列分段函数的值。#includevoid main()float x,y; scanf(%f,&x); if (x=-10 & x=10) y=0; else y=-10;printf(y=f(%f)=%f,x,y);(8) 从键盘输入4个整数a、b、c、d,按照由大到小的顺序输出。#includevoid main()int a,b,c,d,t;scanf(%d%d%d%d,&a,&b,&c,&d);/先找出4个数中最大数,并存放在变量a中 if (ab) t=a; a=b; b=t;if (ac) t=a; a=c; c=t;if (ad) t=a; a=d; d=t;/找出除a外其余3个数中的最大数,并存放在变量b中 if (bc) t=b; b=c; c=t;if (bd) t=b; b=d; d=t;/找出变量c、d中的最大数,并存放在变量c 中 if (cd) t=c; c=d; d=t;printf(%d %d %d %dn,a,b,c,d);(9) 从键盘输入年月,输出该月的天数(考虑当年是否闰年)。#includevoid main()int year,day,t;scanf(%d%d,&year,&day);switch(day) case 1: case 3: case 5: case 7: case 8: case 10: case 12: t=31; break; case 2:if (year%400=0)|(year%4=0 & year%100!=0) t=29; else t=28; break; default:t=30;printf(%d年%d月有%d天n,year,day,t);(10)输入月薪salary,输出应交的个人所得税tax。计算公式为:tax=rate*(salary-2000)当salary2500时,rate=0;当2500salary4000时,rate=5%;当4000salary7000时,rate=10%;当7000salary22000时,rate=15%;当22000salary42000时,rate=20%;当42000salary62000时,rate=25%;当62000salary82000时,rate=30%;当82000salary102000时,rate=35%;当102000salary时,rate=40%;要求给出问题求解的算法,用流程图表示,并用程序实现。#includevoid main () float salary,tax; int rate; scanf(%f,&salary); if (salary2500 & salary4000 & salary7000 & salary22000 & salary42000 & salary62000 & salary82000 & salary=102000) rate=35; else rate=40; tax=rate*0.01*(salary-2000); printf(%fn,tax);第4章 循环结构1 选择题D ( CAA) AB (AD) BBCCB2填空题(1) 0 (2) -264 (3)354%10 354/100 354/10%10 (4) 结束整个循环 结束本次循环 (5) n=999 ns=n/10%10 ng+ns+nb=5 (6)程序填空。以下程序是计算1+2/3+3/5+4/7+5/9+前20项之和。 sum=0 sum b+2 3写出下列程序的运行结果(1)#includevoid main() int x=012 , n=0;while (x) x-=2 ; n+; printf(“x= %d, n=%dn”, x , n ); x= 0,n=5(2)i=6,y=10(3)sum=288(4)K=4(5)1.6000004编程题(1)输入一个整数n,并求 1-1/3+1/5- 的前n项和。#include void main() double a,sum=0; int i,m=1,n,j; printf(输入一个数:); scanf(%d,&n); for(i=1;i=n;i+) if (i%2=0) m=-1; else m=1; a=2*i-1; sum=sum+m*1.0/a; printf(%lfn,sum);(2) 输出1-100之间的所有偶数。#includevoid main() int a,b=0; for(a=1;a100;a+) if(a%2=0) printf(%6d,a), b+; if(b%6=0)printf(n); (3) 求n!。#includevoid main()int j,n,t; scanf(%d,&n); t=1; for(j=1;j=n;j+) t=t*j; printf(%dn,t);(4) 输入一个正实数x,求平方根不超过x的最大整数n,并输出。#include#includevoid main() double x; int n; scanf(%lf,&x); n=(int) (x*x); printf(%d,n);(5) 输入一个整数,从高位开始逐个数字输出。#include#includevoid main()int t,i; scanf(%d,&t); i=4; do printf(%d ,t/(int)pow(10,i); t=t%(int)pow(10,i); i-; while (i=0); (6) 输入一个正整数n,再输入n个整数,输出最小值。#includevoid main() int n,min,i,x; printf(请输入一个整数n:n); scanf(%d,&n); printf(再输入n个整数:n); for(i=1;i=n;i+) scanf(%d,&x); if (i=1) min=x; else if(xmin) min=x; printf(min=%dn,min); (7)输出九九乘法口诀表。按照下列格式输出:1*1= 12*1= 2 2*2= 49*1= 9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81#includevoid main() int i,j; for(i=1;i=9;i+) for(j=1;j=i;j+) printf(%d*%d=%-3d,j,i,i*j); printf(n); (8)利用循环输出以下图案:#includevoid main()int i,j,k,t; t=3; for(i=1;i=4;i+) for(j=1;j=t;j+)printf( ); t-; for(j=1;j=2*i-1;j+)printf(*); printf(n); /上半部分图形 t=5; for(i=1;i=3;i+) for(j=1;j=i;j+)printf( ); for(j=1;j=t;j+)printf(*); t=t-2; printf(n); (9) 求Sn=a+aa+aaa+aaa之值,其a中代表1到9中的一个数字。例如:a代表2,则求2+22+222+2222+22222(此时n=5),a和n由键盘输入。#includevoid main()int i,a,n,t,s;s=0;scanf(%d%d,&a,&n);t=a; /t表示将要加入的数 for(i=1;i=n;i+) s=s+t; t=t*10+a;printf(s=%d,s);(10)一个球从100米高度自由落体,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过多少米?第10次反弹多高?#includevoid main()float h,sum; int i; h=100; sum=100; for(i=1;i=10;i+) h=h/2.0; sum=sum+2*h; sum=sum-2*h; printf(第%d次弹起的高度为%f米,经过的距离为%f米。,i-1,h,sum);(11) 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃了前一天剩下的一半零一个。到第10天想再吃时,见只剩下一个桃子了。编程计算第一天共摘了多少桃子?#includevoid main () int i,x,y; /x表示某一天没吃之前桃子的数目,y表示该天吃过之后剩下桃子的数目 y=1;i=9; /第9天吃过桃子之后,还剩下y=1个桃子while (i=1) x=2*(y+1);y=x; i-;printf(%dn,x);第5章数组 答案1、判断题:TFTFFTTF2、选择题:CCACABDADD3、分析以下程序的运行结果(1)5,6.000000(2)3,5,7,9,5(3)Cat(4)aaaa bb cc(5)str=Language(6)123(7)str=abdef(8)2,34、编程题:(1)#includevoid main()int z=0;int l=0;int f=0;int a6=8,0,9,0,-6,-1;for(int i=0 ;i0)z+;else if(ai0)f+;printf(数组中正数的个数为%d,负数的个数为%d,零的个数为%d,z,f,l);(2)#includevoid main()int score50;int highest,lowest,average=0;for(int i=0;i50;i+)scanf(%d,&scorei);highest=score0;lowest=score0;for(int i=0;ihighest) highest=scorei; if(scoreilowest)lowest=scorei; average+=scorei;average=average/50;printf(highest=%d,lowest=%d,average=%d,highest,lowest,average);(3)#include int main( ) int i; int f20=1,1; /f0=1,f1=1 for(i=2;i20;i+) fi=fi-2+fi-1; /在i的值为2时,f2=f0+f1,依此类推 for(i=0;i20;i+) /此循环的作用是输出20个数 if(i%5=0) printf(“n”); /控制换行,每行输出5个数据 printf(“%8d”,fi); /每个数据输出时占8列宽度 return 0; (4)int GetStrOcur(char *cs, char *ct ) char *p = cs; int num = 0, lcs=strlen(ct);while( (p=strstr(p, ct)!=NULL) num+; p+= lcs; return num; (5)#include#includeint streql(char *,char *);void main()char chs1=abc;char chs2=abc;char chs3=ABC;char chs41000=aas;printf(Testing Abc and Abc %dn, streql(Abc, Abc); printf(Testing abc and Abc %dn, streql(abc, Abc); printf(Testing abcd and abc %dn, streql(abcd, abc); printf(compler chs1 %s and chs2 %s result=%dn,chs1,chs2,streql(chs1,chs2);strcat(chs4,chs2);printf(chs4+chs2=%s,chs4);int streql(char *ch1,char *ch2)while(*ch1=*ch2)&(*ch1) ch1+; ch2+;return (*ch1=NULL)&(*ch2=NULL);(6)#include #include int main() char a100; unsigned i=0; printf(输入字符串n); gets(a); for(i=0;i=strlen(a)-1;i+) ai=15; puts(a); return 0;/*注:15的二进制码是00001111,用一个二进制数异或(即)00001111,表示对后四位取反,异或的原理是01=0,00=1,11=0,10=1,简单记为相同得0,不同得1*/(7)#include #include #define MAX 5void main() char strMAX20; char* pc; int i; for(i=0;iMAX;i+) gets(stri); pc=str0; for(i=1;iMAX;i+) if(strcmp(stri,pc) pc=stri; puts(pc);(8)此题目的解题思路是这样的:1.对任意整数m ,如果它不能被小于它的质数整除,则m也是质数,引入质数表primes,已求得的质数个数为pc,求前n个质数的过程可用以下算法描述:【算法】求前n个质数 primes0=2;/*2是第一个质数*/ pc=1; /*已有第一个质数*/ m=3;/*被测试的数从3开始*/ while(pcm成立,代码描述如下:k=0;while(primesk*primesk=m)if(m%primesk=0) /*m是合数*/ m+=2; k=1;/*不必用primes0=2去测试m*/else k+ /*继续用下一个质数去测试*/3.最后的程序代码为/*利用数组求前n个质数*/#include#define N 50main() int primesN; int pc,m,k; clrscr(); printf(n The first %d prime numbers are:n,N); primes0=2;/*2是第一个质数*/ pc=1; /*已有第一个质数*/ m=3;/*被测试的数从3开始*/ while(pcN) /*调整m使它为下一个质数*/ k=0; while(primesk*primesk=m) if(m%primesk=0) /*m是合数*/ m+=2;/*让m取下一个奇数*/ k=1;/*不必用primes0=2去测试m,所以k从1开始*/ else k+;/*继续用下一个质数去测试*/ primespc+=m; m+=2;/*除2外,其余质数均是奇数*/ /*输出primes0至primespc-1*/ for(k=0;kpc;k+)printf(%4d,primesk); printf(n Press any key to quit.n); getch();第6章函数答案1判断下面叙述的对与错FFFFFTFTFF2选择题DAACC ABDBD3分析以下程序的运行结果(1)3.0(2) 6(3)8(4)7(5)x=2,y=3(6)4(7)8174 编程题(1)int shuixianhua() int n; int g, s, b; for (n = 100; n 1000; n+) b = n/100; s = (n%100)/10; g = n%10; if (n = g*g*g + s*s*s + b*b*b) printf(%dn, n); return 0;(2)int wanbeishu() for (int i=1;i=30000;i+) int sum=0; for (int j=1; ji/j;j+) if (i%j=0) sum+=j+i/j; if (sum%i=0) printf(%dn,i); return 0;(3)#include int main() int ysSum(int x); int temp; for(int i=1;i30000) /temp不能大于30000 continue; if(ysSum(temp)=i) /如果temp的约数和等于i, / 则是我们要的 printf(t%d %dn,i,temp); return 0;int ysSum(int x) int sum=0; for(int i=1;ix;i+) if(x%i=0) sum+=i; return sum;(4)#include float index(int n); /* 函数原型声明 */main( ) int number; printf(Please input element numbers( number ):); scanf(%d,&number); printf(The sum is %9.6fn,index(number); getch( );float index(int num) /* 函数定义 */ int cnt; float temp,a=2,b=1,s=0; for(cnt=1;cnt=num;cnt+) s=s+a/b; temp=a; a=a+b; b=temp; return(s);(5)#include long sum(int a,int b); /* 函数原型声明 */main( )printf(1-40相加=%ld,1-80相加=%ld,1-100相加=%ld,sum(1,40),sum(1,80),sum(1,100);long sum(int a,int b)long x=0;for(int i=a;i=b;i+)x+=i;return x;(6)#include #include #include void main() int i,base,len; char num20; float s=0; printf( 输入数进制 ( 小于等于 16):); scanf(%d,&base); printf( 该进制的一个整数 :); scanf(%s,num); len=strlen(num); i=len-1; while(i=0) switch(numi) case A: case a:s=s+10*pow(float)base, (float)(len-i-1);break; case B: case b:s=s+11*pow(float)base, (float)(len-i-1);break; case C: case c:s=s+12*pow(float)base, (float)(len-i-1);break; case D: case d:s=s+13*pow(float)base, (float)(len-i-1);break; case E: case e:s=s+14*pow(float)base, (float)(len-i-1);break; case F: case f:s=s+15*pow(float)base, (float)(len-i-1);break; case 0: case 1: case 2: case 3:case 4: case 5: case 6: case 7: case 8: case9:s=s+(numi-0)*pow(float)base, (float)(len-i-1);break; i-; printf( 十进制结果 :%gnn,s); (7)#include int sushu(int m); /* 函数原型声明 */main( )int i,m;for(i=6;i=1000;i+=2)for(m=3;mi;m+)if(sushu(m)&sushu(i-m)printf(%d=%d+%dn,i,m,i-m);break;int sushu(int m)int i;if(m2)return 0;for(i=2;im;i+)if(m%i=0)return 0;return 1;(8)#includevoid main()int hcf(int,int);int lcd(int,int,int);int u,v,h,l;scanf(%d,%d,&u,&v);h=hcf(u,v);printf(h.c.f=%dn,h);l=lcd(u,v,h);printf(l.c.k=%dn,l);int hcf(int u,int v)int t,r;if(vu)t=u;u=v;v=t;while(r=u%v)!=0)u=v;v=r;return(v);int lcd(int u,int v,int h)return(u*v/h);第7章 指针1选择题 BDDCC DCBBA2填空题3阅读下列程序,写出程序执行结果(1)0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10(2)1 57(3)0 01 22 40 02 34 6(4)1526(5)xyzABCabcd(6)21(7)191991919本题中如果把while语句的循环体修改如下: t=*stb;*stb+=*ste; *ste-=t; 程序的结果:987654321(8)12345(9)13 -3(10) 1 2 3 10 12 134编程题第8章 结构及其它参考答案1选择题CACDCBCAB2程序阅读,写出运行结果(1)12(2)51,60,21(3)10,x(4)264.00(5)015.500000(6)Word value:1234High value:12High value:343编程题(1)-(3)参考答案:#includestruct worker char no10 ; char name20 ; char sex; int age; int workyear; float salary; char address20 ; ;void main() struct worker w1; printf(请输入该职工的相关资料:); scanf(%s,%s,%c,%d,%d,%f,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑外立面改造方案
- 房屋施工现场临时设施布置方案
- 治安队员笔试试题及答案
- 景观植物配置设计
- 2025广西玉林北流市山围镇卫生院公开招聘5人考前自测高频考点模拟试题及一套参考答案详解
- 给水系统安全监控方案
- 2025年约束带的考试试题及答案
- 青海交安考试试题及答案
- 工程质量控制实施计划
- 金郊初中模拟考试题及答案
- 餐饮食堂竞标标书
- 迪尔凯姆社会学主义的巨擎汇总课件
- 家庭经济困难学生认定申请表
- 血栓性血小板减少性紫癜ttp汇编课件
- 阀门安装及阀门安装施工方案
- 大学数学《实变函数》电子教案
- YY/T 0640-2008无源外科植入物通用要求
- GB/T 29531-2013泵的振动测量与评价方法
- GB/T 2637-2016安瓿
- 数轴上的动点问题课件
- 省级公开课(一等奖)雨巷-戴望舒课件
评论
0/150
提交评论