c语言随机生成20个100以内的数,奇偶数成对打印,最后没有配对的数全部输出。
时间: 2024-05-16 20:16:37 浏览: 12
下面是一个使用C语言生成20个100以内的随机数,并将奇偶数成对打印,最后输出未配对的数的完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int nums[20];
int odds[10], evens[10];
int odd_count = 0, even_count = 0;
int i, j;
// 生成随机数
srand(time(NULL));
for (i = 0; i < 20; i++) {
nums[i] = rand() % 100;
printf("%d ", nums[i]);
}
printf("\n");
// 分别将奇偶数存入不同的数组
for (i = 0; i < 20; i++) {
if (nums[i] % 2 == 0) {
evens[even_count++] = nums[i];
} else {
odds[odd_count++] = nums[i];
}
}
// 打印成对的奇偶数
for (i = 0; i < odd_count; i++) {
for (j = 0; j < even_count; j++) {
if (odds[i] + evens[j] == 100) {
printf("%d + %d = 100\n", odds[i], evens[j]);
evens[j] = -1; // 将已匹配的偶数标记为-1
break;
}
}
}
// 输出未配对的数
printf("Unmatched numbers:\n");
for (i = 0; i < odd_count; i++) {
if (odds[i] % 2 == 1) {
printf("%d ", odds[i]);
}
}
for (i = 0; i < even_count; i++) {
if (evens[i] % 2 == 0 && evens[i] != -1) {
printf("%d ", evens[i]);
}
}
printf("\n");
return 0;
}
```
这个程序首先使用 `srand` 和 `rand` 函数生成20个100以内的随机数,并依次打印出来。接着,它将这20个数分别存入两个数组 `odds` 和 `evens` 中,其中 `odds` 存放所有奇数,`evens` 存放所有偶数。在存入数组时,还计算了奇偶数的个数 `odd_count` 和 `even_count`。
然后,程序使用两个循环嵌套,依次遍历奇数数组和偶数数组,找到和为100的一对数就打印出来,并将已匹配的偶数标记为-1,避免重复匹配。
最后,程序输出未配对的数。由于我们在存入偶数数组 `evens` 时可能会将已匹配的数标记为-1,所以在输出时需要跳过值为-1的元素。同时,还要注意只输出奇数和未匹配的偶数。