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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#include <stdio.h>

/*统计各个数字,空白符及其他字符出现的次数*/
main()
{
        int c,i,nwhite,nother;
        int ndigit[10];

        nwhite=nother=0;

        for(i=0;i<10;++i)
            ndigit[i]=0;

        while((c=getchar())!=EOF)
                if(c>='0'&&c<='9')
                        ++ndigit[c-'0'];
                else if(c==' '|| c=='\n' || c=='\t')
                        ++nwhite;
                else
                        ++nother;

                printf("digits=");
               
                for(i=0;i<10;++i)
                        printf(" %d",ndigit[i]);
                printf(",white space=%d,other=%d\n",nwhite,nother);


}

我在看c程序语言第二版,在winddows下用vs执行的,while循环一直不执行,不明白为什么。

4 个回复

倒序浏览
EOF是文件里的,你又没操作文件用EOF判断做什么,把EOF换成'\0'
回复 使用道具 举报
408205555 发表于 2015-8-19 15:10
EOF是文件里的,你又没操作文件用EOF判断做什么,把EOF换成'\0'

我是照着c程序语言第二部 这本书上的代码练习的,现在已经找到原因了,windows下一行结尾按ctrl+z ,然后按enter 代表换行  
回复 使用道具 举报
#include <stdio.h>
#include <string.h>
/*统计各个数字,空白符及其他字符出现的次数*/
void main(int argc,const char *argv[])
{
        int i = 0,count = 0, word = 0, chars = 0;         
        char ndigit[100]={0};//因为你输入的有数字,字母和\0   \t ,最好以字符的形式存储,数字以它的ASCII码进行存储。

      /*  nwhite=nother=0;

        for(i=0;i<10;++i)
            ndigit[i]=0;                         这里是初始化,不用这么麻烦,你可以把我上面的初始化的数组答应出来看一下*/
         //想对输入的信息进行处理必须先接收信息
                printf("请输入一句话,由字母数字空格 table组成\n");
                fgets(ndigit,sizeof(ndigit),stdin);
                //然后对输入的信息进行判断
        for(i=0;ndigit[i]!='\n';i++)   
                        //EOF是对文件的操作,现在没有关于打开写入文件,所以不用,改成\N就行而且此处用while没有for循环好
                {
                        if((ndigit[i]>='0')&&(ndigit[i]<='9')){
                                count++;
                        }else if((ndigit[i]==' ')||(ndigit[i]=='\t')){
                                chars++;
                        }else if((ndigit[i]>='a'&&ndigit[i]<='z')||(ndigit[i]>='A'&&ndigit[i]<='Z')){
                                word++;
                        }
                }
                printf("数字的个数为:%d,字符的个数:%d,字母的个数;%d",count,chars,word);//
}
我只能帮你完善到'\t'' \0' 至于'\n'由于输入的时候会一回车作为结束。所以这个不好弄。
回复 使用道具 举报
庞佳星 发表于 2015-8-20 10:27
#include
#include
/*统计各个数字,空白符及其他字符出现的次数*/

3q   谢谢你的回答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马