永发信息网

c语言中怎么表示两个两位数相乘等于一个两位数和一个三位数相乘?限定这些数为1~9,且不重复。

答案:2  悬赏:30  手机版
解决时间 2021-03-27 14:05
  • 提问者网友:你挡着我发光了
  • 2021-03-27 01:03
c语言中怎么表示两个两位数相乘等于一个两位数和一个三位数相乘?限定这些数为1~9,且不重复。
最佳答案
  • 五星知识达人网友:玩家
  • 2021-03-27 02:35
这是你要的效果么

用了穷尽法代码有点复杂
#include
#include


int main(void)
{
long a = 1, b = 1, c = 1, d = 1;
int aa[9] = {0}, flag = 1, i = 1, j = 1;


for(a = 10; a < 100; a++)
{
for(b = 10; b < 100; b++)
{
for(c = 10; c < 100; c++)
{
for(d = 100; d < 1000; d++)
{
if(a * b == c * d)
{
aa[0] = a / 10;
aa[1] = a % 10;
aa[2] = b / 10;
aa[3] = b % 10;
aa[4] = c / 10;
aa[5] = c % 10;
aa[6] = d / 100;
aa[7] = d % 100 / 10;
aa[8] = d % 10;
for(i = 0; i < 9; i++)
{
for(j = i + 1; j < 9; j++)
{
if(aa[i] == aa[j])
flag = 0;
else
continue;
}
}
if(flag)

printf("%ld * %ld = %ld * %ld
", a, b, c, d); else
flag = 1;
}
}
}
}
}
return 0;
}
追问数组中要不包含0追答#include 
#include 

int main(void)
{
long a = 1, b = 1, c = 1, d = 1;
int aa[9] = {0}, flag = 1, i = 1, j = 1;

for(a = 10; a < 100; a++)
{
for(b = 10; b < 100; b++)
{
for(c = 10; c < 100; c++)
{
for(d = 100; d < 1000; d++)
{
if(a * b == c * d)
{
aa[0] = a / 10;
aa[1] = a % 10;
aa[2] = b / 10;
aa[3] = b % 10;
aa[4] = c / 10;
aa[5] = c % 10;
aa[6] = d / 100;
aa[7] = d % 100 / 10;
aa[8] = d % 10;
for(i = 0; i < 9; i++)
{
if(aa[i] == 0)
{
flag = 0;
continue;
}
for(j = i + 1; j < 9; j++)
{
if(aa[i] == aa[j])
flag = 0;
else
continue;
}
}
if(flag)
printf("%ld * %ld = %ld * %ld
", a, b, c, d);
else
flag = 1;
}
}
}
}
}
return 0;
}追问左边的两个乘数交换算同一算式,不能重复输出..追答

全部回答
  • 1楼网友:冷風如刀
  • 2021-03-27 03:59
循环吧
for(a1)
for(b1)
.......
if((a1*10+b1)*(a2*10+b2)==( a3*10+b3)*(a4*100+b4*10+c))
printf(....);
大概思路
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯