实验5 循环结构程序设计(while、do-while语句的应用)

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。
posted @ 2024-04-22 13:09  juuroppa  阅读(692)  评论(0)    收藏  举报