C语言督学营(2)

(1)输入一个整型数,判断是否是对称数,如果是,输出yes,否则输出no,不用考虑这个整型数过大,int类型存不下,不用考虑负值;
例如 12321是对称数,输出yes,124421是对称数,输出yes,1231不是对称数,输出n
o。

// 引入 C 语言的标准输入输出库,用于实现输入和输出功能  
#include <stdio.h>  
  
// 引入 C 语言的 bool 类型库,用于实现布尔类型的数据  
#include <stdbool.h>  
  
// 定义一个函数 is_palindrome,用于判断一个整数是否是对称数  
bool is_palindrome(int num) {  
  
    // 如果输入的数为负数,则直接返回 false,因为负数不是对称数  
    if (num < 0) {  
        return false;  // 负数不是对称数  
    }  
  
    // 定义一个变量 reversed,用于存储反转后的数字  
    int reversed = 0;  
  
    // 定义一个变量 original,用于存储原始数字,以便后面进行比较  
    int original = num;  
  
    // 使用循环将数字反转  
    while (num > 0) {  
        reversed = reversed * 10 + num % 10;  
        num /= 10;  
    }  
  
    // 判断反转后的数字是否与原始数字相同,如果相同则返回 true,否则返回 false  
    return original == reversed;  
}  
  
// 定义主函数 main,程序的执行从这里开始  
int main() {  
  
    // 定义一个变量 num,用于存储用户输入的整数  
    int num;  
  
    // 提示用户输入一个整数  
    printf("请输入一个整数: ");  
  
    // 从用户获取输入,并将输入的整数存储到 num 中  
    scanf("%d", &num);  
  
    // 调用 is_palindrome 函数判断 num 是否是对称数,并根据结果输出 yes 或 no  
    if (is_palindrome(num)) {  
        printf("yes\n");  // 是对称数,输出 yes  
    } else {  
        printf("no\n");  // 不是对称数,输出 no  
    }  
  
    // 返回 0,表示程序正常结束  
    return 0;  
}

(2)写出从1到100的阶乘之和

#include <stdio.h>  
  
int main() {  
    int sum = 0;  
    int i, j;  
    for (i = 1; i <= 100; i++) {  
        int fact = 1;  
        for (j = 1; j <= i; j++) {  
            fact *= j;  
        }  
        sum += fact;  
    }  
    printf("从1到100的阶乘之和为:%d\n", sum);  
    return 0;  
}


(3)某人想将手中的一张面值100元的人民币换成10元、5元、2元和1元面值的票子。要求换正好40张,且每种票子至少一张。问: 有几种换法?

#include <stdio.h>  
  
int main() {  
    int count = 0;  
    int i, j, k;  
    for (i = 1; i <= 100 / 10; i++) { // 10元票子最多可换10张  
        for (j = 1; j <= 100 / 5; j++) { // 5元票子最多可换20张  
            for (k = 1; k <= 100 / 2; k++) { // 2元票子最多可换50张  
                if (i * 10 + j * 5 + k * 2 >= 100 && i + j + k == 40) {  
                    count++;  
                    printf("第%d种方案:10元%d张,5元%d张,2元%d张,1元%d张\n", count, i, j, k, 40 - i - j - k);  
                }  
            }  
        }  
    }  
    printf("共有%d种换法。\n", count);  
    return 0;  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值