@CSDN-Ada助手 能帮我检查一下哪错了吗
19行删了 17行放下来
【以下回答由 GPT 生成】
代码中有几个错误地方:
#include<stdioh>
应该是 #include<stdio.h>
,缺少了括号"h"。#include<stdlib.h
应该是 #include<stdlib.h>
,缺少了右括号">"。typedef struct
语句后面,定义了一个字符变量char grades
,应该是char grade
,因为它是单一字符,而不是字符串。另外,在char grades
后面也缺少了一个分号";"。addstudent
的参数grades
是一个字符,但是在使用scanf
读取输入时,却使用了%s
,这是用于读取字符串的格式符,而应该使用%c
来读取单一字符。例如:scanf("%c", &addstudent.grades);
。addstudent
的参数grades
是一个字符,但是在判断等级时,使用了双引号 " " 将等级的字母括起来,这使得等级被视为字符串而不是字符。应该使用单引号 ' ' 来括起等级字母。例如:addstudent.grades = 'A';
。以下是修改后的代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define SIZE 86
typedef struct {
int no;
char sno[20];
char sname[50];
float usual;
float expr;
float exams;
float total;
char grade;
} Student;
int main() {
Student addstudent;
printf("请输入学生编号:");
scanf("%d", &addstudent.no);
printf("请输入学生学号:");
scanf("%s", addstudent.sno);
printf("请输入学生姓名:");
scanf("%s", addstudent.sname);
printf("请输入学生平时成绩:");
scanf("%f", &addstudent.usual);
printf("请输入学生实验成绩:");
scanf("%f", &addstudent.expr);
printf("请输入学生期末考试成绩:");
scanf("%f", &addstudent.exams);
addstudent.total = 0.2 * addstudent.usual + 0.2 * addstudent.expr + 0.6 * addstudent.exams;
if(addstudent.total >= 90) {
addstudent.grade = 'A';
} else if (addstudent.total >= 80) {
addstudent.grade = 'B';
} else if (addstudent.total >= 70) {
addstudent.grade = 'C';
} else if (addstudent.total >= 60) {
addstudent.grade = 'D';
} else {
addstudent.grade = 'E';
}
return 0;
}
希望以上修改能解决你的问题。
【相关推荐】