第七周作业

一、
7-1 求1到100的和
1、实验代码:

int main()
{
  int sum=0;
  int i=1;
  while(i<=100)
  {
    sum=sum+i;
    i++;
  }
  printf("sum = %d
",sum);
  return 0;
}

2、设计思路:
(1)第一步:定义两个整数变量i和sum,令i的初始值为1,sum的初始值为0;
(2)第二步:采用while循环语句,当变量i满足“i<=100”时,进行sum=sum+i;i++;的循环来计算sum的值;
(3)第三步:直到i不再满足“i<=100”的条件时,输出对应的sum的值。
3,、流程图:

4、PTA提交列表:

5、本题出现的问题与解决方法:
错误截图:
出现的错误:printf输出的格式与题目要求不符。
解决方法:在printf输入的=前后加上空格。(本题出错在于我审题不细造成的。)
7-2 求奇数分之一序列前N项和
1、实验代码:

int main()
{
  int N;
  scanf("%d",&N);
  double m,sum=0;
  int i=1;
  while(i<=N)
  {
    m=1.0/(2*i-1);
    sum=sum+m;
    i=i+1;
  }
  printf("sum = %.6f
",sum);
  return 0;
}

2、设计思路:
(1)第一步:定义一个整形变量N,浮点型变量m,sum;
(2)第二步:运用到while语句1 + 1/3 + 1/5 + ... 的前N项之和,输入N的值来限制i的取值范围,确定循环的次数;
(3)第三步:当i<=N时,一直进行sum=sum+m;m=1.0/(2*i-1);i+1;的循环;
(4)第四步:当i不满足"i<=N"时,输出得到的sum的值,结果保留6位。
3、流程图:

4、PTA提交列表:

5、本题出现的问题与解决方案:
本题在做的时候未出现问题。
7-3 求交错序列前N项和
1、实验代码:

int main()
{
  int N,i=1,x=1,y=1,z=1;
  scanf("%d",&N);
  double m,sum=0;
  while(i<=N)
  {
    m=x*z*1.0/y;
    sum=sum+m;
    x=-x;
    z=z+1;
    i=i+1;
    y=y+2;
  }
  printf("%.3lf
",sum);
  return 0;
}

2、设计思路:
(1)第一步:定义5个整型变量N,i,x,y,z,两个浮点型变量m,sum;
(2)第二步:运用while语句,来求交错序列前N项和,输入N来限制i的取值范围,确定循环次数;
(3)第三步:当i<=N时,进行m=xz1.0/y;sum=sum+m;x=-x;z=z+1;i=i+1;y=y+2;的循环;
(4)第四步:当i不满足“i<=N”时,输出该值下sum所对应的值,结果保留3位。
3、流程图:

4、PTA提交列表:

5、本题出现的问题与解决方案:
错误截图:
出现的问题:出现了一个很低级的错误,scanf中忘记加&。
解决方法:在scanf中加上&,在做题时专注程度不够。
7-4 找出最小值
1、实验代码:

int main()
{
  int min,n,i,m;
  scanf("%d %d",&n,&m);
  min=m;
  for(i=1;i<n;i++)
  {
    scanf("%d",&m);
    if(min>m)
    min=m;
  }
  printf("min = %d
",min);
  return 0;
}

2、设计思路:
(1)第一步:定义4个整型变量min,n,i,m,将整型变量n,m输入;
(2)第二步:将m输入的第一个数据赋给min,给min一个初始值,运用for语句,输入n确定循环次数;
(3)第三步:当i<=n时,一直循环输入要比较的数据;
(4)第四步:如果输入的m比min小,则将此时m的值赋给min,直到i不满足“i<n”的条件时,输出的值就最小的,否则,第一个m的值就是最小的。
3、流程图:

4、PTA提交列表:

5、本题出现的问题与解决方案:
错误截图:
出现的问题:最后的程序少了一个赋值命令,导致输出的最小值编程了0。
解决方法:在输出最小值之前加上一个”min=m”命令。
7-5 统计学生平均成绩与及格人数
1、实验代码:

int main()
{
  int i,N;
  double x=0,grade;
  int count=0;
  scanf("%d",&N);
  for(i=1;i<=N;i++)
  {
    scanf("%lf",&grade);
    if(grade>=60)
    count=count+1;
    x=x+grade;
  }
  if(N==0)
  printf("average = 0.0
");
  else
  printf("average = %.1f
",x/N);
  printf("count = %d",count);
  return 0;
}

2、设计思路:
(1)第一步:定义3个整型变量i,N,count,其中count的初始值为0,两个浮点型变量x,grade,令x的初始值为0;
(2)第二步:输入N,运用for,if else语句,通过N来确定循环次数;
(3)第三步:输入浮点型变量grade,判断grade的大小;
(4)第四步:当N不等于0时,采用for循环语句求得average和count的值,按照题目要求输出所有成绩总和与及格人数,当n等于0时,直接根据题目要求输出average,和count的值。
3、流程图:

4、PTA提交列表:

5、本题出现的问题与解决方案:
错误截图:
出现的问题:在DVC++上没有显示出问题,但是在PTA上显示编译错误,出现的问题很低级,用double定义的数,在输入的时候用了“f”而没用“lf”。
解决方法:将scanf中的“f”改成“lf”。
二、
上传coding截图:
Git地址:https://coding.net/u/c289716425/p/123/git
三、
学习内容:
本周学习了for,do while,while循环语句。虽然它们的结构看似简单,但运用到具体题目中还是有一定难度的,相比while与do while的循环结构而言,for语句较为简单,但是应用起来却并不是很简单。学习难点就是如何用for语句去取代较为复杂的while与do while语句,以及循环体运算公式的确定和如何控制循环的结束。本周的PTA作业相较之前的作业来说难度加大了很多,在完成一些难题的时候不得不向同学请教,洗完我可以通过接下来的练习来解决这个难题。
四、
点评作业:
(1)曹琪:http://www.cnblogs.com/blueblog6/p/7818648.html
(2)胡俊鲜:http://www.cnblogs.com/123456hjx/p/7823616.html
(3)何宗彦:http://www.cnblogs.com/hezongyan/p/7812104.html
五、
学习进度条与折线图:
学习进度条:
折线图:

原文地址:https://www.cnblogs.com/1999-cyc/p/7823469.html