//问题有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? //分析要组成三位数需要三个变量来控制 i—>个位 j—>十位 k—>百位 再用count基数? //每组成一个三位数count++ 再通过for循环来实现;
代码如下:
#include<stdio.h>
int main()
{
?? ?//计算
?? ?int count = 0;
?? ?for (int i = 1; i < 5; i++)
?? ?{
?? ??? ?for (int j = 1; j < 5; j++)
?? ??? ?{
?? ??? ??? ?for (int k = 1; k < 5; k++)
?? ??? ??? ??? ?if (i!=j&&i!=k&&j!=k)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("%d%d%d\n", i, j, k);
?? ??? ??? ??? ??? ?count++;
?? ??? ??? ??? ?}
?? ??? ?}
?? ??? ?
?? ?}
?? ?printf("%d", count);
?? ?return 0;
}
在执行此程序时,一共进行了4*4*4=64个循环,实际上其中有40个循环是没必要全部执行的,为了提高代码运行效率,可以使用continue语句优化
#include<stdio.h>
int main()
{
?? ?int count=0;
?? ?for (int i = 1; i < 5; i++)
?? ?{
?? ??? ?for (int j = 1; j < 5; j++)
?? ??? ?{
?? ??? ??? ?if (i == j)
?? ??? ??? ??? ?continue;
?? ??? ??? ?for (int k = 1; k < 5; k++)
?? ??? ??? ?{
?? ??? ??? ??? ?if (k == i || k == j)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?continue;
?? ??? ??? ??? ?}
?? ??? ??? ??? ?else
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("%d%d%d\n", i, j, k);
?? ??? ??? ??? ??? ?count++;
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?}
?? ?}
?? ?printf("%d", count);
?? ?return 0;
}
|