第三次作业(2)
2018-11-25 22:51 cheng程旭 阅读(315) 评论(12) 编辑 收藏 举报作业要求 :【https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2359】 开头小结:又经过了几周的学习,这几周学习的依然是循环语句,那么来看一看这几周的难题吧。
第7次作业:7-3 统计学生平均成绩与及格人数
实验代码:
//本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。 //77 54 92 73 60 #include <stdio.h> int main(void) { int i=0,n=0,count=0,sum=0,grade=0; double average=0; scanf("%d",&n); if(n==0){ printf("average = 0.0\n"); printf("count = 0\n"); } else{ for(i=1;i<=n;i++){ scanf("%d",&grade); sum=sum+grade; if(grade>=60){ count++; } } average= sum*1.0/n; printf("average = %.1f\n",average); printf("count = %d",count);} }
解题思路:这道题还是比较简单的,但是有一些易错点。
1.首先这道题先定义几个变量,需要平均成绩,输入的人数,以及及格人数,以及循环需要的i,想求平均成绩就需要先加和sum这几个变量。
2.做这道题还需要考虑当输入人数为0时会输出什么,因此需要用到if-else语句来判断n是否等于0,当等于0时,输出平均成绩0与及格人数0.
3.当n!=0时,这是进入循环,输入人数,输入成绩,进行计算与统计;
4.最后输出平均成绩与及格人数。
流程图:
运行结果:
遇到的错误:
当输入n=0时,如果平均成绩不是0.0,那么PTA运行结果就是错的,这跟题里说的保留一位小数有关,错误结果如下;
看似是对的,但PTA却显示错误,正是因为在判断n是否等于0时的输出语句average=0而不是0.0;
调试:
经过调试,没什么错误;
第八次作业:7-2 寻找250
第八次作业我选择了比较有趣的一道题,那就是寻找250,虽然题目简单,但是符合所学知识,即while语句的循环;
代码:
#include <stdio.h> int main(void) { int i,num; while(num!=250){ scanf("%d",&num); i++; } printf("%d",i); return 0; }
解题思路:
这道题目的是让用户输入一堆数字,再输入数字中找到第多少位是250这个数字,并输出位数;
1.定义变量i,num;
2.开始循环,当num!=250时开始循环,用户开始输入数字;
3.当输入一个不是250的数字,i++;
4.输出位数;
流程图:
运行结果:
运行结果没什么问题
错误结果:
因为这道题比较简单,因此没什么错误;
调试:
经过调试,没什么错误。
第九次作业:7-2 猜数字游戏
这道题思路清晰但是代码特别复杂,要求特别多,也用到了循环;
代码:
#include <stdio.h> int main(void) { int mynum=0,yournum=0,n=0,count=0; scanf("%d%d",&mynum,&n); while(mynum>0&&mynum<100){ count++; if(count>n){ printf("Game Over"); break;} scanf("%d",&yournum); if(yournum<0){ printf("Game Over"); break; } else if(yournum>mynum){ printf("Too big\n"); } else if(yournum<mynum){ printf("Too small\n"); } else{ if(count==1) { printf("Bingo!\n"); break;} else if(count>1&&count<=3){ printf("Lucky You!\n"); break;} else(count>3&&count<=n);{ printf("Good Guess!\n"); break; } break; } } return 0; }
解题思路:
1.定义变量,我的数字,你的数字,次数,count;
2.输入我的数字与输入次数;
3.如果我的数字>0&&<100进行循环;
4.进行判断,younum与mynum进行判断,当输入一个小于0的数,游戏结束;
5.每输入一次进行count++;最后比较count与n的的值,进行输出不同的结果;
流程图:
运行结果:
调试:
经调试没什么问题;
总结:
通过几天的学习,我了解到for循环中先执行前两条语句,在执行循环体,最后执行for循环的最后一条语句,而while语句则先进行判断,如果语句为真,则开始循环,为假则进行下一条语句,do-while则先进行循环语句,在进行判断。
遇到的问题:
循环体有点难以思考,不太好写,计算素数那道题还是有一些问题;