当我在循环里scanf输入数据时,如何用回车结束这个循环?
(不用scanf也可以)
代码如下
#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;
}