A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 嗨灬小凯 中级黑马   /  2015-4-30 15:30  /  1326 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#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;
}

7 个回复

倒序浏览
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. }
复制代码
回复 使用道具 举报 1 0
你的程序现在的解释就是,开始时等待用户输入一个字符,然后用户输入完以后,如果不是回车,就一直执行while循环的循环体,根本出不来,既然循环都出不来,怎么会有输出结果...
回复 使用道具 举报
:)条件哪里判断应该是‘\0’,用户输入的字符串结尾时'\0',不是‘\n'
回复 使用道具 举报
这个程序是一个死循环,你的c就只能接受一个字符,进入循环以后,就不能跳出来,因为没有满足跳出循环的条件,只要把  c=getchar();放到循环里面就可以了
回复 使用道具 举报
c=getchar();改成c=gets();当然了,变量C的类型也得改,改成字符数组,循环时遍历数组就可以了
回复 使用道具 举报 1 0
赞同一楼的说法,其实这道题的目的是计算输入字母和数字以及其它的个数,getchar()只能接收一个输入字符而已,需要放进循环里面。至于后面的输入的是回车还是反斜杠0都OK
回复 使用道具 举报
。。。。。。。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马