如何用C语言编写一个程序,实现打印所有由1、2、3、4组成的不同四位数,并统计这些四位数中各个数字都不相同的组合总数?
时间: 2024-12-14 11:18:59 浏览: 14
要编写一个C语言程序,首先我们需要遍历所有可能的四位数并检查它们是否由1、2、3、4这四个数字组成,同时确保每个数字只出现一次。我们可以使用嵌套循环和条件语句来实现这个功能。以下是一个简单的示例:
```c
#include <stdio.h>
int main() {
int digits[4] = {1, 2, 3, 4};
int count = 0; // 统计数字不重复的组合总数
for (int num = 1000; num <= 9999; num++) { // 遍历四位数范围
int temp[] = {num / 1000, (num % 1000) / 100, (num % 100) / 10, num % 10}; // 分割每一位数字
bool is_unique = true;
for (int i = 0; i < 4 && is_unique; i++) { // 检查数字是否唯一
for (int j = i + 1; j < 4; j++) {
if (temp[i] == temp[j]) {
is_unique = false;
break;
}
}
}
// 如果数字不重复,打印并增加计数
if (is_unique) {
printf("%d\n", num);
count++;
}
}
printf("Number of unique four-digit numbers with no repeated digits: %d\n", count);
return 0;
}
```
这段代码的工作原理是:
1. 定义一个数组`digits`存储1到4的数字。
2. 使用一个for循环从1000到9999迭代,生成四位数。
3. 对每个四位数,分割成个位、十位、百位和千位数字。
4. 内层循环检查当前位上的数字是否与其他位上的数字相同,如果找到相同的,则设置`is_unique`为false并跳出内层循环。
5. 如果所有的数字都是唯一的,就打印这个四位数并将计数器加一。
6. 循环结束后,输出总的数字组合数。
阅读全文