当前位置: 代码迷 >> C语言 >> 大家过来帮帮忙,计算--------○*○○○=○○*○○○强烈要求lmjv222进来
  详细解决方案

大家过来帮帮忙,计算--------○*○○○=○○*○○○强烈要求lmjv222进来

热度:180   发布时间:2007-02-24 10:19:06.0
大家过来帮帮忙,计算--------○*○○○=○○*○○○强烈要求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题的朋友

搜索更多相关的解决方案: include  void  

----------------解决方案--------------------------------------------------------
8种
20种
9种
18种,如果有不对,我再检验一次,谢谢。
----------------解决方案--------------------------------------------------------
我大概也和你是一样,但是题目给的组数实在太多了,
能把你的原代码拿出来吗?

----------------解决方案--------------------------------------------------------
我的结果可以 你看看 后边的其他题目都可以参照这个思路:

#include <stdio.h>
main()
{
int one,three1,two,three2;
int i,j,temp,count=0;
int string[9];
for(one=1;one<=9;one++)
for(three1=123;three1<=987;three1++)
for(two=12;two<=98;two++)
for(three2=123;three2<=987;three2++)
if(one*three1==two*three2)
{
string[0]=one;
string[1]=three1/100;
string[2]=three1%100/10;
string[3]=three1%10;
string[4]=two/10;
string[5]=two%10;
string[6]=three2/100;
string[7]=three2%100/10;
string[8]=three2%10;
for(i=0;i<8;i++)
for(j=i+1;j<9;j++)
if(string[i]>string[j])
{
temp=string[i];
string[i]=string[j];
string[j]=temp;
}
if(string[0]==1&&string[1]==2&&string[2]==3&&string[3]==4&&string[4]==5&&string[5]==6&&string[6]==7&&string[7]==8&&string[8]==9)
{
count++;
printf("%d*%d=%d*%d\n",one,three1,two,three2);
}
}
printf("There are %d results in total!\n",count);
}
----------------解决方案--------------------------------------------------------
谢楼上,看了你的程序我自己也找到错误了
----------------解决方案--------------------------------------------------------
//(5)○*○○○=○*○○○○(共有288种可能)
这个是不是有问题 我算的是28种
----------------解决方案--------------------------------------------------------
我也只计算出28种
----------------解决方案--------------------------------------------------------
回复:(cfnxy)//(5)○*○○○=○*○○○○(共有2...
以下是引用cfnxy在2007-3-1 7:58:29的发言:
//(5)○*○○○=○*○○○○(共有288种可能)
这个是不是有问题 我算的是28种

28种肯定不对
----------------解决方案--------------------------------------------------------

  相关解决方案