• 第三次作业


    第三次作业

    作业要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2359

     第一题

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

    本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。

    输入格式:

    输入在第一行中给出非负整数N,即学生人数。第二行给出N个非负整数,即这N位学生的成绩,其间以空格分隔。

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

    编程思路:

    第一:定义整型变量i=1,grade=0,total=0;定义浮点型变量average=0,N=0。

    第二:输入所要统计的学生人数。

    第三:使用for循环,使其循环输入成绩,并叠加成绩求平均值。在for循环中嵌套if语句,若成绩及格则使及格人数+1。

    第四:输出平均数,并保留一位小数;输出及格人数。

    流程图:

     调试运行过程:

    一开始运行就发现成绩可以不断输入,不输出结果;

    接着我判断是循环语句出现毛病;

    于是进行调试;

    经调试发现与想象的一样;

    经过修改,成功输出结果。

     调试过程中发现 i 不产生变化

     

    经修改发现是表达式3(i=i++)有误,修改过后为(i++)正确输出。

     因为这次经验,我发现,原来一个小小的错误就能使程序不能产生所预期的效果,以后应该更小心谨慎。

     第二题

    7-1 求整数的位数及各位数字之和 

    对于给定的正整数N,求它的位数及其各位数字之和。

    编程思路:

    一开始我是这么想的,在for循环语句中找额外两个数字来作为取余(eg:a=x%10),和进位  (eg;b=x/10),然后把b的值赋给a ;

    然后就是用算法 sum=sum+a  来求各数字之和;

    第三步就是该数字位数的计算(count++),但又感觉哪里不对,想了想发现for循环中{ y=x%10; x=x/10; sum=sum+y;count++; }可以少定义一个变量;

    最后就是输出位数count和位数和sum。

    (自己应该多注意一下算法,学好了算法,相同功能的程序可以减少不少的代码。)

    编程代码:

    #include<stdio.h>
    #include<math.h>
    int main()
    {
      int x=0,y=0;
      int count=0,num=0;
      scanf("%d",&x);
      for(;x<=10^9&&x>0;){
      y=x%10;
      x=x/10;
      num=num+y;
      count++;
      }
      printf("%d %d",count,num);
      return 0;
    }

     

    流程图:

     

    编译过程:

    运行了一下,结果正确

     接下来进行调试看变量的变化,一开始我就已经把要查看的变量都添加了,下面是调试到输入x的一张截图

    最后运行正确

     第三题

    7-1 统计素数并求和 

    本题要求统计给定整数M和N区间内素数的个数并对它们求和。

    输入格式:

    输入在一行中给出两个正整数M和N(1<=M<=N<=500)。

    小抱怨(题目很简单,加上标点符号也就28个字,但是让我做了一个多小时才把这个题目写出来,不断的修改)

    编程思路:

    首先还是打出程序框架,定义变量x,i,sum,count,M和N,手动输入M,N的值;

    其次先写一个for循环(用来循环从数字M到N)放在条件语句if(1<=M<=N<=500)中,这是因为输入格式要求1<=M<=N<=500;

    然后在之前那个for循环就管它叫大for中嵌套一个条件语句若M=1,则把2赋给M(这是因为1不是素数,我就主动跳过1);

    接着我是这么想的,题目让我判断M到N的所有素数,于是我就写一个小循环嵌套在大for循环中来判断x是不是素数,并且在小循环前,在条件语句if(M==1)后先自己定义变量sb并把值1赋给它,用来假定它是素数,如果x%i==(i为从2开始到x/2的数),就把0赋给sb,并断开这个小循环;

    倒数第二就是再写一个条件语句放在小for后面将其和之前定义的sb配合起来使用,里面用count++;与sum=sum+x;来计算素数个数与素数的和;

    最后输出count与sum;结束。

    编程代码:

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

     流程图:

     调试过程:

     第一遍把代码敲好了以后,出现了这种情况,输出素数个数对,但是和错了,怀疑是判断错素数了

     一番调试后,发现是素数判断错了,如图下(具体是else判断错误,然后把1赋给sb)

     于是我又进行修改,修改判断素数的小for循环,但是这次又多了一个毛病,1不是素数,程序也判断1为素数,

    其他的没毛病

     

    多增加了一个条件语句,如果M=1,就把2赋给M(调试成功)

    总结:

      上次写博客园到这次,之间初步认识了循环,然后有点入门,到现在老师给的题目基本上一给脑袋就有思路,然后就能敲出代码,但是会有小瑕疵,程序经常会漏东西,然后答案经常离正确答案差一点,应该就是逻辑思维能力还有算法的问题,自己把老师上课教的都能都应用,但是有一些理论的东西还是没有学好,给同学讲题的时候,就会出现专业术语,还有表露不清晰 。

      接下来我应该看点理论书,还是多看看翁凯老师的慕课。

      遇到困难基本上都是先自己琢磨,然后把自己整废了,再去上网搜或是和同学讨论,向别人请教。

      循环很好用,也很难。这次又多学了函数,学到的越多越感觉自己和别人的差距越大。

     

     点评博客:

     https://www.cnblogs.com/zduangduang/p/10022227.html

    https://www.cnblogs.com/yangzhenghui/p/10022270.html

    https://www.cnblogs.com/chengxu230921/p/10017973.html

  • 相关阅读:
    性能测试时如何确认并发用户数
    web测试误区:浏览器后退键退出系统会话失效
    读书笔记(一)
    Loadrunner参数化数据配置与更新方式
    常见软件测试类型及特点
    Loadrunner录制脚本与编写脚本的区别
    软件测试常见文档要点及区别
    APP测试之Monkey测试
    Python操作Redis大全
    【IntelliJ IDEA】在idea上操作 git分支合并【如何将远程swagger分支 合并到 远程 master分支上】【如何切换 本地分支】
  • 原文地址:https://www.cnblogs.com/159357www/p/10003543.html
Copyright © 2020-2023  润新知