zoukankan      html  css  js  c++  java
  • 第三次作业

    博客链接:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2360

    第十一周:

    【第七次作业】7-1 统计学生平均成绩与及格人数

    1、实验代码

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

    2、解题思路

    (1)题目算法

    第一步:输入学生人数N,并判断i与N的大小以决定是否进入for循环
    第二步:进入for循环后,输入成绩grade,并计算总成绩total;判断grade是否大于或等于60以计数

    第三步:运算平均数,并输出结果。

    (2)流程图

    3、调试过程遇到的问题及其解决方法:
    初次平均数average的计算未进入if语句,导致结果只有“没有学生”时正确,提供截图:
    3

     当我把average的运算语句放在for循环外面时,前两部正确,但是因为N为分母,所以N!=0,导致最后一步没有学生(即N=0)时答案错误。

    (调试结果)↓

      

    最后我使用if语句来判断当N是否等于0时的情况:

     当N!=0时,average=total/N;而当N取零时,average=0。

    第十二周:

    【第九次作业】7-4 计算圆周率

    1、实验代码

    //for循环
    #include<stdio.h>
    int main(void){
      int N;
      double e,f,numerator=1,denominator=1,sum=0,total;
      N=0;
      scanf("%lf",&e);
        for(f=1;f>=e;N++){
          if(N == 0)
          {numerator=1;}
        else{
          numerator=numerator*N;
          denominator=denominator*(2.0*N+1.0);
        } 
    
      f=numerator/denominator;
      sum+=f;
        }
        total=2.0*sum;
        printf("%.6f
    ",total);
      
      return 0;
    }

      

    //while
    #include<stdio.h>
    int main(void){
      int N;
      double e,f,numerator=1,denominator=1,sum=0,total;
      N=0;
      scanf("%lf",&e);
        f=1;
        while(f>=e){
          if(N == 0)
          {numerator=1;}
        else{
          numerator=numerator*N;
          denominator=denominator*(2.0*N+1.0);
        }  
    
      f=numerator/denominator;
      sum+=f;
         N++;
        }
        total=2.0*sum;
        printf("%.6f
    ",total);
      
      return 0;
    }
    //do-while
    #include<stdio.h>
    int main(void){
      int N;
      double e,f,numerator=1,denominator=1,sum=1,total;
      N=1;
      scanf("%lf",&e);
        f=1;
        do{
           
          numerator=numerator*N;
          denominator=denominator*(2.0*N+1.0);
    N++;
      f=numerator/denominator;
      sum+=f;
         
        total=2.0*sum;}
        while(f>=e); 
        
        printf("%.6f
    ",total);
      
      return 0;
    }

    2、解题思路

    (1)题目算法

    第一步:以for循环为例,根据题意设定变量,输入e,当f(分数)>=e时进入for循环;

    第二步:判断N的数值,若N的数值不为零,则numerator(分子)为原值与N的乘积;denominator(分母)=denominator*(2.0*N+1.0);

    第三步:根据运算公式算出f的值并求和,再次判定条件以再次进入for循环;

    第四步:跳出循环后由(total=2.0*sum)计算出total并输出结果。

    (2)流程图(第一种方式,for循环)

     

    3、调试过程遇到的问题及其解决方法:

    将for循环改为while时while的括号内无误添加“;”导致编译错误↓

    本题用do-while,for循环以及while均可得出正确答案,就我个人而言认为for循环更好理解,在思考题目是

    可以更完整的吧条件写入for()中,而while略加琐碎,编写do-while时由于条件写在最后因此思路不是很

    清晰,因此我先编写出for循环,而后再将其修改为while以及do-while另两种格式。

    第十三周:

    【第十次作业】7-1 统计素数并求和

    1、实验代码

    #include<stdio.h>
    int main(void){
      int M,N,i,x,isprime=0;
      int sum=0,count=0;
      scanf("%d %d",&M,&N);
      
      for(i=M;i<=N;i++){
      isprime=1;
      
      for(x=2;x<=i/2;x++){
      if(i%x==0){
      isprime=0;
      break;}
      }
      if(isprime==1&&i!=1){
           count++;
         sum=sum+i;
      }
      }
      printf("%d %d",count,sum);
      return 0;
    }

    2、解题思路

    (1)题目算法

    第一步:设置变量,输入M,N;

    第二步:当i<=N时进入for循环,当x<=i时进入内嵌for循环,并判断是否进入if语句;

    第三步:若i%x==0,则i不是素数,跳出for循环,进入下一if语句,若不为零,则继续for循环;

    第四步:输出M,N

    (2)流程图

     3、调试过程遇到的问题及其解决方法:

     当M与N的值相等时,结果错误:

    将内嵌for循环中的条件“x<i”修改成“x<=i/2”后答案正确。

     个人总结

    本周主要学习循环语句,难度比之前学的的知识点略大,平时在编码是=时更偏向于for循环以及while,个人更

    习惯优先考虑条件。其次是在做题时应该先理清运算顺序,由局部到整体。这样思路会更加清晰。

    附图表:

    所评论博客https://www.cnblogs.com/liuweiliuwei/p/10016885.html【作者:刘伟lw】

                       https://www.cnblogs.com/wafx/p/9998306.html【作者:jornor】

                          https://www.cnblogs.com/xiaofengqaq/p/9959905.html【作者:十魇】

  • 相关阅读:
    CentOS 7 安装Python pip
    关于 HIVE Beeline 问题
    HIVE 简单总结
    值得一提:关于 HDFS 的 file size 和 block size
    Hadoop作业优化
    一篇文章,掌握所有开源数据库的现状
    dfs.replication 参数 动态修改
    Hadoop YARN ERROR 1/1 local-dirs are bad *, 1/1 log-dirs are bad *
    Hadoop 中关于 map,reduce 数量设置
    CentOS ulimit
  • 原文地址:https://www.cnblogs.com/chumengGTRlhz/p/9991154.html
Copyright © 2011-2022 走看看