【发布时间】:2015-09-20 10:18:05
【问题描述】:
我编写了这段代码来获取学生的字母成绩并计算他们的 GPA。 运行程序时,我可以正确获取学生的姓名和科目,但无法显示成绩或 GPA。
示例输入:
Sally
1
A
N
样本输出:
Enter Student Name: Sally
How many subjects: 1
Grades for subject 1: A
Student Name: Sally
Grade: 4.00
Do you want to enter another student? N
这是我试过的代码sn-p。
#include <stdio.h>
int main()
{
char studentName[20];
char grade[10];
int k1;
int totalSub1,totalGrade;
float gpa1;
char ch1;
do
{
//Student Name
scanf("%s",studentName);
printf("Enter Student Name: %s\n", studentName);
//Number of subjects
scanf("%d",&totalSub1);
printf("How many subjects: %d\n",totalSub1);
//Get Grades
for(k1=0;k1<totalSub1;k1++)
{
printf("Grades:\n%c",grade[k1]);
scanf("%c",&grade[k1]);
}
//Find the gade points
for(k1=0;k1<totalSub1;k1++)
{
totalGrade=0;
switch(grade[k1])
{
case 'A':
totalGrade+=4;
break;
case 'B':
totalGrade+=3;
break;
case 'C':
totalGrade+=2;
break;
case 'D':
totalGrade+=1;
break;
case 'F':
totalGrade+=0;
break;
}
}
//Calculate GPA
gpa1=totalGrade/totalSub1;
//Print Student name with GPA
printf("Student Name: %s\n",studentName);
printf("Grade: %.2f\n",gpa1);
printf("Do you want to enter another student?\n");
scanf("%c",&ch1);
}while(ch1=='Y'||ch1=='y');
getchar();
return 0;
}
【问题讨论】:
-
调试器说什么?它哪里出错了? “我无法获得成绩”不是具体的问题陈述。始终检查可能遇到错误的函数的结果。
scanf就是其中之一! -
scanf有时非常不直观。例如%s只扫描一个单词,因此像“Norman Bates”这样的学生姓名将被读取为“norman”,然后下一次扫描尝试从待处理的输入“Bates”中读取一个整数。此外,虽然大多数格式会跳过前导空格,但%c不会,因此您的成绩最终可能会变成换行符和空格。 -
请将您的问题标题edit 命名为有意义的内容,描述您遇到的问题或您提出的具体问题。从您使用的 c 标记可以看出它是 C 代码的事实,而 我在做什么错? 毫无意义。您的标题应该对在搜索结果中找到它的本网站的未来读者有用。一个清晰的描述性标题通常也会更快地为您提供帮助。谢谢。
标签: c