第七周作业
要求二
题目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分钟 | 三种循环语句 |
折线图

浙公网安备 33010602011771号