一个小程序调试不出来,不知道哪错了,好心人帮帮忙呗

limit_tian 发布于 2016/02/28 18:16
阅读 398
收藏 0

下面那个程序输入数之后的输出结果完全是乱的,没有规律可言,就算是同一个数输进去也会有不同的结果,实在是搞不懂

#include<stdio.h>


int main()
{
int sco;
printf("\n请输入成绩:");
getchar();
while( !(scanf("%d",&sco)) || (sco<0||sco>100) )
  printf("输入错误,请重新输入!");

if(sco>=90)
printf("A");
else if(sco>=80&&sco<=89)
printf("B");
else if(sco>=70&&sco<=79)
printf("C");
else if(sco>=60&&sco<=69)
printf("D");
else
printf("F");

return 0;
}


加载中
0
木兰宿莽
木兰宿莽

getchar()是指从输入流中取出一个字符,scanf()函数是读入,你先写了个getchar();意味着当你输入55的时候,第一个5被getchar()取走了,所以scanf()读入的是5。另外while()这样写逻辑上是没有错的,但是最好分开写。

楼主可能对流的概念还不太理解,输入输出流及文件流都是以字符流的形式被使用的,也就是输入555时,在流看来其实是'5','5','5'或者二进制00110101,00110101,00110101的形式被读入,只是处理的时候被整体看作是整数555了。

0
如比如比
如比如比

把while条件分开写

如比如比
如比如比
回复 @紫电清霜 : 不敢当啊
紫电清霜
紫电清霜
茶壶兄多才多艺~
0
limit_tian
limit_tian

已经解决了,问题出在getchar(); getchar()使得输入的数都变少了一位,导致了一系列的问题。

返回顶部
顶部