C语言灵异问题~~高手进

来源:百度知道 编辑:UC知道 时间:2024/06/08 05:04:23
求能够分为两个两位数之积的所有四位数。
程序如下:
#include<stdio.h>
fun1(int a[],int n)
{
int b[3],c[3],d[3],i,j,z,x,y;
int t=0;
for(j=1;j<4;j++)
for(i=(j+1);i<5;i++)
{

if((a[j]*a[i])%10==a[1]) /*判断四个数相乘能等于个位数*/
{t=1;x=i;y=j;}
if(i==4)
if((a[1]*a[4])%10==a[1])
{t=1;x=1;y=4;}
if(t)
{
b[1]=a[x]; /*赋给两个数组接受两个两位数*/
c[1]=a[y];

for(i=1;i<5;i++)
if(i!=x&&i!=y) 将剩下的两个数放在一个数组里
{
d[1]=a[i];
z=i;
}

for(i=1;i<5;i++)
if(i!=x&&i!=y&&i!=z)
d[2]=a[i];

fun2(a,b,c,d,n);
}
}

}
fun2(int a[],int b[],int c[],int d[],int n)
{
if((d[1]*d[2])/10==a[4]) 判断剩下两个数相乘是否等于千位数
{
b[2]=d[1];
c[2]=d[2];
fun3(b,c,n);
}
}
fun3(int b[],int c[],int n)
{
int i,t;
i

求能够分为两个两位数之积的所有四位数,是什么意思?
1000=20*50? 1100=20*55? 这样的数?
-----------------------------------------
我写的程序算出来有14个~~ 好像有重复..我再改一下..修改后的如下:
1395=15*93
1260=21*60
1827=21*87
2187=27*81
1530=30*51
1435=35*41
6880=80*86
附程序:
#include <stdio.h>
#include <string.h>
int usedn[10000];
int main()
{
int flag[10],a,b,c,d,n,m;
memset(usedn,0,sizeof(usedn));
for(a=1;a<=9;a++) //a表示第一个十位数的第一位
for(b=0;b<=9;b++) //b....................二位
for(c=1;c<=9;c++) //c.......二............一.
for(d=0;d<=9;d++) //d........二...........二
{
memset(flag,0,sizeof(flag)); //flag标志位,下标表示该数,值表示出现的次数
flag[a]++,flag[b]++,flag[c]++,flag[d]++;
n=(10*a+b)*(10*c+d);
if(n>=1000)
{
m=n; //m保存n值
if(flag[n%10]) flag[n%10]--; //判断n中的每一位数字是否符合要