循环和自定义函数

一、运用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;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Black—slience

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值