劳烦看一下

login_user 2008-08-30 01:27:52
#include <stdio.h>

void main()
{
int num, a, b, tp=0;
scanf("%d", &num);
if(num<100 && num>999)
printf("error!");
else
{
for(a=0;a<9;a++)
{

for(b=9;b<a;b--)
{

if(((a*10+b)*(a+b*10)) == num)
{
printf("%d%d", a, b);
tp=1;
}
}

}
if(tp==0)
printf("No answer!");
}
}

无论我输入的是什么数, 结果都是no answer, 这是为什么啊?
程序大概意思是:
输入一个三位数,
然后求得一个a和b, ab*ba等于这个数
不知道我什么地方写错了, 请指教下!谢谢
...全文
57 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ysysbaobei 2008-08-30
  • 打赏
  • 举报
回复


#include <stdio.h>

void main()
{

int num,a,b,tp=0;

printf("please input a number:num\n");
scanf("\n%d",&num);

if(num<100||num>999)
printf("error!\n");
else
{
for(a=0;a<9;a++)
for(b=9;b>0;b--)
if(((a*10+b)*(a+b*10))==num)
{
tp=1;
printf("%d,%d\n",a,b);
}
if (tp==0)
printf("No answer!\n");
}
}

turboc2 下编译通过
login_user 2008-08-30
  • 打赏
  • 举报
回复
知道了,知道了, 谢谢啊
kangken 2008-08-30
  • 打赏
  • 举报
回复
你a从0开始
b从9开始
b<a根本就不满足
都不会进入循环
kangken 2008-08-30
  • 打赏
  • 举报
回复

for(b=9;b <a;b--)


把<改成>
login_user 2008-08-30
  • 打赏
  • 举报
回复
好的,谢谢
还一个问题是:比如我输入976
结果还是no answer
但是976=16*61啊
是不是中间哪出错了?
良枫 2008-08-30
  • 打赏
  • 举报
回复
if(num <100 && num>999)
printf("error!");

应该把 && 改为 ||

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧