输入三位数字N,求两位数AB(其中个位数字为B,十位数字为A,且有0 < A < B)。使得下列等式成立: AB x BA = N 其中BA是把AB中个、十位数字交换所得的两位数。 编写程序,接收键盘输入的三位整数N,求解A,B并输出。 如果没有解则输出No。下面的程序哪里有问题#include<stdio.h> int main() { int a,b,c,i,j; scanf("%d",&a); b=10; c=10; while(b*c<a) { c=(b%10)*10+b/10; i=b/10; j=b%10; b++; } if(b*c==a&&i<j) printf("%d",b,c); else printf("No"); return 0; }
时间: 2024-03-16 21:43:57 浏览: 199
编写程序,接受从键盘输入的10个十进制数字,输入中遇到回车符则停止输入,各个数经过bcd码处理,以十六进制显示在屏幕上
4星 · 用户满意度95%
这段程序有几个问题。首先,在第16行,应该使用printf函数输出两个数,而不是一个,所以需要在输出中加一个占位符%s。其次,在第18行,应该判断交换后的数c是否小于等于99,因为两位数乘以两位数最大只能得到四位数,如果c大于99,则一定无解。另外,在第21行应该使用else if,因为如果b*c不等于a,则说明没有解,而不是直接输出No。最后,在第22行,应该输出字符串"No",而不是直接输出No。修正后的程序如下:
```
#include<stdio.h>
int main() {
int a,b=10,c=10,i,j;
scanf("%d",&a);
while(b*c<a && c<=99) {
c=(b%10)*10+b/10;
i=b/10;
j=b%10;
b++;
}
if(b*c==a && i<j) {
printf("%d%s%d",b," ",c);
} else if(b*c!=a) {
printf("No");
}
return 0;
}
```
这样就可以正确地解决问题了。
阅读全文