(1)输入一个整型数,判断是否是对称数,如果是,输出yes,否则输出no,不用考虑这个整型数过大,int类型存不下,不用考虑负值;
例如 12321是对称数,输出yes,124421是对称数,输出yes,1231不是对称数,输出no。
// 引入 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;
}