第三次作業


作業要求:【https://www.cnblogs.com/c-programing-language/p/9931659.html

第七次作業7-3 統計學生平均成績與及格人數 (15 分)

本題要求編寫程序,計算學生們的平均成績,並統計及格(成績不低於60分)的人數。題目保證輸入與輸出均在整型范圍內。

輸入格式:輸入在第一行中給出非負整數N,即學生人數。第二行給出N個非負整數,即這N位學生的成績,其間以空格分隔。

輸出格式:按照以下格式輸出:average = 成績均值,count = 及格人數,其中平均值精確到小數點后一位。

輸入樣例:5

    77 54 92 73 60

輸出樣例:average = 71.2

    count = 4

一.實驗代碼

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

二.解題思路

1.步驟

1).先定義整型變量count表示合格的人數,grade表示分數,N表示人的個數,total計算總分。

2).先輸入人的個數,然寫出for循環,輸入五個成績。

3).最后輸出average和count。

運行的結果:

2.流程圖

 

 

三.調試過程碰到的問題及解決辦法

起初在for循環中忘記了寫求average的代碼,顯示average=0.0,然后加上之后結果正確了。

調試過程

第九次作業7-2 輸出閏年 (15 分)

輸出21世紀中截止某個年份以來的所有閏年年份。注意:閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。

輸入格式:輸入在一行中給出21世紀的某個截止年份。

輸出格式:逐行輸出滿足條件的所有閏年年份,即每個年份占一行。輸入若非21世紀的年份則輸出"Invalid year!"。若不存在任何閏年,則輸出“None”。

輸入樣例1:

2048

輸出樣例1:

2004 2008 2012 2016 2020 2024 2028 2032 2036 2040 2044 2048
輸入樣例2:


2000

輸出樣例2:
Invalid year!

一.實驗代碼

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

 

二.解題思路

1.步驟

1).定義整型變量year表示開始輸入的年份,i表示要輸出的閏年,count用來統計閏年的個數。

2).一共有三種情況,一個是輸入的年份不在2000-2100內,還有在大范圍內,但是小范圍內沒有閏年。

3).另外就是存在閏年,需要用if else來找出閏年最后輸出出來。

運行的結果:

 

2.流程圖

 

 

三.調試過程碰到的問題及解決辦法

 開始做的時候整個代碼的大概能夠想到,就是不知道在表示條件時的“或者”怎么打,所以我在網上查了下"||"表示或者。

然后就遇到了點輸出格式上的錯誤,循環輸出時,要有“\n”換行。

調試過程:

輸入year=2048

進入循環體,i從2001開始直到2048,在其中輸出能被4或100整除或者能被400整除的數,就為閏年,同時count會記錄閏年個數。

最后當i=2049時跳出循環輸出閏年的結果。

第十次作業7-4 最大公約數和最小公倍數 (15 分)

本題要求兩個給定正整數的最大公約數和最小公倍數。

輸入格式:輸入在一行中給出兩個正整數M和N(1000)。

輸出格式:在一行中順序輸出M和N的最大公約數和最小公倍數,兩數字間以1空格分隔。

輸入樣例:  511 292

輸出樣例:  73 2044

一.實驗代碼

#include<stdio.h>
int main(){
    int M,N,i;
    scanf("%d %d",&M,&N);
    for(i=M;i>=1;i--){
        if(M%i==0&&N%i==0){
            printf("%d ",i);
            break;}
        }
    for(i=N;i<=M*N;i++){
        if(i%M==0&&i%N==0){
            printf("%d",i);
            break;}
    }
        return 0;
}

 

二解題思路

1.步驟

1).先定義整形變量M N i,輸入M N的值。

2).用for的循環和if的條件分別找最大公約數和最小公倍數。

3).最后分別輸出i表示最大公約數和最小公倍數。

運行的結果:

2.流程圖

 

三.調試過程碰到的問題及解決辦法

開始是因為不知道怎么求最大公約數和最小公倍數想了很長時間,后來知道應該用for循環和if的條件來求。

求最大公約數時,i要等於兩個數中比較大的,保證能在約數多的范圍內找最大公約數,然后在循環中求M N除以i是否有余數,每次循環i都要減一,直到M N都被i整除時輸出i。

求最小公倍數時,i要等於兩個數中較小的數,小於最大公倍數M*N,從最小的數開始找起,每次循環i要加一,直到i能同時被M和N整除時,輸出i。

調試過程:

輸入M和N

開始進入循環

當i等於73時,跳出第一個循環,M和N的最大公約數為73。

開始進入第二次循環

 

當i等於2044時,第二個循環結束,M和N的最小公倍數為2044。

 個人總結

本周學習的重點就是循環語句的運用,平時比較習慣運用的就是for和while的循環語句,但是現在運用的還不夠熟練,所以我應該多打一些類似的代碼,增加自己的熟練度 ,同時有不會的要多問問別人,自己也要多查查相關的東西,使自己能夠把循環語句更清晰熟練的運用。

作業點評:

1.https://www.cnblogs.com/chumengGTRlhz/p/9991154.html

2.https://www.cnblogs.com/wafx/p/9998306.html

3.https://www.cnblogs.com/abcdsjjs/p/10029383.html


免責聲明!

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



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