枚举:
1,清华大学上机题:abc
问题描述:设a,b,c均是0到9之间的数字,abc,bcc是两个三位数,且有:abc+bcc=522。求满足条件的所有a,b,c的值
输入描述:null
输出描述:请输出所有满足题目条件的a,b,c的值。a,b,c之间用空格隔开,每个输出占一行。
#include <stdio.h>
int main() {
int a, b, c;
// 遍历a, b, c的所有可能值
for (a = 0; a <= 9; a++) {
for (b = 0; b <= 9; b++) {
for (c = 0; c <= 9; c++) {
// 计算abc和bcc的值
int abc = 100 * a + 10 * b + c;
int bcc = 100 * b + 10 * c + c;
// 检查是否满足条件
if (abc + bcc == 522) {
printf("a = %d, b = %d, c = %d\n", a, b, c);
}
}
}
}
return 0;
}
2,反序数
问题描述:设N是一个四位数,他得9倍恰好是其反序数(eg:1234的反序数是4321),求N的值
输入描述:null
输出描述:输出题目要求的四位数,如果结果有多组,则每组之间以回车隔开
#include <stdio.h>
int main() {
//遍历所有的四位数(1000-9999)。
//对于每一个四位数,将其颠倒。
//检查这个数的九倍是否等于颠倒后的数。
//如果找到一个符合条件的数,就输出这个数。
int N, reverse_N, temp;//整数N,反序数reserve_N,temp暂存变量
// 1.遍历所有的四位数
for (N = 1000; N <= 9999; N++) {
temp = N; // 暂存变量,temp==N
reverse_N = 0;
//2.颠倒四位数 while 循环用于颠倒 temp 变量的数字,并将结果存储在 reverse_N 变量中。循环会一直执行,直到 temp 变为0
while (temp != 0) { // while:先判断条件表达式,确认成立后执行循环体
reverse_N = reverse_N * 10 + temp % 10;
temp /= 10;// 等价于temp = temp / 10;
}
//3.判断N的九倍是否等于颠倒后的数
if (N * 9 == reverse_N) { // 检查N的九倍是否等于颠倒后的数
printf("%d\n", N); // 输出找到的数字
}
}
return 0;
}