为什么会这样?我输入1时直接运行然后报错……好像第二个scanf一点用没有
在第一个 scanf_s下面 加一个 getchar();吃掉缓冲区的 换行符’\n’,换行符 也算一个字符的,所以下面不是没输入,而是输入了换行符到 grade 里面
scanf_s()函数需要一个返回值,你输入时需要给他一个返回值。在第一行添加,#define _CRT_SECURE_NO_WARNINGS 1直接用scanf函数就可以了,其他的c语言函数也直接就可以用了。不用加_s了
修改如下,供参考:
#include <stdio.h>
int main()
{
int a;
printf("请输入1或2(等级转分数为1,分数转等级为2)\n");
scanf_s("%d", &a);
char grade;
if (a == 1) {
printf("请输入等级:\n");
scanf_s(" %c", &grade, sizeof(grade)); //修改
switch (grade)
{
case 'A':
printf("对应分数为90-100");
break;
case 'B':
printf("对应分数为80-89");
break;
case 'C':
printf("对应分数为70-79");
break;
case 'D':
printf("对应分数为60-69");
break;
case 'E':
printf("对应分数为60分以下");
default:
printf("enter date error");
}
}
else
{
int a, b;
printf("请输入你的分数:\n");
scanf_s("%d", &a);
b = a / 10;
switch (b)
{
case 10:
case 9:printf("A\n");
break;
case 8:printf("B\n");
break;
case 7:printf("C\n");
break;
case 6:printf("D\n");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:printf("E\n");
break;
default:printf("enter date error");
}
}
}
scanf_s 改成scanf试试