代码改变世界

第三次作业(2)

2018-11-25 22:51  cheng程旭  阅读(310)  评论(12编辑  收藏  举报

作业要求 :【https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2359】                                                                                                                                                                                                           开头小结:又经过了几周的学习,这几周学习的依然是循环语句,那么来看一看这几周的难题吧。

第7次作业:7-3 统计学生平均成绩与及格人数

实验代码:

//本题要求编写程序,计算学生们的平均成绩,并统计及格(成绩不低于60分)的人数。题目保证输入与输出均在整型范围内。
//77 54 92 73 60
#include <stdio.h>
int main(void)
{
    int i=0,n=0,count=0,sum=0,grade=0;
    double average=0;
    scanf("%d",&n);
    if(n==0){
        printf("average = 0.0\n");
        printf("count = 0\n");
    } 
    
    else{
    for(i=1;i<=n;i++){
        scanf("%d",&grade);
        sum=sum+grade;
        if(grade>=60){
            count++;
        }
        
    }
    average= sum*1.0/n;
    printf("average = %.1f\n",average);
    printf("count = %d",count);}
 } 

 解题思路:这道题还是比较简单的,但是有一些易错点。

1.首先这道题先定义几个变量,需要平均成绩,输入的人数,以及及格人数,以及循环需要的i,想求平均成绩就需要先加和sum这几个变量。

2.做这道题还需要考虑当输入人数为0时会输出什么,因此需要用到if-else语句来判断n是否等于0,当等于0时,输出平均成绩0与及格人数0.

3.当n!=0时,这是进入循环,输入人数,输入成绩,进行计算与统计;

4.最后输出平均成绩与及格人数。

流程图:

运行结果:

遇到的错误:

当输入n=0时,如果平均成绩不是0.0,那么PTA运行结果就是错的,这跟题里说的保留一位小数有关,错误结果如下;

看似是对的,但PTA却显示错误,正是因为在判断n是否等于0时的输出语句average=0而不是0.0;

调试:

经过调试,没什么错误;

第八次作业:7-2 寻找250

第八次作业我选择了比较有趣的一道题,那就是寻找250,虽然题目简单,但是符合所学知识,即while语句的循环;

代码:

#include <stdio.h>
int main(void)
{
    int i,num; 
    while(num!=250){
    scanf("%d",&num);
        i++;
    }
    printf("%d",i);
    return 0;
}

解题思路:

这道题目的是让用户输入一堆数字,再输入数字中找到第多少位是250这个数字,并输出位数;

1.定义变量i,num;

2.开始循环,当num!=250时开始循环,用户开始输入数字;

3.当输入一个不是250的数字,i++;

4.输出位数;

流程图:

运行结果:

运行结果没什么问题

错误结果:

因为这道题比较简单,因此没什么错误;

调试:

经过调试,没什么错误。

第九次作业:7-2 猜数字游戏

这道题思路清晰但是代码特别复杂,要求特别多,也用到了循环;

代码:

#include <stdio.h>
int main(void)
{
    int mynum=0,yournum=0,n=0,count=0;
    scanf("%d%d",&mynum,&n);
    while(mynum>0&&mynum<100){
        count++;
        if(count>n){
            printf("Game Over");
            break;}
        scanf("%d",&yournum);
        if(yournum<0){
            printf("Game Over");
            break;
        }
        else if(yournum>mynum){
            printf("Too big\n");
        }
        else if(yournum<mynum){
            printf("Too small\n");
        }
        else{
            if(count==1) {
            printf("Bingo!\n");
            break;}
            else if(count>1&&count<=3){
            printf("Lucky You!\n");
            break;}
            else(count>3&&count<=n);{
                printf("Good Guess!\n");
                break;
            }
            break;
        }
        }
            return 0;
}

 

解题思路:

1.定义变量,我的数字,你的数字,次数,count;

2.输入我的数字与输入次数;

3.如果我的数字>0&&<100进行循环;

4.进行判断,younum与mynum进行判断,当输入一个小于0的数,游戏结束;

5.每输入一次进行count++;最后比较count与n的的值,进行输出不同的结果;

流程图:

 

 

运行结果:

调试:

经调试没什么问题;

总结:

通过几天的学习,我了解到for循环中先执行前两条语句,在执行循环体,最后执行for循环的最后一条语句,而while语句则先进行判断,如果语句为真,则开始循环,为假则进行下一条语句,do-while则先进行循环语句,在进行判断。

遇到的问题:

循环体有点难以思考,不太好写,计算素数那道题还是有一些问题;

 

评论博客【https://www.cnblogs.com/wangxiangbo/p/9948484.html】

评论博客【https://www.cnblogs.com/1a2B3c4D/p/10017402.html】

评论博客【https://www.cnblogs.com/zcybky/p/10022913.html】