c语言程序设计——实验报告五
- 实验项目名称:
- 实验项目类型:验证性
- 实验日期:
一、实验目的
二、实验硬、软件环境
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;
}
实验截图
项目二:用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;
}
实验截图
项目三:用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;
}
实验截图
项目四:用while语句编写程序。输入一行字符,求出其中字母、数字和其他字符的个数。
解题思路
- 使用三个变量
wordCount
、numCount
和otherCount
来分别表示字母、数字和其他字符的个数,初始值都为 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;
}
实验截图
项目五:思考题:小明妈妈给他买了若干块巧克力,小明第一天吃了一半,还不过瘾,又多吃了一块,第二天又将剩下的巧克力吃掉一半,又多吃一块,以后每天都吃了前一天剩下的一半零一块。到第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;
}
实验截图
四、实验结果及分析
- 在思考题中我们可以将问题转化为一个倒推的问题,从第 10 天开始,每一天的巧克力数量都是前一天数量加一后乘以 2。