您的位置:首页 > 其它

第七周作业

2017-11-18 21:18 176 查看
要求二

题目7-1,求1道100的和

1,实验代码

#include <stdio.h>
int main(){
int sum=0;
int i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("sum = %d\n",sum);
return 0;
}

2,设计思路

<1>第一步:既然的就和,必然是循环语句,用到while语句。

第二步:定义初始值为零,再不断累加,使用到sum=sum+i,i的范围为<=100。

<2>流程图:


3.本题调试过程碰到问题及解决办法

基本上没有遇到什么困难,毕竟是上课时讲过的,但我发现这个代码在pta和Dev-c++中输出相同的结果时,pta必须要定义sum初始值为零,但Dev-c++可以不用。

附上截图:





将pta中sum改为sum=0就对了。

pta提交列表:


题目7-2,求奇分数之一序列的前N项和

1,实验代码

#include <stdio.h>
int main(){
int N;
scanf("%d",&N);
double a;
double sum=0;

int i=1;
while(i<=N)
{
a=1.0/(2*i-1);
sum=sum+a;
i=i+1;
}
printf("sum = %.6f\n",sum);
return 0;
}

2,设计思路

<1>第一步:首先要输入数列的项数,再执行循环语句,循环体结构可以为(1/2*i-1)。

第二步:由于有分数的出现,sum不能用int去定义,需用到double型双精度。

第三步:由于定义了双精度,故需要分数的分子用1.0,结果按照题意使用%.6f。

<2>流程图:


3,本题调试过程碰到问题及解决办法

错误截图:


这个错误就不应该了,知道分母的规律是2n-1,在写程序时强加了自己的主观意愿,没有想到代码中的是2*i-1,这就导致的代码输出的sum有误。

pta提交列表:


题目7-3,求交错序列的前N项和

1,实验代码

#include <stdio.h>
int main(){
int N;
scanf("%d",&N);
double sum=0;
double a;
int i=1;
int b=1;
int c=1;
int d=1;
while(i<=N)
{
a=b*d*1.0/c;
sum=sum+a;
b=-b;
d=d+1;
i=i+1;
c=c+2;
}
printf("%.3f\n",sum);
return 0;
}

2,设计思路

<1>第一步:同第二题一样,首先考虑求和和单个数的精度问题,都需用到double,结果保留三位小数,为%.3f。

第二步:序列为正负交错,故可以不断用赋值的方法去改变符号,第一次为正,第二次在第二个数前乘以-1,第个数也乘以-1,负负得正,这样就可以得到正负交错的序列。

第三步:发现分母的规律,为上一个数的分母加2,这样也可以产生一个循环的结构,去得到分母变换的规律。

<2>流程图:


3,本题调试过程碰到问题及解决办法

错误截图:


基本上还是分母的问题,经过这次才加深了代码对循环语句(2i-1)的结构模式的理解,但我发现了一个问题,分母的规律是符合(2i-1),但我去这样用 [a=bN1.0/(2*i-1) ]时怎么都不对,得到的sum不符合题意,但当我加上了另外的两个变量去替换 N 和 (2*i-1) 时,程序就变好了,我不知道为什么会出现这样情况。

pta提交列表:


题目7-5,统计学生平均成绩及及格人数

1,实验代码

#include <stdio.h>
int main(){
int i,n;
double total=0,grade;
int count=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%lf",&grade);
if (grade>=60) count=count+1;
total=total+grade;
}
if(n==0)
printf("average = 0.0\n");
else
printf("average = %.1f\n",total/n);
printf("count = %d",count);
return 0;
}

2,设计思路

<1>第一步:定义变量不是难事,首先考虑平均值输出的问题,即需要用总的学生成绩除以学生人数。

第二步:用循环语句进行累加,再用if语句筛选出大于等于60分的人数,需要定义初始人数为零。

第三步:会出现学生人数为零的情况,即需要在输出的时候用到if else语句,将学生人数为零的情况单独拿出来讨论,并将average保留一位小数。

<2>:流程图


3,本题调试过程碰到问题及解决办法

错误截图:


想着可以吧学生数量为零的情况统一处理,但我没考虑到分母不可以为零,就这个问题,浪费了许多时间,还以为是程序有问题,也没看错误提示,这就给了我一个教训,错了,看错误提示还是十分重要的。

pta提交列表:


要求三:git地址:https://git.coding.net/WP2017024114/test.git

第七周作业项目列表




第十二周作业项目列表


第十三周pta13.1作业项目列表




要求三:

个人总结:学习了while和for的循环语句吧,知道了用if else 比用if if设计的程序更简单,耗时短。

不懂的地方:作业7-3的错误提示有一个问题,就是用(2i-1)直接作为分母时,程序有错,但当我把(2i-1)替换后,比如用c替换,在前面定义int c=0,这样就对了,我不知道是怎么回事。

还有第四题,在Dev-c++上编译后必须按照如下图所示才能有输出



也就是说,有两次回车,但这与pta的输入不符,当就是这样,在pta上是对的,我不知道这是什么回事。

基本上了解了break和continue在代码中的意思,一个是跳出当前循环,一个是不执行当次循环。

难点还是感觉标记flag是难点,还是需要更多的实践操作才好理解。

要求六

点评的作业:

何宗彦:http://www.cnblogs.com/hezongyan/p/7812104.html

胡俊鲜:http://www.cnblogs.com/123456hjx/p/7823616.html

莫誓:http://www.cnblogs.com/lin2580/p/7841437.html

表格和折线图:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: