海底两万里哪个译本好:很简单的程序~C达人帮忙看下 实在不理解啊 。。

来源:百度文库 编辑:高考问答 时间:2024/05/06 07:31:32
1.
#include<stdio.h>
main()
{int m=0,n=0,p=0,q=0;
char c;
printf("input:");
c=getchar();
while(c!='\n')
{if(c>=65&&c<=90||c>=97&&c<=122)
m++;
else if(c>=48&&c<=57)
n++;
else if(c==43)
p++;
else q++;}
printf("%d %d %d %d",m,n,p,q);
}
2.
#include<stdio.h>
main()
{int m=0,n=0,p=0,q=0;
char c;
printf("input:");
while((c=getchar())!='\n')
{if(c>=65&&c<=90||c>=97&&c<=122)
m++;
else if(c>=48&&c<=57)
n++;
else if(c==43)
p++;
else q++;}
printf("%d %d %d %d",m,n,p,q);
}
两者的变化本质不是一样吗?
为什么2运行正常
1就行呢?
谢谢!~

getchar()问题,似乎这个函数在缓冲上有bug,1中你最后按的是回车,它读入的是回车,而2则不一样