#include<stdio.h> int main() { int a,b,c,i,j; scanf("%d",&a); b=10; while(b*c<a) { b++; c=(b%10)*10+b/10; i=b/10; j=b%10; } if(b*c==a&&i<j) printf("%d",b,c); else printf("No"); return 0; }有什么问题输入三位数字N,求两位数AB(其中个位数字为B,十位数字为A,且有0 < A < B)。使得下列等式成立: AB x BA = N 其中BA是把AB中个、十位数字交换所得的两位数。 编写程序,接收键盘输入的三位整数N,求解A,B并输出。 如果没有解则输出No
时间: 2024-03-16 13:43:50 浏览: 379
#include <stdio.h>
4星 · 用户满意度95%
这段代码有几个问题:
1. 在第19行的 printf 函数中,应该使用格式化字符串输出两个变量,正确的写法是 printf("%d %d", b, c);
2. 在第15行的 while 循环中,应该先计算 c 的值再进行判断,否则第一次循环时 c 的值未定义,会导致程序出错。应该改为:
```
while(b*c<a)
{
b++;
i=b/10;
j=b%10;
c=(j*10+i)*b;
}
```
3. 在第13行的赋值语句中,c 的值应该初始化为 0,否则第一次循环时 b*c 会被赋值为一个随机值。应该改为:
```
b=10;
c=0;
```
改正以上问题后,代码如下所示:
```
#include<stdio.h>
int main()
{
int a,b,c,i,j;
scanf("%d",&a);
b=10;
c=0;
while(b*c<a)
{
b++;
i=b/10;
j=b%10;
c=(j*10+i)*b;
}
if(b*c==a&&i<j)
printf("%d %d",b,c/b);
else
printf("No");
return 0;
}
```
注意,上述代码只能解决输入为三位数的情况。如果输入为其他数字,程序可能出现错误。
阅读全文