作业帮 > 综合 > 作业

C语言将1-9九个数分成3组,组成一个两位数和一个一位数,将这个两位数与一位数相乘,找出所有乘积相等的情况,并输出这三组

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/19 15:02:20
C语言
将1-9九个数分成3组,组成一个两位数和一个一位数,将这个两位数与一位数相乘,找出所有乘积相等的情况,并输出这三组数,用C语言写出算法.
要C语言写的.
C语言将1-9九个数分成3组,组成一个两位数和一个一位数,将这个两位数与一位数相乘,找出所有乘积相等的情况,并输出这三组
编译运行正确,结果是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
C语言将1-9九个数分成3组,组成一个两位数和一个一位数,将这个两位数与一位数相乘,找出所有乘积相等的情况,并输出这三组 急,明天要交啊某两位数是一位数的3倍多2,若把这个两位数放在一位数的左边组成一个三位数,则这个三位数是两位数与一位数的和 有一个两位数和一个一位数,若将两位数放在一位数的前面得到的三位数必将一位数放在两位数的前面得到的三 有一个两位数和一个一位数,如果在这个一位数后面多写一个0,则它与这个两位数的和是146,如果用这个两位数除以这个一位数, a是一个一位数,b是一个两位数,c是一个三位数.已知abc三个数的乘积是2004,则a+b+c的和是多少 已知A是一个一位数,B是一个两位数,C是一个三位数,这三个数相乘,积是2004,求它们的和. 连续三个数字组成一个两位数和一位数,怎样组合使相乘的积最大.有什么方法. 用7,8,9三个数和乘号组成一个两位数乘一位数的乘法算式,你能写出几个? 从1到9九个数字要求用一个两位数减去一个两位数除以一个两位数等于一个一位数乘以一个两位数9个数字不重复 有一个两位数和一个一位数,如果在 一个一位数后面多写一个0,则它与 这个两位数的和是146,如果用这个 两位数除以这个一 一个两位数,如果将个位数字,十位数字对调,与原数相乘的结果是1458,求这个两位数? 一个两位数,个位,十位上的数字相加正好是13,且是7与一位数相乘的积,这个两位数是多少?