C语言随机产生一个四位数的正整数,分别输出这四个数字,并且算出这四个数字能组成多少 个互不相同且无重复数字的三位数?分别都是多少? 说明:如果产生的四位数中有相 同的数字需要再次产生
时间: 2024-10-05 19:03:01 浏览: 45
在C语言中,生成一个四位数的正整数并处理其各个数字可以采用循环和随机函数`rand()`配合`srand(time(NULL))`初始化随机种子。首先,我们将生成一个包含10个数字(0-9)的数组,然后从中选择四个不同的数字组合成四位数。之后,从这四个数字中选出三个构成三位数。
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL)); // 初始化随机数种子
int num[4]; // 用于存储四位数的四个数字
for (int i = 0; i < 4; i++) {
while (1) { // 如果有重复,继续直到找到四个不同的数字
num[i] = rand() % 10; // 随机生成0到9之间的数字
if (i == 0 || num[i] != num[i - 1]) break; // 首位不能为0,且当前数字不重复
}
}
printf("生成的四位数是: %d%d%d%d\n", num[0], num[1], num[2], num[3]);
// 组合三位数
int three_digit_count = 0;
for (int i = 0; i <= 3; i++) {
for (int j = i + 1; j <= 3; j++) {
for (int k = j + 1; k <= 3; k++) {
int temp[] = {num[i], num[j], num[k]};
sort(temp, temp + 3); // 对数字排序以得到唯一的三位数
if (temp[0] * 100 + temp[1] * 10 + temp[2] > 0 && temp[2] < 100) { // 检查是否有效三位数
printf("组成的三位数是: %d-%d-%d\n", temp[0], temp[1], temp[2]);
three_digit_count++;
}
}
}
}
printf("\n总共可以组成 %d 个互不相同且无重复数字的三位数。\n", three_digit_count);
return 0;
}
```
阅读全文