第七周作业
要求一:pta已完成。
要求二:
1、求交错序列前N项和
#include<stdio.h>
int main()
{
int i=1,flag=1,x=1,n;
double sum=0,item;
scanf("%d",&n);
while(i<=n){
item=flag*i*1.0/x;
sum=sum+item;
i=i+1;
x=2*i-1;
flag=-flag;
}
printf("%.3f",sum);
return 0;
}
2.设计思路:
(1)主要描述题目算法
第一步:本题要求交错序列前N项和,观察给出的式子,分子和分母都有变化,分子一次加一,分母一次加二,且每增加一个数正负都有变化。
第二步:先思考如何表示每次变化的值,在不考虑正负的情况下item=i1.0/(2i-1),为了方便循环可以让x=2i-1,然后将其中的相关变量进行定义。
第三步:将i,x定义成整型函数,item定义成浮点型函数,定义一个变量flag实现正负的交换,让flag=1,还需要定义一个限制量n,使i大于n的时候实现循环的结束。再定义一个输出的和sum。
第四步:利用while进行循环,循环体内需要进行的式子:item=flagi1.0/x, sum=sum+item;,i=i+1, x=2*i-1, flag=-flag。当i大于n时结束循环
3.流程图:
4.本题调试过程碰到问题及解决办法
这道题在刚开始的时候没有注意到分子也是变化,后来发现分子也在变化,就在如何表示分子上出现了问题,当时就觉得用输入的值n就可以,现在想应该是完全没道理的,因为n的值并不随循环变化,要看输入者输入什么。经过调试发现了问题。
5.pta提交列表:
2:统计学生平均成绩及及格人数
#include<stdio.h>
int main()
{
int i,n,grade,count;
double sum,average;
scanf("%d",&n);
if(n!=0)
{
for(i=1;i<=n;i++)
{
scanf("%d",&grade);
sum=sum+grade;
if(grade>=60)
count++;
}
average=sum/n;
printf("average = %.1f\n",average);
printf("count = %d",count);
}
else if(n==0){
printf("average = %.1f\n",0.0);
printf("count = %d",0);}
return 0;
}
2.设计思路:
第一步:打出程序框架,定义变量 整型变量i,n,grade,count,浮点型变量sum,average。
第二步:看题干,要求输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。此过程需要运用if语句进行判断和for语句进行循环。确定好循环框与循环体。
第三步:用printf输出结果。
3.流程图:
4.本题调试过程碰到问题及解决办法
问题及解决:编译错误,经过检查和重新回忆老师上课讲的,发现在if前没有 进行总的scanf.还有就是嵌套结构的花括号放的有点乱,导致错误,提醒了我每一步都要认真,不遗漏小地方。
5.pta提交列表:
要求三:
我的git地址:https://git.coding.net/zgq459947/EDG.git
要求四:
个人总结
1.本周主要学习了循环结构,其中包括三种语句,分别是:while,do-while,for。三者的区别在于while语句是先判断在执行;do-while语句是先执行一次再判断,即至少执行一次循环语句;for语句最为灵活简洁,一般可以取代while语句。
2.学习难点就是循环体运算公式的确定和如何控制循环的结束。
要求五:
作业互评
于耀淞:http://www.cnblogs.com/jsjyys/p/7826828.html
王鑫宇:http://www.cnblogs.com/wxy5336/p/7828100.html
董欣:http://www.cnblogs.com/dx2017/p/7809786.html
要求六:学习进度表和折线图