C语言 编程练习:解决五个有趣的问题


编程练习:解决五个有趣的问题

在编程的世界里,解决问题是一种乐趣,也是提升技能的有效方式。今天,我将带你一起解决五个有趣的编程问题,这些问题覆盖了不同的编程概念和技巧。

1. 出租车费用计算器

问题描述:
编写一个程序,根据某城市的出租车收费标准计算车费。收费标准如下:

  • 起步里程为3公里,起步费10元;
  • 超起步里程后10公里内,每公里2元;
  • 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
  • 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

输入输出示例:

  • 输入:2.6 2(行驶里程和等待时间)
  • 输出:10(车费)

1. 1 代码code

//
// Created by d on 2024/10/11.
//
#include <stdio.h>

int main() {
    double juli, stop_time;
    double cost = 10.0; // 起步价
    scanf("%lf %lf", &juli, &stop_time);
    // 计算超过起步里程的费用
    if (juli > 3) {
        cost += 2.0 * (juli - 3);
        if (juli > 13) {
            cost += 3.0 * (juli - 13);
        }
    }
    cost += (int) (stop_time / 5) * 2;
    // 四舍五入到整数
    printf("%d\n", (int) (cost + 0.5));

    return 0;
}

2. 成绩转换统计

问题描述:
编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。转换规则如下:

  • 大于等于90分为A;
  • 小于90且大于等于80为B;
  • 小于80且大于等于70为C;
  • 小于70且大于等于60为D;
  • 小于60为E。

输入输出示例:

  • 输入:7(学生人数)
    77 54 92 73 60 65 69(学生成绩)
  • 输出:1 0 2 3 1(各等级人数)

2. 1 代码code

//
// Created by d on 2024/10/11.
//
#include <stdio.h>

int main() {
    double juli, stop_time;
    double cost = 10.0; // 起步价
    scanf("%lf %lf", &juli, &stop_time);
    // 计算超过起步里程的费用
    if (juli > 3) {
        cost += 2.0 * (juli - 3);
        if (juli > 13) {
            cost += 3.0 * (juli - 13);
        }
    }
    cost += (int) (stop_time / 5) * 2;
    // 四舍五入到整数
    printf("%d\n", (int) (cost + 0.5));

    return 0;
}

3. 交错序列求和

问题描述:
编写程序计算交错序列 1 - 2/3 + 3/5 - 4/7 + 5/9 - 6/11 +... 的前N项之和。

输入输出示例:

  • 输入:5(项数)
  • 输出:0.917(序列和,保留三位小数)

3. 1 代码code

//
// Created by d on 2024/10/11.
//

#include <stdio.h>
int main() {
    int n; // 项
    double sum = 0.0; // 和
    double term; // 每一项
    scanf("%d", &n); // 读入项数
    for (int i = 1; i <= n; i++) {
        term = (double)i / (2 * i - 1);
        if (i % 2 == 0) { // 如果是偶数项,则为负
            term = -term;
        }
        sum += term;
    }

    printf("%.3f\n", sum);

    return 0;
}

4. 阶乘序列求和

问题描述:
编写程序计算序列 1!+2!+3!+⋯ 的前N项之和。

输入输出示例:

  • 输入:5(项数)
  • 输出:153(阶乘和)

4. 1 代码code

//
// Created by d on 2024/10/11.
//

#include <stdio.h>

int main() {
    int n,sum = 0, cheng = 1;

    scanf_s("%d", &n);

    for (int i = 1; i <= n; i++) {
        cheng *= i;
        sum += cheng;
    }

    printf("%lld\n", sum);

    return 0;
}

5. 输出星号图案

问题描述:
编写程序输出如下星号图案:

      *
******
 *******
*******
 *******
      *

输入输出示例:

  • 无需输入
  • 输出:如上星号图案

5. 1 代码code

#include <stdio.h>

int main() {
    int rows = 4;
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < rows - i - 1; j++) {
            printf(" ");
        }
        for (int j = 0; j < 2 * i + 1; j++) {
            printf("*");
        }
        printf("\n");
    }
    for (int i = 0; i < rows - 2; i++) {
        for (int j = 0; j < rows - 1; j++) {
            printf(" ");
        }
        for (int j = 0; j < 2 * (rows - i - 2) + 1; j++) {
            printf("*");
        }
        printf("\n");
    }

    return 0;
}

这些练习不仅能够锻炼你的编程技能,还能帮助你理解算法和数据结构的基本概念。希望你喜欢这些挑战,并从中学到新的知识!如果你有任何问题或需要帮助,随时在评论区告诉我,我会尽力帮助你。祝你编程愉快!🚀💻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

浪里个浪的1024

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

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

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

打赏作者

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

抵扣说明:

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

余额充值