统计person所指结构体数组中所有性别(sex)为M的记录的个数
时间: 2024-06-10 08:07:09 浏览: 97
好的,这是一个编程问题,可以通过循环遍历结构体数组并统计符合条件的记录来实现。以下是一个可能的实现方式:
int countMalePersons(Person persons[], int count) {
int maleCount = 0;
for (int i = 0; i < count; i++) {
if (persons[i].sex == 'M') {
maleCount++;
}
}
return maleCount;
}
其中,Person 是指表示个人信息的结构体,sex 是其中的一个属性,表示性别。函数接受一个指向 Person 结构体数组的指针和数组长度 count,返回该数组中性别为 M 的记录的个数。
相关问题
用c语言统计person所指结构体数组中所有性别(sex)为M的记录的个数
你好!感谢您使用ChitGPT进行交流。根据您提供的要求,以下是您想要的C语言代码:
```c
#include <stdio.h>
struct person {
char name[50];
char sex;
int age;
};
int main() {
struct person people[5] = {{"John", 'M', 25}, {"Lisa", 'F', 30}, {"Mike", 'M', 19}, {"Emily", 'F', 21}, {"David", 'M', 35}};
int count = 0;
for(int i = 0; i < 5; i++) {
if(people[i].sex == 'M') {
count++;
}
}
printf("性别为M的记录个数为%d", count);
return 0;
}
```
如果您还有其他问题,请继续提出。谢谢!
16、定义一个结构体数组,输入结构体数组元素,并编写函数对结构体数组中删除记录;
在C语言中,我们可以定义一个结构体数组并为其提供输入。首先,我们需要定义一个结构体类型,假设我们的结构体叫`Person`,包含姓名`name`和年龄`age`。然后,我们定义一个`Person`类型的数组,并创建一个函数来删除指定位置的记录。
```c
#include <stdio.h>
#include <string.h>
// 定义结构体
struct Person {
char name[50];
int age;
};
// 函数声明,用于删除结构体数组中的记录
void deleteRecord(struct Person arr[], int index, int size);
int main() {
// 定义结构体数组并输入数据
struct Person people; // 假设最多5个记录
int i;
printf("请输入%zd个人的信息:\n", sizeof(people) / sizeof(people));
for (i = 0; i < sizeof(people) / sizeof(people); i++) {
printf("请输入第%d个人的姓名: ", i + 1);
fgets(people[i].name, sizeof(people[i].name), stdin); // 使用fgets防止换行符
people[i].name[strcspn(people[i].name, "\n")] = '\0'; // 去除多余的换行符
printf("请输入第%d个人的年龄: ", i + 1);
scanf("%d", &people[i].age);
}
// 删除记录
int recordToDelete;
printf("请输入要删除的记录索引(0-%d): ", sizeof(people) / sizeof(people) - 1);
scanf("%d", &recordToDelete);
// 在主函数中检查索引是否合法
if (recordToDelete >= 0 && recordToDelete < sizeof(people) / sizeof(people)) {
deleteRecord(people, recordToDelete, sizeof(people) / sizeof(people));
} else {
printf("无效索引。\n");
}
// 输出修改后的数组
for (i = 0; i < sizeof(people) / sizeof(people); i++) {
printf("记录 %d: 姓名: %s, 年龄: %d\n", i, people[i].name, people[i].age);
}
return 0;
}
// 删除记录的函数实现
void deleteRecord(struct Person arr[], int index, int size) {
memmove(&arr[index], &arr[index + 1], (size - 1] = (struct Person){0}; // 或者设置最后一个元素为默认清理值
}
```
阅读全文