c语言程序求改错 【问题描述】 输入三位数字N,求两位数AB(其中个位数字为B,十位数字为A,且有0 < A < B
【问题描述】输入三位数字N,求两位数AB(其中个位数字为B,十位数字为A,且有0<A<B≤9)。使得下列等式成立:ABxBA=N其中BA是把AB中个、十位数字交换所得的两...
【问题描述】
输入三位数字N,求两位数AB(其中个位数字为B,十位数字为A,且有0 < A < B ≤9)。使得下列等式成立:
AB x BA = N
其中BA是把AB中个、十位数字交换所得的两位数。
编写程序,接收控制台输入的三位整数N,求解A,B并输出。
如果没有解则输出“No Answer”。
#include<stdio.h>
#include<math.h>
int main()
{
int n,a,b,t,m,find;
scanf("%d",&n);
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
{
m=(a*10+b)*(b*10+a);
if(m==n)
{
find=0;break;
}
if(find==0) break;
}
if(a>b)
{
t=a;
a=b;
b=t;
}
printf("%d%d",a,b);
if(find!=0) printf("No answer");
return 0;
}
}
这个程序a无法循环到2以上,只能是1,且怎样加入条件a!=b,我尝试加在b<=9的后面,但是不可以。还有no answer这一支应该怎样加入?谢了 展开
输入三位数字N,求两位数AB(其中个位数字为B,十位数字为A,且有0 < A < B ≤9)。使得下列等式成立:
AB x BA = N
其中BA是把AB中个、十位数字交换所得的两位数。
编写程序,接收控制台输入的三位整数N,求解A,B并输出。
如果没有解则输出“No Answer”。
#include<stdio.h>
#include<math.h>
int main()
{
int n,a,b,t,m,find;
scanf("%d",&n);
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
{
m=(a*10+b)*(b*10+a);
if(m==n)
{
find=0;break;
}
if(find==0) break;
}
if(a>b)
{
t=a;
a=b;
b=t;
}
printf("%d%d",a,b);
if(find!=0) printf("No answer");
return 0;
}
}
这个程序a无法循环到2以上,只能是1,且怎样加入条件a!=b,我尝试加在b<=9的后面,但是不可以。还有no answer这一支应该怎样加入?谢了 展开
4个回答
展开全部
这个程序a无法循环到2以上,只能是1
---------------------------
你的大括号乱用,for (a=1...)的循环体内有句 return 0; 怎么可能到达a==2嘛!
且怎样加入条件a!=b,我尝试加在b<=9的后面
----------------------------
因为条件有a<b,所以,这句for(b=1;b<=9;b++) 直接改成 for(b=a+1;b<=9;b++)不就是了,
同时for(a=1;a<=9;a++)改成for(a=1;a<=8;a++)
---------------------------
你的大括号乱用,for (a=1...)的循环体内有句 return 0; 怎么可能到达a==2嘛!
且怎样加入条件a!=b,我尝试加在b<=9的后面
----------------------------
因为条件有a<b,所以,这句for(b=1;b<=9;b++) 直接改成 for(b=a+1;b<=9;b++)不就是了,
同时for(a=1;a<=9;a++)改成for(a=1;a<=8;a++)
更多追问追答
追问
那应该怎么改呢?我把return 0 拿到外面了,可是也不对啊,能不能麻烦您帮我改一下,我刚开始学c语言,不是很懂,谢了
追答
#include
int main()
{
int n,a,b,t,m,find;
scanf("%d",&n);
for(a=1;a<=8;a++)
{
for(b=a+1;b<=9;b++)
{
if (((a*10+b)*(b*10+a))==n)
{
printf("%d%d",a,b);
return 0;
}
}
}
printf("No answer");
return 0;
}
展开全部
#include<stdio.h>
#include<math.h>
int main()
{
int n,a,b,t,m,find=1;
scanf("%d",&n);
for(a=1;a<=9;a++)
{
for(b=a+1;b<=9;b++)
{
m=(a*10+b)*(b*10+a);
if(m==n)
{
find=0;
goto Result;
}
else
continue;
}
}
Result:
if(find!=0) printf("No answer");
else
printf("%d%d",a,b);
return 0;
}
#include<math.h>
int main()
{
int n,a,b,t,m,find=1;
scanf("%d",&n);
for(a=1;a<=9;a++)
{
for(b=a+1;b<=9;b++)
{
m=(a*10+b)*(b*10+a);
if(m==n)
{
find=0;
goto Result;
}
else
continue;
}
}
Result:
if(find!=0) printf("No answer");
else
printf("%d%d",a,b);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
更多追问追答
追问
大括号应该括在什么位置啊,我试了几次,都快把我弄糊涂了,能帮我看看嘛,谢了
追答
#include
#include
int main()
{
int n,a,b,t,m,find=-1;//find要先赋值 因为第一次比较之前 f未必有值
scanf("%d",&n);
for(a=1;ab)
{
t=a;
a=b;
b=t;
}
if(find==0)//找到了才输出
printf("%d%d",a,b);
if(find!=0) printf("No answer");
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
外层循环的大括号没扩对
把格式对齐了 再看
find 必须先赋值 在进行比较
把格式对齐了 再看
find 必须先赋值 在进行比较
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询