一、运用for循环,while循环和do...while循环进行n的阶乘的计算
for循环:
#include <stdio.h>
int main() {
int result = 1;
int i;
printf("请输入n的值:");
scanf("%d", &i);
for (; i > 0; i--) {
result *= i;
}
printf("%d", result);
return 0;
}
while循环:
#include <stdio.h>
int main() {
int i;
printf("请输入n的值:");
scanf("%d", &i);
int result = 1;
while (i > 0) {
result *= i;
i--;
}
printf("%d", result);
return 0;
}
do...while循环:
#include <stdio.h>
int main() {
int result = 1;
int i;
printf("请输入n的值:");
scanf("%d", &i);
do {
result *= i;
i--;
} while (i > 0);
printf("%d", result);
return 0;
}
说到这里,自己可以尝试编写一个计算平均数的程序。
二、运用自定义函数和whlie无限循环
例:根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:
起步里程为3公里,起步费9元;
超起步里程后10公里内,每公里2元;
超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。
#include <stdio.h>
// 13 >= 公里数 > 3 时,计算除了起步价之外的价钱
int path1bill(int distance) {
int secondmoney = (distance - 3) * 2;
return secondmoney;
}
// 公里数 > 10 时,计算除了起步价之外的价钱
int path2bill(int distance) {
int thirdmoney = (distance - 13) * 3 + (13 - 3) * 2;
return thirdmoney;
}
// 计算停车费用
int stopbill(int min) {
int stopmoney = min / 5 * 2;
return stopmoney;
}
int main() {
int path, min;// 总路程、停车时间
int start = 9, second, fourth, money;// 起步费、起步费之外的费用、停车费用、最终费用
while (1) {
second = 0;
printf("请输入“公里数”、“停车时间”:");
scanf("%d %d", &path, &min);
// 10 >= 公里数 > 3 时计算除起步价之外的价钱
if (path > 3 && path <=13) {
second = path1bill(path);
}
// 公里数 > 10 时计算除起步价之外的价钱
if (path > 13) {
second = path2bill(path);
}
fourth = stopbill(min);
money = start + second + fourth;
printf("最终费用为%d\n", money);
}
return 0;
}
注①:此题目计算的流程较少,可以不使用自定义函数,此处举例,将某一步骤的计算过程单独提取出来更加直观
注②:若想要一个程序无数次循环在其外部加上例如本题中的while(1){}即可。当然,for循环和do...while循环也可以
三、简单运用for循环和do...while循环
例:模拟输入密码。
输入正确结束程序,输入三次提示“密码错误次数过多”结束程序
// 该文件中使用了两种方式:for和do...while来进行输入密码
#include <stdio.h>
int main11() {
int password = 123456;
int text;
int i = 1;
printf("请输入一个六位数密码:");
// 限制只能输入三次密码
for (; i <= 3; i++) {
scanf("%d", &text);
if (text == password) {
printf("密码正确");
return 0;
}
else {
printf("密码错误,请重试\n");
}
}
if(i==4){
printf("\n密码错误次数过多!");
}
/**/内的部分是以do...while的形式编写的模拟密码程序
/*do {
scanf("%d", &text);
if (text == password) {
printf("密码正确");
return 0;
}
else {
printf("密码错误!\n");
}
i++;
} while (i <= 3);
if (i == 4) {
printf("\n密码错误次数太多,请稍后重试!");
}*/
return 0;
}