第七周作业

要求一: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
要求六:学习进度表和折线图

posted @ 2017-11-18 12:24  张国庆  阅读(239)  评论(7编辑  收藏  举报