用c语言来写代码,假设每个人生日日期随机,给定76人。用长度为D=365的数组来表示一年的每一天。然后使用随机数来生成76个人的生日。最终在数组上统计有多少个人同一天过生日和同一天过生日的占总人数的比例
时间: 2024-09-18 13:16:54 浏览: 46
在C语言中,你可以通过以下几个步骤来实现这个功能:
1. 定义数组 `days_birth`,大小为D=365,用于存储每个日期的生日人数。
2. 创建一个结构体 `Person` 来存储每个人的姓名和生日,例如:
```c
typedef struct {
char name[50];
int birth_day; // 使用0-364表示一年中的第几天
} Person;
```
3. 生成随机生日函数,这里可以使用C标准库里的 `srand` 和 `rand` 函数:
```c
#include <time.h>
void generate_random_birthday(Person* people, int num_people) {
srand(time(0)); // 设置随机种子
for (int i = 0; i < num_people; i++) {
people[i].birth_day = rand() % 365; // 随机选择0到364之间的整数
}
}
```
4. 统计同一天生日的人数,并计算比例:
```c
void count_same_day_birthdays(Person* people, int num_people, int days_birth[D]) {
int max_count = 0;
int total_sameday = 0;
for (int day = 0; day < 365; day++) {
int count = 0;
for (int i = 0; i < num_people; i++) {
if (people[i].birth_day == day) {
count++;
days_birth[day]++;
}
}
if (count > max_count) {
max_count = count;
}
total_sameday += (count >= 2); // 如果有两个人以上同天,累加1
}
double proportion = (double)total_sameday / num_people * 100; // 计算比例
printf("最多有%d人在同一天过生日,占比%.2f%%\n", max_count, proportion);
}
```
5. 主函数中初始化 `Person` 数组并调用上述函数:
```c
int main() {
Person people[76];
generate_random_birthday(people, 76);
int days_birth[365] = {0};
count_same_day_birthdays(people, 76, days_birth);
return 0;
}
```
运行这段代码,它会生成76个人的随机生日,并统计每天出生的人数以及同一天过生日的人数所占比例。
阅读全文