习题课245章.docx
- 文档编号:26465820
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:20
- 大小:25.59KB
习题课245章.docx
《习题课245章.docx》由会员分享,可在线阅读,更多相关《习题课245章.docx(20页珍藏版)》请在冰豆网上搜索。
习题课245章
第四章习题讲解
4.6实训
实训1
【实训内容】简单if语句。
【实训目的】掌握简单if语句的使用。
【实训题目】分析下面两个程序,写出程序的功能并上机验证。
【程序1】
#include
main()
{
floatx,y,z;
printf("Pleaseenterx,y,z:
");
scanf("%f,%f,%f",&x,&y,&z);
if(x if(x printf("%5.2f\n",x); } 【程序2】 #include main() { floatx,y,z,max; printf("Pleaseenterx,y,z: "); scanf("%f,%f,%f",&x,&y,&z); max=x; if(max if(max printf("%5.2f\n",max); } 实训2 【实训内容】if-else语句。 【实训目的】掌握if-else语句的使用。 【实训题目】简单加法练习程序。 阅读程序并上机调试,改正其中的错误,使之能正常运行。 #include #include #include main() { intnum1,num2,answer; srand(time(NULL)); num1=rand()%100; num2=rand()%100; printf("%d+%d=",num1,num2); scanf("%d",&answer); if(answer==num1+num2) printf("回答正确.\n"); else printf("回答错误.\n"); } 实训3 【实训内容】if嵌套 【实训】编写程序,根据输入的某年某月,输出该月的天数。 【程序代码】 #include main() { inty,m,d; printf("Pleaseinputtheyearandmonth: "); scanf("%d-%d",&y,&m); if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) d=31; elseif(m==4||m==6||m==9||m==11) d=30; elseif(m==2) if((y%4==0&&y%100! =0)||(y%400==0)) d=29; else d=28; printf("\nThereare%ddaysin%d-%d\n\n",d,y,m); } 【举一反三】用switch语句修改上面程序,并与if语句进行比较。 #include main() { inty,m,d; printf("Pleaseinputtheyearandmonth: "); scanf("%d-%d",&y,&m); switch(m) { case1: case3: case5: case7: case8: case10: case12: d=31;break; case4: case6: case9: case11: d=30;break; case2: switch((y%4==0&&y%100! =0)||(y%400==0)) { case1: d=29;break; case0: d=28;break; } } printf("\nThereare%ddaysin%d-%d\n\n",d,y,m); } 4-11编程题 (1)编写程序,从键盘输入整数n,当n为偶数时,输出n的平方值;否则输出n的立方值。 【程序代码】 #include main() { intn; scanf("%d",&n); if(n%2==0) printf("%d的平方值为: %d\n",n,n*n); else printf("%d的立方值为: %d\n",n,n*n*n); } (2)从键盘输入一个英文字母,如果是小写字母,则将它变为该字母后一位字母输出;如果是大写字母,则先将它变为小写字母,然后再变为该小写字母后一位字母输出。 【程序代码】 #include main() { charch; printf("请从键盘输入一个英文字母\n"); scanf("%c",&ch); if(ch>='a'&&ch<'z') printf("%c的后一位字母为: %c\n",ch,ch+1); elseif(ch>='A'&&ch<'Z') printf("%c变为小写字母的后一位字母为: %c\n",ch,ch+32+1); else printf("输入错误! \n"); } (3)某商场给顾客购物的折扣率为: 购物金额<200元,不打折; 200元<=购物金额<500元,9折; 500元<=购物金额<1000元,8折; 购物金额>=1000元,7.5折。 输入一个购物金额,输出折扣率、购物实际付款金额。 #include main() { floatx; scanf("%f",&x); if(x<200) printf("折扣率为1.0,购物实际付款金额为: %f\n",x); else if(x<500) printf("折扣率为0.9,购物实际付款金额为: %f\n",0.9*x); else if(x<1000) printf("折扣率为0.8,购物实际付款金额为: %f\n",0.8*x); else printf("折扣率为0.75,购物实际付款金额为: %f\n",0.75*x); } (4)输入一个人的出生年、月、日,再输入当前年、月、日,计算此人的实际年龄。 【程序代码】 #include main() { inty1,m1,d1,y2,m2,d2,age; printf("请依次输入出生年月日,以空格间隔: "); scanf("%d%d%d",&y1,&m1,&d1); printf("请依次输入当前年月日,以空格间隔: "); scanf("%d%d%d",&y2,&m2,&d2); age=y2-y1-1; if(m2>m1) age++; else if(m2==m1&&d2>=d1) age++; printf("你的年龄为: %d\n",age); } 第五章习题讲解 【例5-11】编写程序,输出如下图形: 【程序代码】 #include main() { inti,j; for(i=1;i<=6;i++) { for(j=1;j<=7-i;j++) printf(""); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); } } 5.6实训 实训1 【实训目的】学习while循环的使用,累加和的计算方法。 【实训题目】 (1)从键盘输入10个整数,求其累加和。 方法一: #include main() { inta,sum=0,i=1; while(i<=10) { scanf("%d",&a); sum=sum+a; i++; } printf("10个整数的累加和为: %d\n",sum); } 实训2 【实训目的】学习do-while循环结构的控制 【实训题目】求自然对数底e的值。 ,要求直到最后一项的值小于10-6为止。 #include main() { doublee=1,item; inti=1,fm=1; do { e+=1.0/fm; i++; fm*=i; }while(1.0/fm>=1.0e-6); printf("e的值为: %lf\n",e); } 实训3 【实训目的】学习for循环语句的使用。 【实训题目】 (一)求100~999中的水仙花数。 (水仙花数是指一个数的各位数字的立方和等于该数自身的数,如: 153=1*1*1+5*5*5+3*3*3) 【程序代码】 #include main() { inti,j,k,n; for(n=100;n<=999;n++) { i=n/100; j=n/10%10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%d是水仙花数。 \n",n); } } (二)编写程序,统计3000~8000之间有多少个无重复数字的奇数,输出这些奇数和统计结果,要求按每行10个数的格式输出结果。 说明: 3015、3217为无重复数字的奇数,而3113、3211为有重复数字的奇数。 #include main() { inti,ge,shi,bai,qian,count=0; for(i=3001;i<=8000;i+=2) { ge=i%10; shi=i/10%10; bai=i/100%10; qian=i/1000; if(ge==shi||ge==bai||ge==qian||shi==bai||shi==qian||bai==qian) continue; count++; printf("%d",i); if(count%10==0) printf("\n"); } } 实训4 【实训目的】掌握for-for循环嵌套的应用。 【实训题目】 (一)编写程序,输出下面图形: 【程序代码】 #include main() { inti,j; for(i=1;i<=5;i++) { for(j=1;j<=5;j++) { printf("%d",i); } printf("\n"); } } (二)编写程序,输出下面图形: #include main() { inti,j; for(i=1;i<=6;i++) { for(j=1;j { printf(""); } printf("############\n"); } } 实训5 【实训目的】掌握循环结构处理问题的方法。 【实训题目】假设某班有5名学生,期末考4门课程。 编写程序,要求输入每位学生的各门单科成绩,计算出每人的平均成绩。 #include main() { inti,j; floatx,ave; for(i=1;i<=5;i++) { printf("请输入第%d名同学的4门课成绩: \n",i); ave=0; for(j=1;j<=4;j++) { scanf("%f",&x); ave+=x; } printf("第%d名同学的四门课平均成绩为%f\n\n\n",i,ave/4); } } 实训6 【实训目的】掌握用循环结构处理问题的方法 【实训题目】算术练习程序。 根据用户选择的菜单项,让计算机一次为小学生出10道简单的算术题,每题10分,小学生输入答案后,程序自动判定是否正确,最后给出小学生答对题目的数量和得分。 【程序代码】 #include #include #include main() { inta,b,xz,answer,i,n=0,total=0,f=0; srand(time(NULL)); printf("\n\n"); printf("*******************************\n"); printf("1————加法\n"); printf("2————减法\n"); printf("3————乘法\n"); printf("4————除法\n"); printf("*********************************\n"); printf("请选择运算: "); scanf("%d",&xz); switch(xz) { case1: f=1; printf("请看题,输入答案: \n\n"); for(i=1;i<=10;i++) { a=rand()%10;b=rand()%10; printf("第%d题: %d+%d=",i,a,b); scanf("%d",&answer); if(answer==a+b) { n++;total=total+10; } } break; case2: f=1; printf("请看题,输入答案: \n\n"); for(i=1;i<=10;i++) { a=rand()%10;b=rand()%10; printf("第%d题: %d-%d=",i,a,b); scanf("%d",&answer); if(answer==a-b) { n++;total=total+10; } } break; default: f=0; } if(f==1) printf("\n\n你共答对了: %d道题,得分: %d\n\n",n,total); else printf("\n\n对不起,你选择的运算不能实现,退出练习程序! \n\n"); } 5-9编程题 (1)一张纸的厚度为0.1mm,珠穆朗玛峰的高度为8848.13m,假如纸张足够大,将纸对折多少次后可以超过珠峰的高度? 【程序代码】 #include main() { inti=0; floathigh=0.0001; while(high<=8848.13) { high=high*2; i++; } printf("将纸对折%d次后,可以超过珠峰的高度。 ",i); } (2)计算1X2+3X4+5X6+……+99X100的值。 【程序代码】 #include main() { inti,sum=0; for(i=1;i<=99;i=i+2) { sum+=i*(i+1); } printf("sum=%d\n",sum); } (3)输入6个学生成绩,分别统计成绩在85-100分,60-85分和60分以下各分数段中的人数。 #include main() { inti,score,a=0,b=0,c=0; for(i=1;i<=6;i++) { printf("请输入第%d名学生的成绩: \n",i); scanf("%d",&score); if(score<60) c++; if(score>=60&&score<85) b++; if(score>=85&&score<=100) a++; } printf("85-100之间的人数为: %d,60-85之间的人数为: %d,60分以下的人数为: %d",a,b,c); } (4)在1~500中,找出能同时满足用3除余2,用5除余3,用7除余2的所有整数。 #include main() { inti; for(i=1;i<=500;i++) { if(i%3==2&&i%5==3&&i%7==2) printf("%d",i); } } (5)输出如下图所示图案。 #include main() { inti,j; for(i=1;i<=5;i++) { for(j=5-i;j>=1;j--) printf(""); for(j=1;j<=2*i-1;j++) printf("%d",i); printf("\n"); } for(i=1;i<=4;i++) { for(j=1;j<=i;j++) printf(""); for(j=1;j<=9-2*i;j++) printf("%d",5-i); printf("\n"); } } (6)已知xyz+yzz=532,其中x、y、z都是数字,编写程序求出x、y、z分别是多少? #include main() { intx,y,z; for(x=0;x<=5;x++) for(y=0;y<=5;y++) for(z=0;z<=9;z++) { if(100*x+10*y+z+100*y+10*z+z==532) printf("x=%d,y=%d,z=%d\n\n",x,y,z); } } 【补充: 】 1、输出Fibonacci数列,直至数列的最末项不大于100。 #include main() { inta0,a1,a2,i; a0=a1=1; printf("%d%d",a0,a1); a2=a0+a1; for(;a2<100;) { printf("%d",a2); a0=a1; a1=a2; a2=a0+a1; } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 习题 245