實驗5 迴圈結構程式設計(while、do-while語句的應用)

juuroppa發表於2024-04-22

c語言程式設計——實驗報告五

  • 實驗專案名稱:實驗5 迴圈結構程式設計(while、do-while語句的應用)
  • 實驗專案型別:驗證性
  • 實驗日期:2024年4月11日

一、實驗目的

  1. 熟練掌握三種迴圈語句並能正確運用;
  2. 能夠用迴圈實現一些常用演算法,如窮舉法,迭代法,遞推法等;
  3. 進一步學習程式除錯;

二、實驗硬、軟體環境

Windows計算機、Dev c 6.0

三、實驗內容及步驟

實驗內容:

編寫程式:
(1)用while語句計算自然數列1,2,3……,n的和,n的值在程式執行時輸入。
(2)用do-while語句計算n的階乘
(3)用while語句編寫程式求20+21+22+23+24+……+263
(4)用while語句編寫程式。輸入一行字元,求出其中字母、數字和其他字元的個數。
思考題:小明媽媽給他買了若干塊巧克力,小明第一天吃了一半,還不過癮,又多吃了一塊,第二天又將剩下的巧克力吃掉一半,又多吃一塊,以後每天都吃了前一天剩下的一半零一塊。到第10天再想吃時,只剩下一塊了。設計一個程式計算小明媽媽總共給小明買了多少塊巧克力?

實驗步驟:

專案一:用while語句計算自然數列1,2,3……,n的和,n的值在程式執行時輸入。

解題思路

  • 首先,需要使用者輸入一個正整數 n。
  • 使用一個變數 sum 來儲存數列的和,初始值設為 0。
  • 使用一個變數 i 作為迴圈控制變數,初始值設為 1。
  • 使用 while 迴圈進行迭代,每次迭代將當前迴圈變數 i 的值累加到 sum 中,並遞增 i。
  • 當 i 的值超過了輸入的正整數 n 時,迴圈結束。
  • 最後輸出計算得到的自然數列 1 到 n 的和。

核心程式碼

#include <stdio.h>

int main() {
    int n, sum = 0;
    
    printf("請輸入一個正整數 n:");
    scanf("%d", &n);
    
    int i = 1;
    while (i <= n) {
        sum += i;
        i++;
    }
    
    printf("自然數列 1 到 %d 的和為:%d\n", n, sum);
    
    printf("*****************************************\n\n");
    printf("23080905040502   王永成\n\n");
    printf("*****************************************");
	
    return 0;
}

實驗截圖
image

專案二:用do-while語句計算n的階乘

解題思路

  • 使用一個變數 jiecheng 來儲存階乘的結果,初始值為 1。
  • 使用一個變數 n 輸入要計算階乘的數。
  • 使用 do-while 迴圈來計算階乘:
  • 迴圈體內將 jiecheng 乘以 n,然後 n 自減。
  • 當 n 大於 1 時繼續迴圈。
  • 輸出計算結果。

核心程式碼

#include <stdio.h>

int main() {
    int n;
    printf("請輸入一個整數 n:");
    scanf("%d", &n);

    int jiecheng = 1;
    int i = n;
    do {
        jiecheng *= i;
        i--;
    } while (i > 0);

    printf("%d 的階乘是:%d\n", n, jiecheng);


    printf("*****************************************\n\n");
    printf("23080905040502   王永成\n\n");
    printf("*****************************************");

    return 0;
}

實驗截圖
image

專案三:用while語句編寫程式求20+21+22+23+24+……+263

解題思路

  • 使用一個變數 sum 來儲存求和的結果,初始值為 0。
  • 使用一個變數 num 從 20 開始遞增到 263。
  • 使用 while 迴圈來累加 num 到 sum 中:
  • 在迴圈體內,將 num 的值加到 sum 中。
  • num 每次遞增 1。
    核心程式碼
#include <stdio.h>

int main() {
    int num = 20;
    int sum = 0;

    while (num <= 263) {
        sum += num;
        num++;
    }

    printf("20+21+22+23+24+……+263 的和為:%d\n", sum);

    printf("*****************************************\n\n");
    printf("23080905040502   王永成\n\n");
    printf("*****************************************");

    return 0;
}


實驗截圖
image

專案四:用while語句編寫程式。輸入一行字元,求出其中字母、數字和其他字元的個數。

解題思路

  • 使用三個變數 wordCountnumCountotherCount 來分別表示字母、數字和其他字元的個數,初始值都為 0。
  • 使用一個 while 迴圈來逐個檢查輸入的字元,並統計各類字元的個數:
  • 在迴圈內,根據字元的型別(字母、數字還是其他字元),分別增加相應的計數器。
  • 輸入的結束條件可以是遇到換行符 \n 或者檔案結束符 EOF。

核心程式碼

#include <stdio.h>

int main() {
    char ch;
    int wordCount = 0, numCount = 0, otherCount = 0;

    printf("請輸入一行字元:\n");
    while ((ch = getchar()) != '\n') {
        if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
            wordCount++;
        } else if (ch >= '0' && ch <= '9') {
            numCount++;
        } else {
            otherCount++;
        }
    }

    printf("字母個數:%d,數字個數:%d,其他字元個數:%d\n", wordCount, numCount, otherCount);

    printf("*****************************************\n\n");
    printf("23080905040502   王永成\n\n");
    printf("*****************************************");


    return 0;
}

實驗截圖
image

專案五:思考題:小明媽媽給他買了若干塊巧克力,小明第一天吃了一半,還不過癮,又多吃了一塊,第二天又將剩下的巧克力吃掉一半,又多吃一塊,以後每天都吃了前一天剩下的一半零一塊。到第10天再想吃時,只剩下一塊了。設計一個程式計算小明媽媽總共給小明買了多少塊巧克力?

解題思路

  • 使用一個變數 chocolates 來表示小明媽媽總共給小明買的巧克力的數量,初始值為未知。
  • 使用一個變數 currentChocolates 來表示當前剩餘的巧克力數量,初始值為 1。
  • 使用一個迴圈來模擬小明每天吃巧克力的過程,從第 10 天倒推到第 1 天:
  • 在迴圈中,將當前剩餘的巧克力數量加上一塊(因為小明每天都會多吃一塊),然後乘以 2(因為小明每天都會吃掉一半)。
  • 從第 10 天開始向第 1 天逐步推算,就能得到小明媽媽總共給他買了多少塊巧克力。

核心程式碼

#include <stdio.h>

int main() {
    int chocolates = 1;
    for (int day = 9; day >= 1; day--) {
        chocolates = (chocolates + 1) * 2; 
    }
    printf("小明媽媽總共給小明買了 %d 塊巧克力\n", chocolates);
	
    printf("*****************************************\n\n");
    printf("23080905040502   王永成\n\n");
    printf("*****************************************");
	
    return 0;
}

實驗截圖
image

四、實驗結果及分析

  • 在思考題中我們可以將問題轉化為一個倒推的問題,從第 10 天開始,每一天的巧克力數量都是前一天數量加一後乘以 2。

相關文章