为什么显示不出数字
#include<stdio.h>#include<math.h>
int main()
{
int a,b,c,d,e;
for(b=1;b<10;b++){
for(c=1;c<=7;c++){
for(d=1;d<9;d++){
a = b*1+c*9+d*9*9;
e = d*1+c*7+b*7*7;
if(a == e){
printf("%d\n%d%d%d\n%d%d%d\n",b*1+c*9+d*9*9,b,c,d,d,c,b);
break;
}
}
}
}
return 0;
} 这段代码的目的是找到满足条件a = e的数字。但是在输出结果时,可能会出现无法显示数字的情况。
造成这个问题的原因是,输出语句中的格式字符串使用了%d ,这意味着要打印整数。然而,由于b 、 c和d是for循环的控制变量,它们的值可能会超过一位数,导致无法正确显示。
为了解决这个问题,我们可以将输出语句中的格式字符串改为%2d ,这样就可以确保输出的数字始终占据两位数的位置。修改后的代码如下:
#include <stdio.h>
#include <math.h>
int main() {
int a, b, c, d, e;
for (b = 1; b < 10; b++) {
for (c = 1; c <= 7; c++) {
for (d = 1; d < 9; d++) {
a = b * 1 + c * 9 + d * 9 * 9;
e = d * 1 + c * 7 + b * 7 * 7;
if (a == e) {
printf("%2d\n%2d%2d%2d\n%2d%2d%2d\n", b * 1 + c * 9 + d * 9 * 9, b, c, d, d, c, b);
break;
}
}
}
}
return 0;
}
现在,代码应该能够正确地显示数字了。
页:
[1]