第七周作业
要求二
题目7-3 求交错序列前N项和
一,实验代码
#include<stdio.h> int main(){ int i,N,flag=1; double sum; scanf("%d",&N); sum=0; for(i=1;i<=N;i++){ sum=sum+flag*i*1.0/(2*i-1); flag=-flag; } printf("%.3f",sum); return 0; }
二,设计思路
1.根据题意定义变量,分别是整型变量i,N(输入数据的个数),flag(需初始化),浮点型变量sum(前N项和)。
2.理解题意,需要用循环结构,并确定循环体的计算公式:sum=sum+flag*i*1.0/(2*i-1);flag=-flag。
3.输入数据,先进行判断,若i<=N,就执行sum=sum+flag*i*1.0/(2*i-1);flag=-flag循环。例如:输入5,就循环5次。
4.输出计算结果。
三,流程图
四,遇到的问题及解决方法
(本图为课件截图)
此题老师上课讲过同类型的,所以课下再做没有遇到大问题。
五,运行结果截图
六,提交列表
(答案错误是由于flag没有初始化)
题目7-5统计学生平均成绩及及格人数
一,实验代码
#include<stdio.h> int main() { int n,i,a,count=0; float sum=0,average; scanf("%d\n",&n); if(n!=0) { for(i=1;i<=n;i++) { scanf("%d",&a); sum+=a; if(a>=60) count++; } average=sum/n; printf("average = %.1f\n",average); printf("count = %d\n",count); } else { printf("average = %.1f\n",0.0); printf("count = %d\n",0); } return 0; }
二,设计思路
1.根据题意定义变量,分别是整型变量n(学生人数),i,a(学生成绩),count(及格人数);浮点型变量sum(成绩总和),average(平均成绩)。
2.理解题意,需用到判断和循环两种结构,即if-else结构和for语句,并确定循环体scanf("%d",&a);sum+=a;if(a>=60),count++;和其他计算公式:average=sum/n。
3.输入数据n,和相应个数的学生成绩,进行判断:若n不等于0,且i<=n,则执行sum+=a,在进行判断,若a>=60,则执行count++,然后进行循环,循环结束后计算出平均成绩;若n=0,则输出平均值等于0,及格
人 数等于0。
4.输出最终计算结果。
三,流程图
四,遇到的问题及解决方法
遇到的问题:在编译器中编译没有任何问题,但在pta上提交就一直是答案错误。
错误截图
解决方法:在dev-c++中调试并没有发现错误,就私下问老师,得知程序中没有考虑到n=0的情况,加上这一条件后答案就正确了。
五,运行结果截图
六,提交列表
(错误原因是由于没有考虑到n=0和a<60这两种情况)
附加题:
7-2 统计字符
一:实验代码
#include<stdio.h> int main(){ char a; int i,letter=0,blank=0,digit=0,other=0; for(i=1;i<=10;i++){ scanf("%c",&a); if(65<=a&&a<=90||97<=a&&a<=122) letter++; if(a==' '||a=='\n') blank++; if(48<=a&&a<=57) digit++; } other=10-(letter+blank+digit); printf("letter = %d, blank = %d, digit = %d, other = %d",letter,blank,digit,other); return 0; }
二:设计思路
a,根据题意定义变量,分别是字符型变量c,整型变量letter,blank,digit,other,i.
b,理解题意,本题需要用到判断和循环两种境结构,而且本题使用for循环更好,程序比较简洁;然后确定相应的判断条件和循环体语句,例如:
for(i=1;i<=10;i++){
scanf("%c",&a);
if(65<=a&&a<=90||97<=a&&a<=122)
letter++;
c,输入字符和数字,在不同的判断条件下逐一进行判断,然后循环,直到所有输入的内容都运行结束。
d,输出统计结果。
三:遇到的问题及解决方法
遇到的问题:提交时总是遇到答案错误这种情况。
错误截图
解决方法:先根据错误提示自行修改,然而只改对了一部分,就问做对的同学,将所有的情况都考虑进去,将字符用ASSC码代替,再提交就成功了。
四:提交列表
五:运行结果图
7-2 求给定精度的简单交错序列部分和
一:实验代码
#include<stdio.h> int main(){ int i,N,flag=1; double sum; scanf("%d",&N); sum=0; for(i=1;i<=N;i++){ sum=sum+flag*i*1.0/(3*i-2); flag=-flag; } printf("sum = %.6f",sum); return 0; }
二:设计思路
a,根据题意定义变量,分别是整型变量i,N,flag;浮点型变量sum.
b,理解题意确定要用的结构类型为循环结构中的for循环,并确定相应的循环体
sum=sum+flag*i*1.0/(3*i-2);
flag=-flag;
c,输入数值,先进行判断,再根据计算公式进行计算,最后进行循环,直到结束运行。
d,输出运算结果sum。
三:遇到的问题及解决方法
遇到的问题:编译并没有错误,但是输出的结果与题目要求的并不符合。
错误截图
解决方法:自己看程序并没有找到错误,进行单步调试也没发现有什么错,于是就从网上找了答案,然后再对答案进行分析。
四:流程图
五:提交列表
7-3 单词长度
一:实验代码
#include<stdio.h> int main (void) { char c; int count=0; int flag=0; scanf("%c",&c); while(c != '.'){ if(c==' '){ if(count !=0){ if(flag) printf(" %d",count); else{ printf("%d",count); flag=1; } } count=0; } else{ count++; } scanf("%c",&c); } if(count!=0 && c=='.') if(flag==0) printf("%d",count); else{ printf(" %d",count); flag=1; } return 0; }
二:流程图
三:提交列表
要求三
上传文件截图
GIT地址:https://git.coding.net/Hunjunxian/juhao.git
https://git.coding.net/Hunjunxian/zuoye.git
要求四
个人总结
1.本周主要学习了循环结构,其中包括三种语句,分别是:while,do-while,for。三者的区别在于while语句是先判断在执行;do-while语句是先执行一次再判断,即至少执行一次循环语句;for语句最为灵活简洁,一般可以取代while语句。
2.学习难点就是循环体运算公式的确定和如何控制循环的结束。
3.不明白的知识点:对于如何控制循环结束这一块不是很明白,老师讲的例子就没怎么听懂
4.本周作业中出现的主要问题是对于for循环语句的使用不熟练,在确定循环体时会出现各种错误。
要求五
学习进度与互评
我评价的博客
何宗彦:http://www.cnblogs.com/hezongyan/
陈雨秋:http://www.cnblogs.com/cyq66992152/
姚爽:http://www.cnblogs.com/yaoshuang/
学习进度条
日期 | 代码行数 | 时间1 | 博客字数 | 时间2 | 知识点 |
2017.11.13 | 135 | 共6小时左右 | 约400 | 45分钟 | 三种循环语句 |
折线图