c语言结构题来写有n个学生信息(包括学号,姓名,成绩),按学号升序存储在一个结构体数组中,分别用两个函数完成完成按“学号”、“姓名”两个属性进行查找,找出其在数组中是第几个元素。如果不在数组中,则输出“查无此人”。
时间: 2024-05-14 21:12:49 浏览: 62
```c
#include <stdio.h>
#include <string.h>
struct student{
int id;
char name[20];
int score;
};
int find_by_id(struct student arr[], int len, int target_id){
for(int i=0; i<len; i++){
if(arr[i].id == target_id){
return i;
}
}
return -1;
}
int find_by_name(struct student arr[], int len, char target_name[]){
for(int i=0; i<len; i++){
if(strcmp(arr[i].name, target_name) == 0){
return i;
}
}
return -1;
}
int main(){
struct student arr[100];
int n;
printf("请输入学生人数:");
scanf("%d", &n);
printf("请按照学号升序输入%d个学生的信息:\n", n);
for(int i=0; i<n; i++){
printf("请输入第%d个学生的学号、姓名、成绩:", i+1);
scanf("%d %s %d", &arr[i].id, arr[i].name, &arr[i].score);
}
int choice = 0;
printf("请选择查找方式:1.按学号查找 2.按姓名查找\n");
scanf("%d", &choice);
if(choice == 1){
int target_id;
printf("请输入要查找的学生学号:");
scanf("%d", &target_id);
int idx = find_by_id(arr, n, target_id);
if(idx != -1){
printf("该学生在数组中的下标为:%d\n", idx);
}
else{
printf("查无此人\n");
}
}
else if(choice == 2){
char target_name[20];
printf("请输入要查找的学生姓名:");
scanf("%s", target_name);
int idx = find_by_name(arr, n, target_name);
if(idx != -1){
printf("该学生在数组中的下标为:%d\n", idx);
}
else{
printf("查无此人\n");
}
}
else{
printf("输入有误\n");
}
return 0;
}
```
阅读全文