C语言将1-9九个数分成3组,组成一个两位数和一个一位数,将这个两位数与一位数相乘,找出所有乘积相等的情况,并输出这三组数,用C语言写出算法.要C语言写的.
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/30 01:52:44
C语言将1-9九个数分成3组,组成一个两位数和一个一位数,将这个两位数与一位数相乘,找出所有乘积相等的情况,并输出这三组数,用C语言写出算法.要C语言写的.
C语言
将1-9九个数分成3组,组成一个两位数和一个一位数,将这个两位数与一位数相乘,找出所有乘积相等的情况,并输出这三组数,用C语言写出算法.
要C语言写的.
C语言将1-9九个数分成3组,组成一个两位数和一个一位数,将这个两位数与一位数相乘,找出所有乘积相等的情况,并输出这三组数,用C语言写出算法.要C语言写的.
编译运行正确,结果是18,9和27,6和54,3
#include
#include
typedef struct list{
int x[3];
struct list * next;
}result;
int flag[10];
int a[10];
result* head=NULL;
void print()//打印满足条件的结果
{
if((a[1]*10+a[2])*a[3]==(a[4]*10+a[5])*a[6]&&(a[1]*10+a[2])*a[3]==(a[7]*10+a[8])*a[9])
{
if(head==NULL)
{
result*p=(result*)malloc(sizeof(result));
p->x[0]=a[1]*100+a[2]*10+a[3];
p->x[1]=a[4]*100+a[5]*10+a[6];
p->x[2]=a[7]*100+a[8]*10+a[9];
p->next=head;
head=p;
printf("结果是:%d,%d\t%d,%d\t%d,%d\n",a[1]*10+a[2],a[3],a[4]*10+a[5],a[6],a[7]*10+a[8],a[9]);
}
else{//判断结果是否重复
result*q=head;
while(q!=NULL)
{
if((q->x[0]!=a[1]*100+a[2]*10+a[3])&&(q->x[1]!=a[1]*100+a[2]*10+a[3])&&(q->x[2]!=a[1]*100+a[2]*10+a[3]))
q=q->next;
else break;
}
if(q==NULL)
{
result* p=(result*)malloc(sizeof(result));
p->x[0]=a[1]*100+a[2]*10+a[3];
p->x[1]=a[4]*100+a[5]*10+a[6];
p->x[2]=a[7]*100+a[8]*10+a[9];
p->next=head;
head=p;
printf("结果是:%d,%d\t%d,%d\t%d,%d\n",a[1]*10+a[2],a[3],a[4]*10+a[5],a[6],a[7]*10+a[8],a[9]);
}
}
}
}
void fun(int i)//递归计算1~9的全排列
{
int k;
if (i==10)
{
print();
}
else
{
for(k=1;k