#include <stdio.h> #include <string.h> struct student{ char name[20]; char sex; float score; }; int main(){ int n,i; printf("输入学生人数:"); scanf("%d",&n); struct student stu[n]; for(i=0;i<n;i++){ printf("/n输入第%d个学生姓名:",i+1); scanf("%s",&stu[i].name); printf("输入第%d个学生性别:",i+1); scanf("%c",&stu[i].sex); printf("输入第%d个学生C语言成绩:",i+1); scanf("%f",&stu[i].score); } return 0; } float avg_score(struct student *p,int n) { float sum = 0,avg; for (int i = 0; i < n; i++) { sum += p[i].score; } avg = sum/n; return avg; } printf("平均分:%.2f\n",avg_score(stu,n)); void find_score(struct student stu[],int num,char name[]) { int i; for (i = 0; i < num; i++) { if (strcmp(name,stu[i].name) == 0) { printf("%s的C语言成绩是:%.2f\n",name,stu[i].score); break; } } if(i==num){ printf("找不到该学生\n"); } } char name[20]; printf("输入查询学生姓名:"); scanf("%s",name); find_score(stu,n,name);
时间: 2023-06-17 14:08:50 浏览: 169
这段代码中存在几个问题:
1. 结构体数组的大小不能使用变量n来定义,可以使用动态内存分配来解决。
2. 在输入学生性别时,应该在%c前加空格,即scanf(" %c",&stu[i].sex)。
3. 在调用avg_score函数前应该先声明该函数。
4. 在调用find_score函数前应该先声明该函数。
5. 在输入学生姓名时,应该使用%s,而不是&stu[i].name。
下面是修改后的代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct student{
char name[20];
char sex;
float score;
};
float avg_score(struct student *p,int n);
void find_score(struct student stu[],int num,char name[]);
int main(){
int n,i;
printf("输入学生人数:");
scanf("%d",&n);
struct student *stu = (struct student*)malloc(n*sizeof(struct student));
for(i=0;i<n;i++){
printf("\n输入第%d个学生姓名:",i+1);
scanf("%s",stu[i].name);
printf("输入第%d个学生性别:",i+1);
scanf(" %c",&stu[i].sex);
printf("输入第%d个学生C语言成绩:",i+1);
scanf("%f",&stu[i].score);
}
printf("平均分:%.2f\n",avg_score(stu,n));
char name[20];
printf("输入查询学生姓名:");
scanf("%s",name);
find_score(stu,n,name);
free(stu);
return 0;
}
float avg_score(struct student *p,int n) {
float sum = 0,avg;
for (int i = 0; i < n; i++) {
sum += p[i].score;
}
avg = sum/n;
return avg;
}
void find_score(struct student stu[],int num,char name[]) {
int i;
for (i = 0; i < num; i++) {
if (strcmp(name,stu[i].name) == 0) {
printf("%s的C语言成绩是:%.2f\n",name,stu[i].score);
break;
}
}
if(i==num){
printf("找不到该学生\n");
}
}
阅读全文