以下代码计算任何给定数量学生的三次考试的平均值
我的问题是我不断收到运行时错误。在用户输入标记号(-1)后,我无法弄清楚如何使“任何学生”部分停止。
我想知道我做错了什么或我错过了什么?
我的代码
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main () {
/* variable definition: */
char StudentName[100];
char done= -1;
float ExamValue, Sum, Avg;
int students,exams;
int max = INT_MAX;
// Loop through any Students
for (students=0; students < max && StudentName != done; students++)
{
// reset Sum to 0
Sum =0.0;
printf("Enter Student Name and then -1 after the last student \n");
scanf("%s", StudentName);
if (StudentName == done)
exit(EXIT_SUCCESS);
// Nested Loop for Exams
for (exams=0; exams < 3; exams++)
{
printf ("Enter exam grade: \n");
scanf("%f", &ExamValue);
Sum += ExamValue;
}
Avg = Sum/3.0;
printf( "Average for %s is %f\n",StudentName,Avg);
}
return 0;
}
答案 0 :(得分:0)
问题在于: if(StudentName == done) 您正在测试的谓词是将char与地址进行比较,这不会产生预期的结果。 done是一个char,StudentName是一个char数组,这两个对象是不同的,因为StudentName [0]是一个char,但StudentName代表StudentName [0]的地址。
所以我建议你试试
if(atoi(StudentName) == -1)
它应该有预期的行为,这样你就不再需要done
变量了。