第三次作业
作业要求 https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2360
题目7-3 统计学生平均成绩与及格人数
1.实验代码
#include<stdio.h> int main() { int i,count,num; double total,grade,average; total=0,count=0; scanf("%d",&num); for(i=1;i<=num;i++){ scanf("%lf",&grade); total=total+grade; if(grade>=60){ count++; } } if(num>0){ average=total/num; } else{ average=0; } printf("average = %.1lf\n",average); printf("count = %d\n",count); return 0; }
2.解题思路
(1)学生人数很多,就先用for循环把学生的成绩全部输入。
(2)要求平均数就把先把学生的成绩加起来,因为要求及格人数,在for循环里加判断语句if判断成绩是否大于60.
(3)最后判断学生人数是0求平均值,最后打印结果。
3.流程图
4.调试信息
自己不断的完善后,pta一直显示错误,调试信息如下
发现没打\n和输出样例不同,后来加上\n提交后也是错误,后来我试了一下0结果发现average变成负数。
应该加个if语句来判断num不是正数的情况,所以我有加了i(num>0)来保证average能正常输出。
最终答案正确。
第九次作业 输出闰年
1.实验代码
#include<stdio.h> int main() { int year,i; scanf("%d",&year); if(year>2000 && year<=2100){ for(i=2001;i<=year;i++){ if((i%4==0 && i%100!=0)||(i%400==0)){ printf("%d\n",i); } else if(year<2004){ printf("None"); break; } } }else{ printf("Invalid year!"); } return 0; }
2.解题思路
(1)要求是21世纪的闰年,首先要将时间限制再21世纪,用if语句。
(2)再用for循环和if语句循环出判断21世纪的所有年份,在判断是否符合闰年的要求。
(3)输出不一样的结果。
3.流程图
4.调试信息
pta提示是多种错误,调试了一下发现不走if((i%4==0&&i%100!=0)||(i%400==0))一直走else
而且就算打None应该只打一个,而None却出现一堆,想到应该在None后加一个break,后来我又发现第七行的i=i+4,闰年是4年一个,但要保证输入的第一个就是闰年才能输出正确,有判断是否是闰年的语句,这就有点冲突了。
改正后,好多了,打上2048直接就是一个None。
应该还是else出现了问题,我又看了下题发现是一个闰年都没有才输出None,而2048很明显是有闰年的,第一个输入的不是闰年就直接退出了,应该在else加个限定条件,只要大于等于2004大就有闰年,只要把else改为else if(year<2004)就可以了。
第十次作业7-1统计素数并求和
1.实验代码
#include<stdio.h> int main() { int N,M,i,sum,count,m,isprime; sum=0,count=0,isprime=0; scanf("%d %d",&M,&N); for(i=M;i<=N;i++){ isprime=1; for(m=2;m<=i/2;m++){ if(i%m==0){ isprime=0; break;} } if(isprime==1&&i!=1){ sum=sum+i; count++;} } printf("%d %d",count,sum); return 0; }
2.解题思路
(1)将数限制在M与N的区间用for语句,for(i=M;i<=N;i++)就能将这个区间的数全部输入了。
(2)在嵌套一个for语句来判断是不是素数。
(3)用if语句将不同的结果输出。
3.流程图
4.调试信息
pta出现部分正确,我尝试调试一下发现输入什么数都是0
在第十行加入printf("%d\n",i),也添加查看sum,发现printf一直在打印,sum也一直为0,我就知道应该是条件哪里出错了。
我有重读了我的代码,发现第9行的m应该小于i/2,只要前一半不能被整除,后面就不用看了,肯定除不开·。
个人总结
(1)本周主要学习的是循环,有for,while,do while和break,contiune控制语句,知道怎么对一个范围的数让他自己输入,可以利用循环来处理。
(2)难点的是嵌套语句比较烦,通常for循环里再来一个for,再一些if语句,不太好写,有时一堆括号不知道,容易整乱,不知道哪个对应那个,解决的话就是尽量把自己的思路捋顺,把代码打的有规律,有条理,在细心排查。
学习进度
作业点评
https://www.cnblogs.com/DX552ZYM557/p/10028972.html