如何用回车结束这个循环?

当我在循环里scanf输入数据时,如何用回车结束这个循环?
(不用scanf也可以)

img


img

代码如下


#include 

int main()
{
    int ten,grade;
    while (1)
    {
        printf("输入你的分数: ");
        scanf("%d",&grade);
        if (grade<=100&&grade>=0)
            {
                ten=grade/10;
                switch (ten)
                {
                    case 0: case 1: case 2: case 3: case 4: case 5:
                        printf("等级为:E\n");    break;
                    case 6:
                        printf("等级为:D\n");    break;
                    case 7:
                        printf("等级为:C\n");    break;
                    case 8:
                        printf("等级为:B\n");    break;
                    case 9: case 10:
                        printf("等级为:A\n");break;
                }
            }
        else
            {
                printf("输错成绩了吧\n");
            }
    }
    return 0;
}

首先,你要明白,你提出的需求是:当用户按下回车按钮的时候,结束匹配,也即结束方法,也即结束while循环。
那么你如何结束while循环呢?你只能让按下回车键和while的判断条件保持不一致,
所以你这里的while条件需要修改。。

这么改,供参考:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int ten, grade, i;
    char input[8];
    while (1)
    {
        i = 0;
        printf("输入你的分数: ");
        while ((input[i] = getchar()) != '\n') i++;
        if (input[0] >= '0' && input[0] <= '9') {
            input[i] = '\0';
            //scanf("%d", &grade);
            grade = atoi(&input[0]);
            if (grade <= 100 && grade >= 0)
            {
                ten = grade / 10;
                switch (ten)
                {
                case 0: case 1: case 2: case 3: case 4: case 5:
                    printf("等级为:E\n");    break;
                case 6:
                    printf("等级为:D\n");    break;
                case 7:
                    printf("等级为:C\n");    break;
                case 8:
                    printf("等级为:B\n");    break;
                case 9: case 10:
                    printf("等级为:A\n");    break;
                }
            }
            else
                printf("输错成绩了吧\n");
        }
        else if (input[0] == '\n')
            break;
    }
    return 0;
}