/*
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
掉不满足条件的排列。
*/
#include <stdio.h>
int main(int argc, char *argv[])
/*这是我想说的第一点,网上给的答案头文件都是这样的 main(),相信现在还有很多人
是这样用的,可能有些人会说The C Programming Language也是这样写的,当然这没错
,只是这是以前的C标准,而最新的C99标准定义头文件只有两种正确的表示方式,一种
就是int main(int argc, char *argv[]),而另一种是int main(void),希望大家使用
最新的标准定义
*/
{
int a;
int b;
int c;
int num;
for(a=1;a<5;a++)
for(b=1;b<5;b++)
for(c=1;c<5;c++)
{
num=a*100+b*10+c;
if(a!=b&&a!=c&&b!=c)
{
printf("%d/n",num);
}
/*
这里可能有人问明明就一个printf函数,为什么还要用一对中括号括起来?
这是一种习惯,当以后程序的代码不断增加的时候,如果有一天你的某个
if语句下面只有一条语句,你也没有加中括号,而恰巧你又要加一句代码
上去,又恰巧你加完后却忘了加中括号,可能你会说哪有这么多恰巧,可
事实确实如此,至少我曾遇到过。在这里的建议是凡是for语句和if语句,
哪怕其后面只有一个语句,也建议把它用一对中括号括起来。
可参见林锐博士的《高质量程序设计指南——C/C++语言》
*/
}
return 0;
/*可能会有人问这里为什么要返回一个0?
通常来说,不返回这个0,也不会造成什么危害,一个返回值为整型的函数如果返
回失败,实际上是隐含地返回了某个垃圾整数。只要这个整数不被用到,就无关紧要。
然而,在某些情形下函数main的返回值并非无关紧要。大多数C语言实现都通过函数
main的返回值来告知操作系统该函数的执行是成功的还是失败的。
典型的处理方案是,返回值为0代表程序执行成功,返回值非0则表示程序执行失败。
如果一个程序的main函数并不返回任何值,那么有可能看上去执行失败。如果正在
使用一个软件管理系统,该系统关注程序被调用后执行时成功还是失败,那么很可
能得到令人惊讶的结果。
可参见《C陷阱与缺陷》人民邮电出版社第62页
*/
}