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

    作业要求 https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2360

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

    1.实验代码

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

    2.解题思路 

    (1)学生人数很多,就先用for循环把学生的成绩全部输入。

    (2)要求平均数就把先把学生的成绩加起来,因为要求及格人数,在for循环里加判断语句if判断成绩是否大于60.

    (3)最后判断学生人数是0求平均值,最后打印结果。

    3.流程图

     

     4.调试信息

    自己不断的完善后,pta一直显示错误,调试信息如下

     

    发现没打 和输出样例不同,后来加上 提交后也是错误,后来我试了一下0结果发现average变成负数。

    应该加个if语句来判断num不是正数的情况,所以我有加了i(num>0)来保证average能正常输出。

    最终答案正确。

    第九次作业 输出闰年

    1.实验代码

    #include<stdio.h>
    int main()
    {
      int year,i;
      scanf("%d",&year);
      if(year>2000 && year<=2100){
          for(i=2001;i<=year;i++){
              if((i%4==0 && i%100!=0)||(i%400==0)){
              printf("%d
    ",i);
              }
              else if(year<2004){
                printf("None");
                break;
              }
          }
          }else{
              printf("Invalid year!");
          }
      return 0;
    }

    2.解题思路

    (1)要求是21世纪的闰年,首先要将时间限制再21世纪,用if语句。

    (2)再用for循环和if语句循环出判断21世纪的所有年份,在判断是否符合闰年的要求。

    (3)输出不一样的结果。

    3.流程图

     

    4.调试信息

    pta提示是多种错误,调试了一下发现不走if((i%4==0&&i%100!=0)||(i%400==0))一直走else 

    而且就算打None应该只打一个,而None却出现一堆,想到应该在None后加一个break,后来我又发现第七行的i=i+4,闰年是4年一个,但要保证输入的第一个就是闰年才能输出正确,有判断是否是闰年的语句,这就有点冲突了。

    改正后,好多了,打上2048直接就是一个None。

     

    应该还是else出现了问题,我又看了下题发现是一个闰年都没有才输出None,而2048很明显是有闰年的,第一个输入的不是闰年就直接退出了,应该在else加个限定条件,只要大于等于2004大就有闰年,只要把else改为else if(year<2004)就可以了。

     

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

    1.实验代码

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

    2.解题思路

    (1)将数限制在M与N的区间用for语句,for(i=M;i<=N;i++)就能将这个区间的数全部输入了。

    (2)在嵌套一个for语句来判断是不是素数。

    (3)用if语句将不同的结果输出。

    3.流程图

    4.调试信息

    pta出现部分正确,我尝试调试一下发现输入什么数都是0

     

     在第十行加入printf("%d ",i),也添加查看sum,发现printf一直在打印,sum也一直为0,我就知道应该是条件哪里出错了。

    我有重读了我的代码,发现第9行的m应该小于i/2,只要前一半不能被整除,后面就不用看了,肯定除不开·。

    个人总结

    (1)本周主要学习的是循环,有for,while,do while和break,contiune控制语句,知道怎么对一个范围的数让他自己输入,可以利用循环来处理。

    (2)难点的是嵌套语句比较烦,通常for循环里再来一个for,再一些if语句,不太好写,有时一堆括号不知道,容易整乱,不知道哪个对应那个,解决的话就是尽量把自己的思路捋顺,把代码打的有规律,有条理,在细心排查。

    学习进度

     

    作业点评

    https://www.cnblogs.com/DX552ZYM557/p/10028972.html

    https://www.cnblogs.com/freedomjdp/p/9979139.html

     https://www.cnblogs.com/mashihao/p/10017088.html

  • 相关阅读:
    Centos6.8源码编译安装PHP7
    can't get hostname for your address--Mysql
    外网映射
    SignalR使用心得...
    C# 国际日期(英文日期,新浪微博api日期)转换
    jQuery插件分类、编写及实例
    数据库“钱“(金额)的类型存储,适用各种数据库
    struts2的权限控制思路
    Sql Server08R2的dbLink(链接服务器)配置
    使用getSession()方法,使用完之后必须自己调用相应的 close方法!
  • 原文地址:https://www.cnblogs.com/wengjx123/p/9979511.html
Copyright © 2011-2022 走看看