菜鸟问题(字符统计)
#include <stdio.h>
void main(void)
{
long nc;
nc = 0;
while (getchar() != EOF)
++nc;
printf("%ld\n", nc);
}
当运行是输入如下:
a
b
c
d
^z
后,输出结果为8,请问我想要的结果为4,为什么会是8呢?
环境为:vc6.0或者tc2.0都是同样的结果,请详细指点.
问题点数:30、回复次数:12Top
1 楼kimsea(小鸟)回复于 2006-03-07 15:47:47 得分 2
a
b
c
d
这样的输入,换行也算字符,所以8个
你这样输入:abcd 就应该没问题Top
2 楼lbing7(向青润老大学习!!!)回复于 2006-03-07 15:48:05 得分 2
回车也算!Top
3 楼lbing7(向青润老大学习!!!)回复于 2006-03-07 15:48:57 得分 2
在你里面加入一个判断是不是你想要的字符就行了!
判断之后再计数Top
4 楼Squall1009(钰枫)(找工作ing)回复于 2006-03-07 15:49:37 得分 5
#include <stdio.h>
int main()
{
long nc;
int i = 0;
nc = 0;
while ( (i = getchar()) != EOF)
if(i != '\n')
++nc;
printf("%ld\n", nc);
system("pause");
return 0;
}
是因为回车的问题Top
5 楼kimsea(小鸟)回复于 2006-03-07 15:57:31 得分 3
#include <stdio.h>
int main(void)
{
long nc = 0;
int i = 0;
while ( (i = getchar()) != EOF)
{
if(i != '\n')
++nc;
}
printf("%ld\n", nc);
return 0;
}Top
6 楼allensoso(死性不改)回复于 2006-03-07 16:00:07 得分 2
回车也是字符啊Top
7 楼ugg(逸学堂(exuetang.net))回复于 2006-03-07 16:28:36 得分 2
回车'\n'也是一个字符Top
8 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-07 19:53:06 得分 10
呵呵,既然你只要计算 字母 个数,
那么就不要对输入计数就好了啊 ~
#include <stdio.h>
void main(void)
{
long nc;
char ch;
nc = 0;
while (((ch = getchar())>'a' && ch < 'z')||
((ch = getchar())>'A' && ch < 'Z'))
++nc;
printf("%ld\n", nc);
}Top
9 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-07 20:00:06 得分 0
...
上面偷懒, 出错了 ~
晕!!!!
#include <stdio.h>
void main(void)
{
long nc;
char ch;
nc = 0;
while (ch = getchar())
if((ch>'a' && ch < 'z')||
(ch>'A' && ch < 'Z'))
++nc;
printf("%ld\n", nc);
}Top
10 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-07 20:02:04 得分 0
或者是输入的时候,
字母之间不要有什么间隔符号(回车,空格等),
这些都会作为字符被计算进去的 ~
也就是说,
楼主你的程序是计算 输入字符的个数 ...
要计算字母的话 ...
呵呵,
用上面的语句,判断一下就可以Top
11 楼zlkw(C++门诊正在营业!!!)回复于 2006-03-07 21:36:12 得分 2
#include <stdio.h>
int main(void)
{
long nc = 0;
int i = 0;
while ( (i = getchar()) != EOF)
{
if(i != '\n')
++nc;
}
printf("%ld\n", nc);
return 0;
}
弱弱的问一句。这个程序的运行以后输入的时候怎么样才算是结束呢?
Top
12 楼duduhaha(三人行必有我师)回复于 2006-03-07 22:35:56 得分 0
unix ctrl+d
ms-dos ctrl+zTop




