C语言 编写一个联合/共同体,这个联合里的成员有一个包含5各元素的整数型数组a[5], 一个整型变量b,以及一个字符ch。首先创建一个包含10个这样联合的数组。 联合数组中的整数型数组a的每个元素都是一个1-6的随机数。 编写一个函数,这个函数的输入参数是一个联合指针,通过这个函数,判断每个联合数组中的整数型数组a里有多少个3,并返回这个数值,在返回前,如果这个联合数组中的整数型数组a中的3的个数大于等于1.那么设整型变量b为这个整数型数组a的和,如果数组中3的个数为0,则设字符ch='n'。 在main函数中调用函数,得到返回值,根据返回值的信息,打印该联合的内容。
时间: 2024-02-16 08:02:04 浏览: 61
高级语言程序设计(C语言)-8.结构体与共用体
下面是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef union {
int a[5];
int b;
char ch;
} Union;
int count_3(Union* u) {
int cnt = 0;
int sum = 0;
for (int i = 0; i < 5; i++) {
if (u->a[i] == 3) {
cnt++;
sum += u->a[i];
}
}
if (cnt >= 1) {
u->b = sum;
} else {
u->ch = 'n';
}
return cnt;
}
int main() {
srand(time(NULL));
Union arr[10];
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 5; j++) {
arr[i].a[j] = rand() % 6 + 1;
}
}
for (int i = 0; i < 10; i++) {
int cnt = count_3(&arr[i]);
printf("Union %d:\n", i);
printf(" a: %d %d %d %d %d\n", arr[i].a[0], arr[i].a[1], arr[i].a[2], arr[i].a[3], arr[i].a[4]);
if (cnt >= 1) {
printf(" b: %d\n", arr[i].b);
} else {
printf(" ch: %c\n", arr[i].ch);
}
}
return 0;
}
```
首先定义了一个联合类型Union,包含一个整型数组a、一个整型变量b和一个字符变量ch。
然后在main函数中,创建了一个包含10个Union类型的数组,并利用rand函数随机生成每个Union中的整数型数组a的元素值。
接着调用了count_3函数,这个函数的输入参数是一个Union指针,表示要统计其中整数型数组a中值为3的元素个数,并根据个数的不同,设置联合中的变量b或ch的值。最后返回值为整型,表示整数型数组a中值为3的元素个数。
最后在main函数中,遍历了整个Union数组,打印出每个Union的内容,包括整数型数组a的元素值和联合中的变量b或ch的值,根据count_3函数的返回值来决定打印哪一个变量。
阅读全文