用户输入标记值后如何终止循环?

时间:2017-02-05 18:43:30

标签: c loops

以下代码计算任何给定数量学生的三次考试的平均值 我的问题是我不断收到运行时错误。在用户输入标记号(-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; 
}

1 个答案:

答案 0 :(得分:0)

问题在于:     if(StudentName == done) 您正在测试的谓词是将char与地址进行比较,这不会产生预期的结果。 done是一个char,StudentName是一个char数组,这两个对象是不同的,因为StudentName [0]是一个char,但StudentName代表StudentName [0]的地址。

所以我建议你试试

if(atoi(StudentName) == -1)

它应该有预期的行为,这样你就不再需要done变量了。