c语言中怎么表示两个两位数相乘等于一个两位数和一个三位数相乘?限定这些数为1~9,且不重复。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中怎么表示两个两位数相乘等于一个两位数和一个三位数相乘?限定这些数为1~9,且不重复。相关的知识,希望对你有一定的参考价值。
输出所有的可能性.
这是你要的效果么
用了穷尽法代码有点复杂
#include <stdio.h>
#include <stdlib.h>
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\\n", a, b, c, d);
else
flag = 1;
return 0;
追问数组中要不包含0
追答#include <stdio.h>#include <stdlib.h>
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\\n", a, b, c, d);
else
flag = 1;
return 0;
追问
左边的两个乘数交换算同一算式,不能重复输出..
追答for(a1)
for(b1)
.......
if((a1*10+b1)*(a2*10+b2)==( a3*10+b3)*(a4*100+b4*10+c))
printf(....);
大概思路
C语言中求两数相乘的程序
最好详细一点.
思路:double类型的范围: -1.7*10(-308)~1.7*10(308),如果两个数的乘积不超过这样的精度,可以直接使用*符号进行运算。
参考代码:
#include<stdio.h>int main()
double a,b;
scanf("%lf%lf",&a,&b);
printf("%.2lf",a*b); //保留两位小数
return 0;
/*
运行结果:
1205 5985
7211925.00
*/ 参考技术A #include "stdafx.h"
#include<stdio.h>
long int main(int argc, char* argv[])
long int x,y,num;
scanf("%d,%d",&x,&y);
num=x*y;
printf("num=%d\n",num);
return 0;
已经验证过,绝对可用。输入数字式格式格式为 34,35(就是2个数字) 然后点回车,就OK了.
一楼那位仁兄的程序我调试过了,运行没问题,但是输出格式有问题,看不懂得。 参考技术B #include<stdio.h>
void main()
double d;
scanf("%lf,%lf\n",&i,&j);
d=ji(i,j);
printf("%lf",d);
double ji(double i,double j)
double z;
z=i*j;
return z;
随手遍的不知道对不对呵呵 参考技术C int main()
double a, b;
scanf("%lf %lf", &a, &b);
printf("%lg\n", a * b);
return 0;
参考技术D 这个问题太低级了吧……
以上是关于c语言中怎么表示两个两位数相乘等于一个两位数和一个三位数相乘?限定这些数为1~9,且不重复。的主要内容,如果未能解决你的问题,请参考以下文章