C语言初学者,编写一个统计空格、制表符和换行符个数程序

#include<stdio.h>
main()
{
int c,nb,nt,nl;
nb=0;
nt=0;
nl=0;
while((c=getchar())!=EOF){
if(c==' ')
++nb;
if(c=='\t')
++nt;
if(c=='\n')
++nl;
}
printf("%d %d %d\n",nb,nt,nl);

无输出结果,这程序有错吗?
}

1、直接对每个字符进行判断,如果是其中一种,数目加一即可。

2、例程:

#include<stdio.h>
main()
{
    int c,hs,kgs,zfbs;
    hs = 0,kgs=0,zfbs=0; /* 初始化 */
    while((c = getchar()) != '#')
    {
        if(c == '\n')
            ++hs;
        if(c == ' ')
            ++kgs;
        if(c == '\t')
            ++zfbs;
    }
    printf("%d %d %d\n",hs,kgs,zfbs); /* zbfs改为zfbs */
}
/* nl,cl,bl 可能是代表行数,空格数,制表符数的英文缩写 */

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-10
while((c=getchar())!=EOF) //条件错了,getchar的正常返回值是ASCII值,出错才是-1
改成 :
while((c=getchar())!=‘0’) //以0为结束标志,反正你不是统计0的个数,这样就不会影响结果

追问

输出还是空白怎么办?

追答

你最后一个是不是输入0

#include<stdio.h>
main()
{
int c,nb,nt,nl;
nb=0;
nt=0;
nl=0;
while((c=getchar())!='0'){
   if(c==' ')
    ++nb;
   if(c=='\t')
    ++nt;
   if(c=='\n')
    ++nl;
}
printf("%d %d %d\n",nb,nt,nl);
}

追问

我该输入什么才能验证程序可运行?

追答

简单点,输入两个回车然后输入0再回车,输出0,0,2

本回答被提问者采纳
第2个回答  2020-06-11
在windows系统中,在一行的开头,Ctrl-z就等于EOF
第3个回答  2020-10-06
这些回答问题的人估计都没理解到楼主表达的意思,楼主给的是书上的标准答案把,代码是毫无问题的!!!但是运行 始终 不会统计结果, 其实是你操作错误,程序的文件结束符是ctrl键+字母键z。意思就是:最后想要结束的时候同时按下这两个键。就是在命令提示符中运行的时候,你要结束要按ctrl+z才能结束然后出统计结果,你跟平时按回车是不会出统计结果的!

C语言初学者,编写一个统计空格、制表符和换行符个数程序
1、直接对每个字符进行判断,如果是其中一种,数目加一即可。2、例程:include<stdio.h>main(){ int c,hs,kgs,zfbs; hs = 0,kgs=0,zfbs=0; \/* 初始化 *\/ while((c = getchar()) != '#') { if(c == '\\n') ++hs; if(c == ' ') ++kgs; if...

编写一个统计空格,制表符与换行符个数的程序.我编译的怎么会是这个结果...
while((c=getchar())!=EOF){ 这一行改成 while((a=getchar()!=eof){

c语言编写一个统计空格、制表符与换行符个数的程序
include <stdio.h> include <stdlib.h> int main(){ int a,b,c,d; \/*b代表空格,c代表制表符,d代表换行符*\/ b=0;c=0;d=0; \/*intilized*\/ while ((a = getchar()) != EOF){ if (a ==' ')\/\/这里是输入的a进行比较,不是bcd。不然就一直是0了 b++;if (a == '\\...

初学C语言,这个问题:编写一个统计空格,制表符与换行符个数的程序。
要理解字符与数字的关系。int c='0',此时c=48(因为0的ASCⅡ码是48)。

c语言初学者,统计空格、制表符和换行符个数程序问题
include <stdio.h>int main(void){int a=0,b=0,c=0;char ch;while((ch=getchar())!=EOF){if(ch==' ')a++;else if(ch=='\\t')b++;else if(ch=='\\n')c++;}printf("%d\\n%d\\n%d",a,b,c);return 0;}windows系统默认 ctrl+z 是终止符 ...

C语言统计空格,制表符,换行符个数的奇葩疑问!!
回车被当作普通字符读入了,没有被当作输入结束标志。可以设置一个不会被用到的特殊字符作为结束标志,比如‘#’。代码如下:include<stdio.h> int main(){ int c,nc,nl,nw;nw=nc=nl=0;while ((c = getchar()) != EOF && '#' != c){ if (c == '\\n')++nl;if (c == ' ')...

...编译一个程序,统计输入的空格符、制表符和回车符的个数。
程序里不少错误我就不说了,你编译的时候会有错误提示的。就你的if和while来说,if跟着的条件是先判定且只判定一次,while更着的条件是多次判定,直到判定为False

统计空格、制表符与换行符个数的程序
if (c == "\\n")改为 if (c == '\\n')

C语言编程:编写函数,统计字符串中字母、数字、空格和其他字符的个数...
ShuZi++;else if(((s>=97)&&(s<=122))||((s>=65)&&(s<=90)))ZiMu++;else QiTa++;} printf("空格:%d;数字:%d;字母:%d;其他:%d。\\n",KongGe,ShuZi,ZiMu,QiTa);} int main(){ char s[100];printf("请输入:");gets(s);TongJi(s);return 0;} ...

用C语言编写一个程序,输入一个字符串,统计其中各个字符出现的次数_百 ...
char c;int num_count = 0, \/\/ 数字个数 bigalp_count = 0, \/\/ 大写字母个数 littlealp_count = 0, \/\/ 小写字母个数 emp_count = 0, \/\/ 空格个数 els_count = 0; \/\/ 其他字符个数 while((c = getchar()) != '\\n') { \/\/ 读取输入直到换行符 \/\/ 判断字符类型并更新计数...

相似回答