欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c语言程序设计课后习题答案2.pdf

    • 资源ID:90862706       资源大小:4.03MB        全文页数:49页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c语言程序设计课后习题答案2.pdf

    C 语言程序设计(第2 版)课后习题答案第一章1.请参照本章例题,编写一个C 程序,输出以下信息:Very good!解:#includevoid main()(*)printf(“n”);printf(44Very good!n,);printf(“n”);printf(*)2.编写一个C 程序,输入a、b、c 三个值,输出其中最大值。解:#includevoid main()(int a,b,c,max;printf(“请输入三个数 a,b,c:rT);scanf(“d,%d,%d”,&a,&b,&c);max=a;if(maxb)max=b;if(maxc)max=c;printf(最大数为:%d,max);第二章1 .假如我国国民生产总值的年增长率为10%,计 算 10年后我国国民生产总值与现在相比增长多少百分比。计算公式为P=(l+r)八 n,r 为年增长率;n 为年数;P 为与现在相比的百分比。解:#include#includevoid main()(double P,r=0.1,n=10;P=pow(1 +r),n);printf(64%lfW P);)3.请编程序将“China”译成密码,译码规律是用原来字母后面的第4 个字母代替原来的字母。例如,字母“A”后面第4 个字母是“E”,“E”代替“A”。因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使cl、c2、c3、c4、c5五个变量的值分别为C、h,、T、,n,、a经过运算,使c l、c2、c3、c4、c5分别变为,G,、T、,m,、T、并输出。解:#include void main()(charcl=,C,c2=,h,c3=,ic4=,n,c5=,a,;cl+=4;c2+=4;c3+=4;c4+=4;c5+=4;printf(“密码是 c%c%c%c%cn”,c 1 ,c2,c3,c4,c5);第三章3.用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,cl=A c2=,a 问在键盘上如何输入?解:#includevoid main()(int a,b;float x,y;char c 1,c2;scanf(4ta=%d,b=%d,&a,&b);scanf(4t x=%f,y=%e“,&x,&y);scanf(t4 cl=%c,c2=%c,&cl,&c2);)a=3,b=7x=8.5,y=71,82cl=A,c2=a5.设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用 scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后2 位数字。请编程序。解:#includevoid main()(float r,h,Cl,Sa,Sb,Va,Vb;scanf(tu%f,%f&r,&h);Cl=2*3.14%;Sa=3.14*r*r;Sb=4*Sa;Va=4*3.14*r*r*r/3;Vb=Sa*h;printf(Cl=%.2fn,Cl);printf(4iSa=%,2fnSb=%.2AnVa=%.2fnVb=%.2An,Sa,Sb,Va,Vb);6.输 入 个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9,输出要求有文字说明,取位 2 小数。解:#includevoid main()(float F,c;scanf(F,&F);c=5*(F-32)/9;printf(c=%.2f,c);)7.编程序,用 getchar函数读入两个字符给c l、c 2,然后分别用putchar函数和printf函数输出这两个字符。思考以下问题:变量c l、c2应定义为字符型或整形?或二者皆可?(2)要求输Hi c l 和 c2值的ASCII码,应如何处理?用 putchar函数还是printf函数?整形变量与字符变量是否在任何情况下都可以互相代替?如:char cl,c2;与 int cl,c2;是否无条件地等价?解:#includevoid main()(char cl,c2;cl=getchar();c2=getchar();putchar(c I);putchar();putchar(c2);putchar(4n,);)#includevoid main()(char cl,c2;cl=getchar();c2=getchai*();printf(44c l=%d c2=%dn,c 1 ,c2);printfCc 1 =%c c2=%cn,cl,c2);)第四章3.写出下面各逻辑表达式的值。设 a=3,b=4,c=5o(1)a+bc&b=c(2)allb+c&b-c(3)!(ab)&!clll(4)!(x=a)&(y=b)&0(5)!(a+b)+c-1&b+c/2解:)/7lzlz12345z(xz1xz(xz(xz(x011015.有 3 个整数a、b、c,由键盘输入,输出其中最大的数,请编程序。解:#includevoid main()(int a,b,c,temp,max;printf(“请输入3 个整数:”);scanf(“%d,%d,%d”,&a,&b,&c);temp=(ab)?a:b;max=(tempc)?temp:c;printf(3个整数的最大数是dn”,max);)6.给一个百分制成绩,要求输出等级,A9 0 分以上为,A,80-90分为B,为 79分为C,60分以下为D。解:#includevoid main()(float score;char grade;printf(“请输入学生成绩:”);scanf(u%f&score);while(score 100llscore0)printf(4n 输入有误,请重新输入:”);scanf(4%f&score);)switch(int)(score/l 0)(case 10:case 9:grade=,A,;break;case 8:grade=,B,;break;case 7:grade=,C,;break;case 6:grade=,D,;break;case 5:case 4:case 3:case 2:case 1:case 0:grade=,E,;break;printf(“成绩是5.1f,相应的等级是c.n”,score,grade);)7.给定一个不多于5 位的正整数,要求:求出它是几位数;分别输出每一位数字;(3)按逆序输出各位数字。例如原数为3 2 1,应输出123。解:#include void main()(long int num;int indiv,ten,hundred,thousand,ten_thousand,place;/*分 别 代 表 个 位、十 位、百 位、千 位、万 位 和 位 数 号printf(“请输入一个整数(099999):);scanf(%ld”,&num);if(num9999)place=5;else if(num999)place=4;else if(num99)place=3;else if(num9)place=2;else place=l;printf(44place=%dn,place);ten_thousand=num/l 0000;thousand=num/1000%10;hundred=num/l 00%10;ten=num%100/10;indiv=num%10;switch(place)case 5:printf(d,%d,%d,%d,%d,ten_thousand,thousand,hundred,ten,indiv);printf(lln 反序数字为:);printfCt%d%d%d%d%dn,indiv,ten,hundred,thousand,ten_thousand);break;case 4:printf(d,%d,%d,%d”,thousand,hundred,ten,indiv);printf(n反序数字为:);printf(t4%d%d%d%dn,indiv,ten,hundred,thousand);break;case 3:printf(%d,%d,%d”,hundred,ten,indiv);printf(un 反序数字为:);printf(6%d%d%dn,indiv,ten,hundred);break;case 2:printf(d,%d”,ten,indiv);printf(un 反序数字为:);printfC4%d%dnM,indiv,ten);break;case 1:printf(%d”,indiv);printf(n反序数字为:);printf(%dn,indiv);break;)8.企业发放的奖金根据企业的当年利润决定。当利润I 低于或等于100000元时,奖金可提成 10%;利润大于100000元,小于200000元(1000001200000)时,低 于 100000元的部分按10%提成,高 于 100000元的部分,可提成7.5%;利润大于200000元,小于400000元(200000lW400000)时,低于200000元的部分仍按上述办法提成(下同),高于200000元的部分按5%提成。利润大于400000元,小于600000元(400000IW600000)时,高于400000元的部分按3%提成。利润大于600000元,小 于 1000000元(600000K 1000000)时,高于600000的部分按1.5%提成;利润大于1000000元(D1000000)时,超 过 1000000元的部分按1%提成。从键盘输入当年利润I,求应发放奖金总数。要求:(1)用 if语句编程序;(2)用 switch语句编程序。解:(1)用 if语句编程序。#include void main()(long i;float bonus,bon 1 ,bon2,bon4,bon6,bon 10;bonl=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;/*利润为10万元时的奖金*/*利润为20万元时的奖金*/*利润为40万元时的奖金*/*利润为60万元时的奖金*/*利润为100万元时的奖金*/printf(“请输入利润i:);scanf(t%ld,&i);if(i=100000)bonus=i*0.1;else if(i=200000)bonus=bon l+(i-l 00000)*0.075;else if(i=400000)bonus=bon2+(i-200000)*0.05;else if(i=600000)bonus=bon4+(i-400000)*0.03;else if(i=1000000)bonus=bon6+(i-600000)*0.015;elsebonus=bon 10+(i-1000000)*0.01;printf(奖金是 10.2fn”,bonus);/*利润在10万元以内按0.1提成奖金*/*利润在10万至20万元时的奖金*/*利润在20万至40万元时的奖金*/*利润在40万至60万元时的奖金*/*利润在60万 至 100万元时的奖金9/*利润在100万元以上时的奖金*/(2)用 switch语句编程序。#include void main()long i;float bonus,bonl,bon2,bon4,bon6,bon 10;int c;bonl=100000*0.1;bon2=bon1 +100000*0.075;bon4=bon2+200000*0.05;bon6=bon4-1-200000*0.03;bon 10=bon6+400000*0.015;printf(“请输入利润i:);scanf(%ld”,&i);c=i/l 00000;if(c10)c=10;switch(c)(case 0:bonus=i*0.1;break;case 1:bonus=bonl+(i-100000)*0.075;break;case 2:case 3:bonus=bon2+(i-200000)*0.05;break;case 4:case 5:bonus=bon4+(i-400000)*0.03;break;case 6:case 7:case 8:case 9:bonus=bon6+(i-600000)*0.015;break;case 10:bonus=bon 10+(i-1000000)*0.01;)printf(奖金是 10.2F,bonus);)9.输入4 个整数,要求按由小到大的顺序输出。解:#include void main()(int t,a,b,c,d;printf(“请输入4 个整数scanf(%d,%d,%d,%d”,&a,&b,&c,&d);printf(4tn a=%d,b=%d,c=%d,d=%dnM,a,b,c,d);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=a;b=c;c=t;if(bd)t=b;b=d;d=t;if(cd)t=c;c=d;d=t;pr i nt f(排序结果如下:n);pr i nt f(4 t%d,%d,%d,%d n”,a,b,c,d);)1 0 .有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1。这4个塔的高度分别为1 0 m。塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为零)。解:#i n c l u d e v o i d m a i n()(i n t h=1 0;f l o a t x l=2,y I=2,x 2=-2,y 2=2,x 3=-2,y 3=-2,x 4=-2,y 4=-2,x,y,d 1 ,d 2,d 3,d 4;p ri n t f(“请输入一个点(x,y):);s c a n f(4t%f,%f;&x,&y);d l=(x-x l)*(x-x l)+(y-y l)*(y-y l);/*求该点到各中心点的距离*/d 2=(x-x 2)*(x-x 2)+(y+y 2)*(y+y 2);d 3=(x+x 3)*(x+x 3)+(y-y 3)*(y-y 3);d 4=(x+x 4)*(x-x 4)+(y+y 4)*(y+y 4);i f(d 1 1&d2 1&d3 1&d4 1)h=0;/*判断该点是否在塔外*/p ri n t f(“该点高度为%d n”,h);)1 1 .求+6 x +c =0方程的解。根据代数知识,应该有以卜几种可能:(l)a=0,不是二次方程,而是一次方程。(2)/_ 4 =0,有两个相等的实根。(3)6 -4 a c 0 ,有两个不等的实根。(4)&2-4 ac 0,有两个共物复根。编写程序,运行时,分别给出不同的a,b,c值,相应于上面4种情况,分析输出结果。解:#i n c l u d e#i n c l u d e#i n c l u d e v o i d m a i n()(f l o a t a,b,c,d i s c,x 1 ,x 2,re a l p a rt,i m a g p a rt;s c a n f(t 4%f,%f,%f&a,&b,&c);p ri n t f(t 4T h e e q u a t i o n );i f(f a b s(a)=1 e-6)p ri n t f(4 i s n o t a q u a d ra t i c n);e l s edisc=b*b4*a*c;if(fabs(disc)1 e-6)x l=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf(4thas distinct real roots:%8.4f and%8.4fn”,xl,x2);)else(realpart=-b/(2*a);imagpart=sqrt(-disc)/(2*a);printf(4thas complex roots:n);printfCt%8.4f+%8.4fin,realpart4magpart);printfC4%8.4f-%8.4fin,realpart,imagpart);)第五章1.求 100-200间的全部素数。解:#include#includevoid main()(int m,i,n=0;double k;for(m=101;m=200;m=m+2)(k=sqrt(m);for(i=2;i=k+l)(printf(%d”,m);n=n+l;)if(n%10=0)printf(“n”);)2.输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。解:#includevoid main()char c;int i=O,j=O,k=O,l=O;while(c=getchar()!=,n,)(if(c=A&c=a&c=,0,&c=,9,)j+;else if(c=?)k+;else 1+;)printf(i=%d,j=%d,k=%d,l=%dn,ij,k,l);)3.输出所有“水仙花数”,所 谓“水仙花数”是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因 为 153=1八 3+5八 3+3八 3。解:#include#includevoid main()(int i,j,k,n;printf(“水仙花”数是巧;for(n=100;n 1000;n+)(i=n/100;j=n/10-i*10;k=n%10;if(n=i*i*i+j*j*j+k*k*k)printf(%4d,n);)printf(44nM);4.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。到 第 10天早上想再吃时,见只剩下一个桃子了。求第一天共摘多少桃子。解:#includevoid main()(int day,xl,x2;day=9;x2=l;while(day0)x 1=(x2+1)*2;x2=x1;day;)printf(total=%dn,x 1);)5.球从100米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第10次落地时,共经过了多少米?第 10次反弹多高?解:#includevoid main()(int i,n;double h=100,s=100;scanf(d”,&n);for(i=l;i=n;i+)(h*=0.5;if(i=l)continue;s=2*h+s;)printfC4h=%f,s=%fn,h,s);)6.打印以下图案*解:#include#includevoid main()(int i,j,k;for(i=0;i=3;i+)(for(j=0;j=2-i;j+)printf(44);for(k=0;k=2*i;k+)printf(*”);printf(n”);)for(i=0;i=2;i+)for(j=0;j=i;j+)printf();for(k=0;k=4-2*i;k+)printf,*);printf(n”);)7.两个乒乓球队进行比赛,各出3 人。甲队为A、B、C 3 人,乙队为X、Y、Z 3 人。已抽签决定比赛名单。有人向队员打听比赛的名单,A 说他不和X 比,C 说他不和X、Y 比,请编程序找出3 三队选手的对阵名单。解:#includevoid main()(char i,j,k;/*i是 A 的对手,j 是 B 的对手,k 是 C 的对手*/for(i=X;iv=Z;i+)for(j=X;j=Z;j+)(if(i!=j)for(k=X;k=Z;k+)if(i!=k&j!=k)(if(i!=X&k!=X&k!=Z)printf(order is A-%ctB-%ctC-%cn,i,j,k);)第六章1.已知一个班10个学生的成绩,要求输入这10个学生的成绩,然后求出它们的平均成绩。解:#include main()(float allOJ,sum,avg;inti;sum=0.0;printfCTlease input the students score:);for(i=0;i10;i+)scanf(%f,&ai);sum=sum+ai;)avg=sum/10;printf(4The average is:%fn”,avg);2.已知一个班10个学生的成绩,存放在一个一维数组中,要求找出其中成绩最高的学生的成绩和该生的序号。解:#includevoid main()(int ch10;int i,max=0,xh;printf(“请输入10个学生的成绩:n);for(i=0;imax)(max=chfi;xh=i;)printf(“成绩最高为:dn”,max);printf(“该生的序号为:%dn”,xh);)3,有 3 个学生,上 4 门课,要求输入全部学生的各门课成绩,并分别求出每门课的平均成绩。解:#include#include#define RENSHU 3#define KECHENG 4void main()(float chengji4 4;int i,j;printf(t4 n 请 按 人 输 入(一 次 输 入 一 个 人 所 有 课 程 的 成 绩)成 绩(d 人,%d 门课程):”,RENSHU,KECHENG);for(i=0;iRENSHU;i+)(printf(44n 第1 人:”,i+1);for(j=0;jKECHENG;j+)scanfC%r,&chengjiij);)for(j=0;jKECHENG;j+)(chengjiRENSHUj=O;for(i=0;iRENSHU;i+)chengjiRENSHU j+=chengjii|j;chengjiRENSHUj=chengjiRENSHUj/RENSHU;)for(i=0;i=RENSHU;i+)(for(j=O;jKECHENG;j+)printf(%8.2F:chengjiij);printf(n”);)printf(“n”);)4.已知5 个学生的4 门课的成绩,要求求出每个学生的平均成绩,然后对平均成绩从高到低将各学生的成绩记录排序。解:#include#include void main()(int a54=94,78,87,76,66,87,75,69,100,98,89,77,82,58,72,84,82,73,67,54);int i,j,sum;float a verage,b5,t;for(i=0;i5;i+)(sum=0;for(j=0;j4;j+)(sum=sum+aij;biJ=sum/4.0;)printf(average%d=%4.2fn”,i+l,bij);)for(j=0;j4;j+)for(i=j+l;ibj)(t=bi;bi=bj;b|j=t;for(i=0;i5;i+)printf(“.2fn,bi);)5.将 一个数组的值按逆序重新存放,例如,原来顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。解:#includevoid main()int i,a 10,temp;for(i=0;i10;i+)scanf(%d”,&ai);for(i=0;i10;i+)printfC4%4d,ai);for(i=0;i5;i+)(temp=ai;ai=a9-i;a9-i=temp;for(i=0;i10;i+)printf(“4d”,ai);printf(n”);)6.有 个 15数按由小到大顺序存放在一个数组中,输入个数,要求用折半查找法找出该数组中第几个元素的值。如果该数不在数组中,则输出“无此数北解:#includevoid main()(int a15=14,13,12,ll,l 0,9,8,7,6,5,4,3,2,1,0);int start,end,mid,i,find_flag;int x;printf(amid)end=mid-1;else start=mid+1;while(startend);7.输出以下图案:*解:#includevoid main()(int i,j,k;char a55;for(i=0;i5;i+)(for(j=0;j5;j+)(printf(%c”,ai 皿);)printf(n”);for(k=l;k=i+l;k+)printf();)printf(n”);)8.有一篇文章,共有3 行文字,每行有个80字符。要求分别统计出其中英文大写字母、”写字母、空格以及其它字符的个数。解:#includevoid main()(int i,j,upp,low,dig,spa,oth;char text380;upp=low=dig=spa=oth=0;for(i=0;i3;i+)printf(4nPlease input line%d:n,i+l);gets(texti);for(j=0;j=A&textijJ=,a?&texti j=0,&textij=,9,)dig+;else if(textij=,)spa+;else oth+;)for(i=0;i3;i+)printf(sn”,texti);printf(4upper case:%dn,upp);printf(4tlower case:%drT,low);printfCdigit case:%dnM,dig);printf(4space case:%dn,9,spa);printf(Z a-zB-Y b-yC-X c-x即 第 1个字母变成第26个字母,第 i 个字母变成第(264+1)个字母。非字母字符不变。假如已知道密码是Um torhs,要求编程序将密码译回原文,并输出密码和原文。解:#includevoid main()(int i;char strll00J,str2 100J;gets(strl);for(i=0;str li!=,0,;i+)if(str 1 i=65&strl i=97&strl i=122)str2ij=219-strlij;else str2i=strli;printf(44%sn%sn,str 1 ,str2);)10.编一程序,将两个字符串连接起来,(1)用 strcat函数;(2)不用strcat函数。解:(1)#includevoid main()(int i,j;char str 1 100,str2 100,str3201;gets(strl);gets(str2);str3=strcat(str 1 ,str2);printf(%sn%sn%sn,str 1 ,str2,str3);(2)#includevoid main()int i,j;char strl100,str2100,str3201;gets(strl);gets(str2);for(i=0;strl i!=,0,;i+)str3i=strli;for(j=0;str2j!=0;j+)str3j+i=str2j;printf(%sn%sn%sn,str 1 ,str2,str3);)第七章I.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。解:#includeint maxyueshu(int m,int n)(int i=l,t;for(;i=m&i=n)j=m;else j=n;for(;!(j%m=O&j%n=0);j+);return j;)void main()(int a,b,max,min;printfCenter two number is:”);scanf(d,%d”,&a,&b);max=maxyueshu(a,b);min=minbeishu(a,b);printfCmax=%d,min=%dn,max,min);)2.写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的消息。解:#includeint psushu(int m)int i,t=l;for(i=2;im/2&t=1 ;i+)if(m%i=O)t=0;return t;)void main()(int a,s;printf(44enter sushu is n);scanf(%d,&a);s=psushu(a);if(s=l)printf(4a is sushun);else printfCs is not sushun,);)3.写一个函数,使给定的一个二维数组(3*3)转置,即行列互换。解:#includeint zhuangzhi(int b33)(int i,j,t;for(i=0;i=i&j3-i;j+)t=biU;biU=bUi;bUi=t;)void main()(int a33;int ij;for(i=0;i3;i+)for(j=0;jv3;j+)scanf(d”,&ai(j);for(i=0;iv3;i+)(for(j=0;j3;j+)printf(%d”,aij);printf(n”);)zhuangzhi(a);for(i=0;i3;i+)for(j=0;j3;j+)printf(%d”,ai;printf(n”);4.写一 函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。解:#includevoid main()(char strOflOO;gets(strO);fanxu(strO);puts(strO);)fanxu(char strl100)(char str2 100;strcpy(str2,str 1);t=strlen(strl);for(i=0,j=t-1 ;j-1 ;i+J-)strli=str2j;5.写一 一 函数,将两个字符串连接。解:#includelianjie(char a100,b100)(strcat(a,b);)void main()(char str 1 100,str2 100;gets(strl);gets(str2);lianjie(strl,str2);puts(strl);)6.写一函数,将两个字符串中的元音字母复制到另一个字符串,然后输出。解:#includefuzhi(chara100,b100)(int i,j=0;for(i=0;ai!=,0,;i+)if(ai=97llai=101llai=105llai=lllllai=117llai=65llai=69llai=73llafil=85)bj=ai;j+;void main()char strl100,str2100;gets(strl);fuzhi(strl,str2);puts(str2);)7.写一函数,输入一个四位数字,要求输出这四个数字字符,但每个数字间空一个空格。如输入2 0 0 8,应输出“2_0_0_8”。解:#includevoid insert(char str)(inti;for(i=strlen(str);i0;i)(str2*i=stri;printf(44noutput:n%s,str);)void main()(char str80;printf(4ninput four digits:);scanf(4t%s,str);insert(str);)8.编写一函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其它字符的个数,在主函数中输入字符串以及输出上述结果。解:#includechar tongji(char str0100,int b4)(inti;for(i=0;str0i!=,0,;i+)(if(str0i=65&str0i=97&str0i=48&strOi=57)bl J+;else if(strOi=32)b2+;else b3J+;)void main()char strl100;static int i,a4;gets(strl);tongji(strl,a);printf(4zimu Shuzi Kongge Qilan);for(i=0;i4;i+)printf(“-8d”,ai);printf(“n”);)9.写一函数,输入一行字符,将此字符串中最长的单词输出。解:#includecechang(char strl 100,word015)(int i=O,j=O,t=O;static char wordl15J;for(;strli!=,0,;i+)if(!(strli=97&strli=65&strli=t)strcpy(wordO,word 1);)void main()(char str0100,longword15;gets(strO);cechang(strOJongword);puts(longword);)10.写一函数用“起泡法”对输入的10个字符按由小到大的顺序排列。解:#includeint paixu(int x)(intfor(j=l;j10;j+)for(i=0;ixi+1 )t=xi+1 ;xi+1 =xi;xi=t;)void main()(int yllO;inti;for(i=0;i10;i+)scanf(d”,&yi);paixu(y);for(i=0;i10;i+)printf(5d”,yi);printf(n”);)11.输 入 10个学生5 门课的成绩,分别用函数实现下列功能:计算每个学生平均分;计算每门课的平均分;找出所有50个分数中最高的分数所对应的学生和课程;解:#includefloat xl10,x25;float pp(),cc(),find();void main()(char name1020,class520;float scoref 1015,max5;int a5,i,j;for(i=0;i10;i+)gets(namei);for(j=0;j5;j+)gets(classj);for(i=0;i10;i+)for(j=0;j5;j+)scanf(tl%f&scoreij);pp(score);cc(score);find(score,max,a);for(i=0;i10;i+)(puts(nameij);printfC%.3fnM,xli);)for(j=0;j5;j+)(puts(classj);printfC%.3fn,x2|j);)for(j=0;j5;j+)(printf(.3f n”,max|jD;puts(nameaj);puts(class|jj);)float pp(float f105)float sum=0;int ij;for(i=0,sum=0;i 10;i+)for(j=0;j5;j+)sum=sum+fij;xli=sum/5;)float cc(float y105)(float sum=0;int i,j;for(j=0;j5;j+)(for(i=0;i10;i+)sum=sum+yij;x2j=sum/10;)(float find(float z105,s5;int t5)(int i,j;forG=0,sU=z0U;j5;j+)for(i=0;i10;i+)if(sUziU)sU=ziU;tU=i;)1 2.写儿个函数:输入10个职工的姓名和职工号;按职工号由小到大顺序排序,姓名顺序也随之调整;要求输入一个职工号,用折半法找出该职工的姓名,从主函数输入要查找的职工号,输出该职工姓名。解:#include#define N 10find(int a,b)(int i,j,s,t,cN2;for(i=0;iN;i+)cil=ai;cil=i;for(i=0;iN;i+)for(j=0;jci+l0)t=ci0;ci0=ci+l0;ci+l0=t;s=cil;cil=ci+ll;ci+ll

    注意事项

    本文(c语言程序设计课后习题答案2.pdf)为本站会员(无***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开