c语言实例教程课后题答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第4章选择结构一.选择题1、D2、C3、B4、B5、C6、C7、C8、D9、C10、A11、A12、D13、B14、C二.填空题1、02、013、max=124、end5、d=206、17、70~848、firstErrorthird三.编程题1.由键盘输入三个学生成绩,求平均成绩,并找出最高成绩。程序:main(){floatx,y,z;floatmax,avg;printf(″请输入三个数x,y,z:″);scanf(″%f,%f,%f″,&x,&y,&z);max=x;if(ymax)max=y;if(zmax)max=z;avg=(x+y+z)/3;printf(”平均成绩=%5.2f,最高成绩=%5.2f\n”,avg,max);}2.有一个函数:x(x1)y=2x-1(1≤x10)3x-11(x≥10)写一程序,输入x,输出y值。main(){intx,y;printf(”inputx:”);scanf(”%d”,&x);if(x1){y=x;printf(”x=%d,y=x=%d\n”,x,y);}elseif(x10){y=2*x-1;printf(”x=%d,y=2*x-1=%d\n”,x,y);2}else{y=3*x-11;printf(”x=%d,y=3*x-11=%d\n”,x,y);}}3.编写程序,输入一位学生的生日,并输入当前的日期,输出该生的实足年龄。main(){intage,y1,m1,d1,y2,m2,d2;printf(”输入生日日期(年、月、日):”);scanf(”%d%d%d”,&y1,&m1,&d1);printf(”输入当前日期(年、月、日):”);scanf(”%d%d%d”,&y2,&m2,&d2);age=y2-y1;if(m1m2)age--;if(m1==m2&&d1d2)age--;printf(”ageis%d\n”,age);}4.给一个不多于5位的正整数,求出它是几位数,分别打印出每一位数字,然后再按逆序打印出各位数字。main(){longintnum;intindiv,ten,hundred,thousand,ten_thousand,place;printf(”请输入一个整数(0~99999):”);scanf(”%ld”,&num);if(num9999)place=5;elseif(num999)place=4;elseif(num99)place=3;elseif(num9)place=2;elseplace=1;printf(”place=%d\n”,place);printf(”每位数字为:”);ten_thousand=num/10000;thousand=(num-ten_thousand*10000)/1000;hundred=(num-ten_thousand*10000-thousand*1000)/100;ten=(num-ten_thousand*10000-thousand*1000-hundred*100)/10;indiv=num-ten_thousand*10000-thousand*1000-hundred*100-ten*10;switch(place){case5:printf(”%d,%d,%d,%d,%d\n”,ten_thousand,thousand,hundred,ten,indiv);printf(”反序数字为:”);printf(”%d,%d,%d,%d,%d\n”,indiv,ten,hundred,thousand,ten_thousand);break;case4:printf(”%d,%d,%d,%d\n”,thousand,hundred,ten,indiv);3printf(”反序数字为:”);printf(”%d,%d,%d,%d\n”,indiv,ten,hundred,thousand);break;case3:printf(”%d,%d,%d\n”,hundred,ten,indiv);printf(”反序数字为:”);printf(”%d,%d,%d\n”,indiv,ten,hundred);break;case2:printf(”%d,%d\n”,ten,indiv);printf(”反序数字为:”);printf(”%d,%d\n”,indiv,ten);break;case1:printf(”%d\n”,indiv);printf(”反序数字为:”);printf(”%d\n”,indiv);break;}}5.某商场在节日期间举办促销活动,顾客可按购买商品的款数多少分别给予以下不同的优惠折扣:购物不足250元的,没有折扣,赠送小礼品;购物满250元,不足500元的,折扣5%;购物满500元,不足1000元的,折扣10%;购物满1000元,不足2000元的,折扣15%;购物满2000元及2000元以上,折扣20%;试用switch语句编写程序,计算顾客的实际付款数。main(){floatpayment,discount,amount;inttemp;charrmb=’\x9d’;printf(”Pleaseinputyourpayment:”);scanf(”%f”,&payment);temp=(int)payment/250;switch(temp){case0:discount=0;printf(”youcangetalittlegift.\n”);break;case1:discount=5.0;break;case2:case3:discount=10.0;break;case4:case5:case6:case7:discount=15.0;4break;default:discount=20.0;break;}amount=payment*(1-discount/100);printf(”youpay%c%.2f\n”,rmb,amount);}5第5章循环结构程序设计三.编程题1.求从1到100之间的偶数之和。main(){inti,sum=0;for(i=1;i=100;i++)if(i%2==0)sum+=i;printf(sum=%d\n,sum);}2.编程求出200~300之间,满足条件:三位数字之积为42,三位数字之和为12的数。main(){inti=2,j,k;for(j=0;j=9;j++)for(k=0;k=9;k++)if(i*j*k==42&&i+j+k==12)printf(%d\t,100*i+10*j+k);}3.打印出以下图案:****************main(){inti,j,k;for(i=1;i=4;i++){for(j=1;j=4-i;j++)printf((””);for(k=1;k=2*i-1;k++)printf(”*”);printf(”\n”);}}4.编程实现百钱买百鸡的方法。设公鸡每只5钱,母鸡每只3钱,小鸡3只1钱,且需包含公鸡、母鸡和小鸡,求可有哪几种方案。main(){inti,j,k;for(i=1;i=20;i++)for(j=1;j=33;j++)for(k=1;k=100;k++)if(5*i+3*j+k/3.0==100&&i+j+k==100)6printf(%d,%d,%d\n,i,j,k);}5.从键盘输入一些整数,统计大于零的整数个数和小于零的整数个数。提示:用输入零来结束输入。main(){intn,sum1=0,sum2=0;scanf(”%d”,&n);while(n!=0){if(n0)sum1++;elsesum2++;scanf(”inputn:”,&n);}printf(”大于零的整数个数=%d,小于零的整数个数=%d”,sum1,sum2);}一.选择题1、D2、A3、C4、B5、C6、C7、D8、B9、C10、D11、B12、A13、A14、A二.填空题1、52、523、89214、175、#*#*$6、y=-17、1010918、X9、x=0xmin10、x1x1/2-27第6章三.编程题1.用带参的宏,从3个数中找出最大数。#includestdio.h#defineMAX(a,b)((a)(b)?(a):(b))/*带参宏定义,注意加括号*/voidmain(){inta,b,c;printf(Inputthreeintegers:);scanf(%d,%d,%d,&a,&b,&c);printf(max=%d\n,MAX(MAX(a,b),c));}2.用条件编译方法实现以下功能:输入一行电报文字,可以任选两种输出:一为原文输出;一为将字母变成其下一字母(如’a’变成’b’……’z’变成’a’。其他字符不变)。用#define命令来控制是否要译成密码。例如:“#defineCHANGE1”则输出密码。若“#defineCHANGE0”则不译成密码,按原码输出。(字符数组请参阅第8章)程序见下一页分析:字符数组以‘\0’结束,可采用第3种方式条件编译。如果想输出原文,可以将程序第3行改为:#defineCHANGE0#includestdio.h#defineMAX80/*宏定义*/#defineCHANGE1voidmain(){charstr[MAX];inti;printf(Inputtext:\n);gets(str);#if(CHANGE)/*条件编译*/{for(i=0;iMAX;i++){if(str[i]!='\0')if(str[i]='a'&&str[i]'z'||str[i]=='A'&&str[i]=='Z')str[i]+=1;elseif(str[i]=='z'||str[i]=='Z')str[i]-=25;}}#endifprintf(Output:\n%s,str);}8第7章函数1.写两个函数,分别求两个整数的最大公约数和最小公倍数。分析:设两个整数为u和v,用辗转相除法求最大公约数,最小公倍数=uv/最大公约数。“辗转相除”法有下列步骤:1)若uv,用u除以v求余数r.2)若r=0,则v为最大公约数;若r!=0,将r赋给v,v赋给u.3)r=0,v(最后一次)为最大公约数。程序如下:inthcf(intu,intv)/*求最大公约数*/{intt,r;if(vu){t=u;u=v;v=t;}while((r=u%v)!=0){u=v;v=r;}return(v);}intlcd(intu,intv,inth)/*求最小公倍数*/{return(u*v/h);}main()/*主函数*/{intu,v,h,l;scanf(”d%,d%”,&u,&v);h=hcf(u,v);printf(”H.C.F=d%\n”,h);l=lcd(u,v,h);printf(”L.C.D=d%\n”,l);}2.编写一个函数,判断从键盘输入的一个整数是否为奇数,并在调用函数中输出是奇数的整数。#includestdio.hintodd(intn)/*判断是否为奇数,是奇数flag值为1,不为奇数flag值为0*/{intflag=1;if(n%2==0)flag=0;return(flag);}voidmain(){intx;printf(Inputaninteger:);scanf(%d,&x);if(odd(x))/*调用函数odd*/printf(\n%disaodd.,x);elseprintf(\n%disnotaodd.,x);}3.编写两个函数分别完成电文的加密和解密工作。加密方法为:将电文中字母A变成E,a变成e,即变成其后的第4个字母,W变成A,X编程B,Y变成C,Z变成D,非字母字符不变,例如”China!”加密后变为”Glmre!”。在主程序中输入一行字符,对其进行加密,输出密码,并对密码进行解密,输出原文。9#includ

1 / 45
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功