第三次作業(2)


作業要求 :【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】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM