黑马程序员技术交流社区
标题:
为什么输出没有结果?
[打印本页]
作者:
嗨灬小凯
时间:
2015-4-30 15:30
标题:
为什么输出没有结果?
#include <stdio.h>
int main()
{
int l,s,d,o;
l=s=d=o=0;
char c;
c=getchar();
while(c!='\n')
{
if((c>'A'&&c<'Z')||(c>'a'&&c<'z'))
{
l++;
}
else if(c==' ')
{
s++;
}
else if(c>'1'&&c<'9')
{
d++;
}
else
{
o++;
}
}
printf("l=%4d s=%4d d=%4d o=%4d",l,s,d,o); // 为什么这里输出没有结果呢?
return 0;
}
作者:
流风124
时间:
2015-4-30 16:02
c=getchar();这一句的位置不对,现在的位置只能接受一个字符,如果输入字符串的话,会一直让你输入,不会运行到下面的程序,所以这一句应该放到循环里
还有,理解了一下你的程序的意思,感觉你里面有的判断条件不太对,少了=
下面是我稍微改了一下的,你可以看看
#include <stdio.h>
int main()
{
int l,s,d,o;
l=s=d=o=0;
char c='\0';
while((c = getchar()) != '\n')
{
if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
{
l++;
}
else if(c==' ')
{
s++;
}
else if(c>='1'&&c<='9')
{
d++;
}
else
{
o++;
}
}
printf("l=%4d\ns=%4d\nd=%4d\no=%4d\n",l,s,d,o); // 为什么这里输出没有结果呢?
return 0;
}
复制代码
作者:
mony
时间:
2015-4-30 23:49
你的程序现在的解释就是,开始时等待用户输入一个字符,然后用户输入完以后,如果不是回车,就一直执行while循环的循环体,根本出不来,既然循环都出不来,怎么会有输出结果...
作者:
wangzhewjl
时间:
2015-5-1 10:38
:)条件哪里判断应该是‘\0’,用户输入的字符串结尾时'\0',不是‘\n'
作者:
shenxian88
时间:
2015-5-1 11:51
这个程序是一个死循环,你的c就只能接受一个字符,进入循环以后,就不能跳出来,因为没有满足跳出循环的条件,只要把 c=getchar();放到循环里面就可以了
作者:
陈凡1993
时间:
2015-5-5 00:32
c=getchar();改成c=gets();当然了,变量C的类型也得改,改成字符数组,循环时遍历数组就可以了
作者:
HHE_johnson
时间:
2015-5-5 00:42
赞同一楼的说法,其实这道题的目的是计算输入字母和数字以及其它的个数,getchar()只能接收一个输入字符而已,需要放进循环里面。至于后面的输入的是回车还是反斜杠0都OK
作者:
wodeheimalife
时间:
2015-5-5 14:10
。。。。。。。。。。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2