目录
前言
记录一些自己学习C语言的题目,好让自己以后复习,回顾。
一、题目
题目描述:有1,2,3,4这四个数字,能组成多少个互不相同且无重复的三位数?都是多少?
二、分析
1. 先考虑如何使用代码实现1,2,3,4组成三位数。
假设x代表百位,y代表十位,z代表个位,则可使用三层for循环可实现xyz组成三位数。示例如下,
for(x = 1;x < 5;x++)
{
for (y = 1;y < 5;y++)
{
for (z = 1;z < 5;z++)
{
printf("%d,%d,%d\n",x,y,z);
}
}
}
这便实现了1-4组成了三位数了
2.再来考虑互不相同,且无重复
要实现这个,也很简单。即满足x != y 且y!= z 且x!= z即可。
三、代码实现
完整代码如下:
#include <stdio.h>
int main(void)
{
int x,y,z;
int count = 0;;
for(x = 1;x < 5;x++)
{
for (y = 1;y < 5;y++)
{
for (z = 1;z < 5;z++)
{
if ((x != y) && (y != z) && (x != z))
{
printf("%d %d %d\n",x,y,z);
count++;
}
}
}
}
printf("count is %d\n",count);
return 0;
}
输出如下:
1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
count is 24
四、总结
这个题目主要是想到怎么能够组合这三位数和互不相同的条件。
另,分享一个如何把三位数拆成单独的个/十/百位的方法:
假设i = 123,则i / 100 = 1,即是其百位,i%100/10 = 2,即是其十位,i%100%10 = 3,即数其个位。
今天分享到这里,感谢。