c语言 输入一个学生成绩,判断优、良、及格?

Python017

c语言 输入一个学生成绩,判断优、良、及格?,第1张

#include<stdio.h>

int main()

{

int nscore = 0

scanf("%d",&nscore)

if ( nscore >90 )

{

printf("成绩优!\n")

}

else if ( nscore >80 )

{

printf("成绩良!\n")

}

else if ( nscore >60 )

{

printf("成绩及格!\n")

}

else

{

printf("成绩不及格!\n")

}

return 0

}

第一种在scanf后面应该加一个getchar

你为什么在第二个后面知道加第一个后面不知道加...

因为你在做scanf输入时实际上输入的是 88(成绩) 回车 来结束输入的

这个时候你把88赋值给了a但是 回车还在缓冲区里 如果你不用getchar来吸收回车那么

你第二次scanf时 由于缓冲区里面还有一个回车 所以不等你输入他就将回车赋值给了c

因此无法进行后续循环 你输入的Y/N反而是被getchar读取了

第二种问题和上面类似 在每一个scanf后面加一个getchar来吸收回车

或者使用fflush(stdin)rewind(stdin)来刷新缓冲区

然后你最后判断处出错了

if(b=='Y')

if(b=='N')break

这里满足break的条件是先让b=Y 如果 b = Y判断成功 在判断b=N 当b=Y满足进一步要满足b=N这怎么可能能够break...

应该if(b=='Y') continue

else if(b=='N')break

另外我觉得这个判断有点繁琐了 你只需要判断一种就行了

只保留if(b=='N')break就行了 当输入N时结束 其他任意输入继续 就够了