[C] 纯文本查看 复制代码 //C 练习实例1
//C 语言经典100例 C 语言经典100例
//
//题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
//
//程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
#include <stdio.h>
//答案
void three_number()
{
int i;//百位上的数字
int j;//十位上的数字
int k;//个位上的数字
for(i=1;i<=4;i++)//从1234四个数字逐个用
{
for(j=1;j<=4;j++)
{
for(k=1;k<=4;k++)
{
if(k==i||k==j||i==j)//i,j,k三个数不能相等
{
continue;
}else
{
printf("%d\t",i*100+j*10+k);//打印这个三位数
}
}
}
printf("\n");
}
return;
}
//楼主的函数
void three_number01()
{
int i;//百位上的数字
int j;//十位上的数字
int k;//个位上的数字
for(i=1;i<=4;i++)//j从1234四个数字逐个用
{
for(j=1;j<=4;j++)
{
if(j!=i)//j不能等于i
{
for(k=1;k<=4;k++)
{
if(k==i||k==j)//k不能等于j也不能等于i
{
continue;
}else
{
printf("%d\t",i*100+j*10+k);//打印这个三位数
}
}
}
}
printf("\n");
}
return;
}
楼主拿到这个题目,首先就觉得要三个循环嵌套,然后在第二层循环的时候判断,前面两个数是否相同,
在第三层循环(最内层)判断与前面两个数是否相同!
而答案是直接在第三层循环(最内层)判断三个数是否相同!
各位坛友们有没有更好的答案呢?分享一些好的思路一起讨论讨论? |