大家过来帮帮忙,计算--------○*○○○=○○*○○○强烈要求lmjv222进来
//在“○”填入1,2,3,4,5,6,7,8,9,不重复使得式子成立//(4)○*○○○=○○*○○○(共有13种可能)
//(5)○*○○○=○*○○○○(共有288种可能)
//(6)○○*○○=○*○○○○(共有7种可能)
//(7)○○*○○=○○*○○○(共有11种可能)
#include<stdio.h>//我只写了○*○○○=○○*○○○,但是运行出来的没有13组,只有8组
#include<string.h>//哪位好人看看错误在哪,顺便把其他的也写了
void first();
int judge(int ,int ,int ,int);
#include<stdlib.h>
void main()
{
first();
}
void first()
{
int i,j,k,n,m,count=0;
for(i=1;i<9;i++)//代表的是○
{
for(j=100;j<999;j++)//代表的是○○○
{
for(k=10;k<99;k++)//代表又边的○○
{
m=i*j;
if(m%k==0)
{
n=m/k;
m=judge(i,j,k,n);
if(m)
{printf("%d %d %d %d\n",i,j,k,n);
count++;}
}
}
}
}
printf("%d\n",count);
}
int judge(int a,int b,int e,int f)
{
int i,j;
char c[3],d[11];
itoa(a,c,10);
strcpy(d,c);
itoa(b,c,10);
strcat(d,c);
itoa(e,c,10);
strcat(d,c);
itoa(f,c,10);
strcat(d,c);//一直到这里我是把a,b,e,f变成数组d[]
for(i=0;d[i]!='\0';i++);//数组的元素不是9个跳出
if(i!=9)
return 0;
for(i=0;d[i]!='\0';i++)
{
for(j=i+1;d[j]!='\0';j++)
{
if(d[i]==d[j]||d[j]=='0')//数组的元素有相同的或者有0的跳出
return 0;
}
}
return 1;//否则返回1
}
原始题目是出自本论坛lmjv222发的c语言100题中的97题,前面还有三个式子,我做出来了基本上也是这样写的,
但是最后4个式子我计算出来的个数都比题目中给的答案少,有兴趣的做做。尤其是那个发这个100题的朋友