要求
请编写函数fun,其功能是:找出用1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数,然后把这些三位数按从小到大的顺序依次存入相应的数组xxx中,符合条件的个数由函数值返回
解题思路
本题要求求出一个三位数,百位从四个数中取一个(for(i=1;i<5;i++)),十位数也是从四个数中取-个(for(j=1;j<5;j++))但题目要求无重复数字,即不等于百位(if(j!=i)),个位同理,从余下的两个数中取一个。题目要求从小到大,故1到4循环,若从大到小,则写成从到1循环即可。
代码
#include <stdio.h>
#define max 100
int fun(int xxx[])
{
int i ,j,l,k=0;
for(i=1;i<5;i++)//百位
{
for(j=1;j<5;j++)//十位
{
if(j!=i)//判断百位数字不等于十位
{
for(l=1;l<5;l++)//个位
{
if (l!=j && l!=i)
{
xxx[k]=i*100+j*10+l;
k++;
}
}
}
}
}
return k ;
}
int main()
{
int xx[max],cnt;
void NONO(int xx[], int cnt);
cnt = fun(xx);
printf("符合条件的个数=%d\n", cnt);
NONO(xx, cnt);
return 0;
}
void NONO(int xx[], int cnt)
{
int i;
FILE *fp;
fp = fopen("out.dat", "w");
fprintf(fp, "%d\n", cnt);
for(i=0;i<cnt;i++)
fprintf(fp, "%d\n", xx[i]);
fclose(fp);
}