黑马程序员技术交流社区

标题: 为什么输出没有结果? [打印本页]

作者: 嗨灬小凯    时间: 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();这一句的位置不对,现在的位置只能接受一个字符,如果输入字符串的话,会一直让你输入,不会运行到下面的程序,所以这一句应该放到循环里
还有,理解了一下你的程序的意思,感觉你里面有的判断条件不太对,少了=
下面是我稍微改了一下的,你可以看看

  1. #include <stdio.h>
  2. int main()
  3. {
  4.     int l,s,d,o;
  5.     l=s=d=o=0;
  6.     char c='\0';
  7.    
  8.     while((c = getchar()) != '\n')
  9.     {
  10.         
  11.         if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))
  12.         {
  13.             l++;
  14.         }
  15.         else if(c==' ')
  16.         {
  17.             s++;
  18.         }
  19.         else if(c>='1'&&c<='9')
  20.         {
  21.             d++;
  22.         }
  23.         else
  24.         {
  25.             o++;
  26.         }
  27.     }
  28.     printf("l=%4d\ns=%4d\nd=%4d\no=%4d\n",l,s,d,o); // 为什么这里输出没有结果呢?
  29.     return 0;
  30. }
复制代码

作者: 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