定义函数处理存储学生成绩信息的结构体数组,按姓名查找,找到返回成绩,没找到返回-1
时间: 2023-05-31 07:17:49 浏览: 280
### 回答1:
可以定义一个函数,接收一个存储学生成绩信息的结构体数组和一个要查找的姓名作为参数,函数内部遍历数组,查找姓名匹配的结构体,如果找到则返回该结构体中的成绩,如果没找到则返回-1。
函数定义如下:
```c
int find_score_by_name(struct student scores[], int n, char *name) {
int i;
for (i = 0; i < n; i++) {
if (strcmp(scores[i].name, name) == 0) {
return scores[i].score;
}
}
return -1;
}
```
其中,`scores`是存储学生成绩信息的结构体数组,`n`是数组的长度,`name`是要查找的姓名。函数内部使用`strcmp`函数比较字符串是否相等,如果相等则返回该结构体中的成绩,否则继续遍历数组。如果遍历完整个数组都没有找到,则返回-1。
### 回答2:
题目要求定义函数处理存储学生成绩信息的结构体数组,按姓名查找,找到返回成绩,没找到返回-1。那么我们需要先定义一个结构体,包含学生姓名和成绩。假设结构体名称为Student,代码实现如下:
```
struct Student {
char name[20];
int score;
};
```
接下来,我们可以定义一个函数来处理结构体数组。假设函数名称为findScore,输入参数为结构体数组和需要查找的姓名,返回值为对应姓名的成绩。如果没找到,返回-1。代码实现如下:
```
int findScore(struct Student students[], char name[]) {
for (int i = 0; i < sizeof(students) / sizeof(struct Student); i++) {
if (!strcmp(students[i].name, name)) {
return students[i].score;
}
}
return -1;
}
```
在函数中,我们可以使用for循环遍历结构体数组,使用strcmp函数比较每个学生的姓名是否和目标姓名匹配。如果匹配,返回对应的成绩。如果没有找到,返回-1。
最后,我们可以在主函数中调用findScore函数,传入结构体数组和需要查找的姓名,然后打印对应的成绩。比如:
```
int main() {
struct Student students[] = {
{"小明", 90},
{"小红", 85},
{"小李", 95},
{"小刚", 80},
};
int score = findScore(students, "小红");
if (score != -1) {
printf("小红的成绩是:%d\n", score);
} else {
printf("没有找到小红的成绩\n");
}
return 0;
}
```
在上面的代码中,我们定义了一个包含4个学生的结构体数组,然后调用findScore函数查找小红的成绩,并打印结果。如果找到了,打印对应的成绩。如果没有找到,打印未找到的提示。
### 回答3:
本题要求定义一个函数来处理存储学生成绩信息的结构体数组,通过按姓名查找,实现返回对应的成绩的功能。如果未找到对应的姓名,则返回-1。下面将详细解答此问题。
首先,我们需要定义一个结构体来存储学生的姓名和成绩信息,代码如下:
```
struct student{
char name[20];
int score;
};
```
然后,我们定义函数实现查找的功能,代码如下:
```
int find_score(struct student stu[], char name[])
{
int i;
for(i=0; i<n; i++) //n为结构体数组的长度
{
if(strcmp(stu[i].name, name) == 0)
return stu[i].score; //找到对应姓名,返回成绩
}
return -1; //未找到对应姓名,返回-1
}
```
以上代码中,我们在结构体数组中进行遍历,判断每个元素的name属性是否和要查找的name一致,若一致则返回对应的score属性,否则返回-1。
需要注意的是,在调用该函数之前,需要先定义一个struct student类型的数组,同时也需要知道数组的长度n,即结构体数组中元素的个数。同时,要确保输入的name有不为空。
综上所述,通过以上代码实现按姓名查找对应成绩的功能,可以方便地对存储学生成绩信息的结构体数组进行管理和处理。
阅读全文