"C经典算法:从简到难的互不相同数字问题"

需积分: 3 1 下载量 198 浏览量 更新于2024-01-12 2 收藏 130KB DOC 举报
本文档提供了许多C经典算法,适用于初学者和即将工作的朋友。 其中一个经典的例题是判断由1、2、3、4这四个数字能组成多少个互不相同且无重复数字的三位数,以及具体是哪些数字。 程序分析: 首先,可以将1、2、3、4填入百位、十位和个位的数字中。然后,生成所有可能的排列,并去掉不满足条件的排列。 程序源代码: ``` #include <stdio.h> int main() { int i, j, k; printf("\n"); for(i=1; i<5; i++) { /*以下为三重循环*/ for(j=1; j<5; j++) { for(k=1; k<5; k++) { if(i!=k && i!=j && j!=k) { //判断是否满足互不相同的条件 printf("%d%d%d\n", i, j, k); //输出满足条件的三位数 } } } } return 0; } ``` 该程序使用三重循环,分别遍历百位、十位和个位的数字。在每次循环中,判断当前的三个数字是否满足互不相同的条件,如果满足则输出该三位数。 运行程序后,会得到如下的输出结果: ``` 123 124 132 134 142 143 213 214 231 234 241 243 312 314 321 324 341 342 412 413 421 423 431 432 ``` 从输出结果可以看出,由1、2、3、4这四个数字组成的互不相同且无重复数字的三位数共有24个。其中,排列的顺序不同被视为不同的三位数。 通过这个例题,我们可以学习到使用循环和条件判断来解决问题,以及如何生成全排列。这是C语言中常用的算法之一,对于初学者来说是一道很好的练习题。