某四位,且逆序数 等于 某四位*9倍
#include <stdio.h>
int main() {
for(int a = 1; a <= 9; a++) { // 第一位不能为 0
for(int b = 0; b <= 9; b++) {
for(int c = 0; c <= 9; c++) {
for(int d = 0; d <= 9; d++) {
int number = a*1000 + b*100 + c*10 + d; // 构造四位数
int reverse = 0; // 每次计算前需要清空反转数
int temp = number; // 使用临时变量计算反转
// 反转数字
while(temp > 0) {
reverse *= 10;
reverse += (temp % 10);
temp /= 10;
}
// 判断是否满足条件
if (number * 9 == reverse) {
printf("%d\n", number); // 输出符合条件的数字
}
}
}
}
}
return 0;
}
错因:

打印数字菱形:
#include <stdio.h>
#include <string.h>
using namespace std;
int main() {
int n;
scanf("%d", &n);
char str[200]; // 调整数组大小
// 输出上半部分
for (int i = 0; i <= n; i++) {
int j = 0;
memset(str, 0, sizeof(str)); // 清空字符串
// 输出前面的空格
for (j = 0; j < 2 * n - 2 * i; ++j) {
str[j] = ' ';
}
// 输出前半部分数字
for (int k = 0; k <= i; ++k) {
str[j] = '0' + k;
str[j + 1] = ' ';
j = j + 2;
}
// 输出后半部分数字
for (int k = i - 1; k >= 0; --k) {
str[j] = '0' + k;
str[j + 1] = ' ';
j = j + 2;
}
// 输出当前行
printf("%s\n", str);
}
// 输出下半部分
for (int i = n + 1; i <= 2 * n; i++) {
int j = 0;
memset(str, 0, sizeof(str)); // 清空字符串
// 输出前面的空格
for (j = 0; j < 2 * i - 2 * n; ++j) {
str[j] = ' ';
}
// 输出前半部分数字
for (int k = 0; k <= 2 * n - i; ++k) {
str[j] = '0' + k;
str[j + 1] = ' ';
j = j + 2;
}
// 输出后半部分数字
for (int k = 2 * n - i - 1; k >= 0; --k) {
str[j] = '0' + k;
str[j + 1] = ' ';
j = j + 2;
}
// 输出当前行
printf("%s\n", str);
}
return 0;
}