| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖
标题:问个字符统计的问题,请大家帮忙
只看楼主 加入收藏
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:7 
问个字符统计的问题,请大家帮忙
#include "stdio.h"
main()
{
 int c=0;
 printf("Please input sentence:\n");
 while(getchar()!='\n')
 {c++;
  if (getchar()=='')
      c--;
  }
 printf("The sum of sentence's characters is:%d",c);
 getch();
}
以上是我根据树上程序改编的,目的是输入一窜字符统计字数,但是空格不统计在内,但是最终跑出来的数字不对,且回车要两次才能显示结果,各位可以告诉我为什么吗?
补充一下运行画面:
图片附件: 游客没有浏览图片的权限,请 登录注册
图片附件: 游客没有浏览图片的权限,请 登录注册

敲w e e时返回3正确,但是敲wee时就返回2错了。。。

[ 本帖最后由 account 于 2010-4-14 12:43 编辑 ]
搜索更多相关主题的帖子: 字符 统计 
2010-04-14 11:40
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:30 
#include "stdio.h"
main()
{
int c=0;
char ch;
printf("Please input sentence:\n");
while((ch=getchar())!='\n')
{c++;
  if (ch==' ')
      c--;
  }
printf("The sum of sentence's characters is:%d",c);
getch();
}

★★★★★为人民服务★★★★★
2010-04-14 12:01
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
以下是引用cnfarer在2010-4-14 12:01:47的发言:

#include "stdio.h"
main()
{
int c=0;
char ch;
printf("Please input sentence:\n");
while((ch=getchar())!='\n')
{c++;
  if (ch==' ')
      c--;
  }
printf("The sum of sentence's characters is:%d",c);
getch();
}
谢谢版主大人!!!
但是两个疑问能否解释下?
1.为什么原错误代码会导致敲两次回车才会出结果
2.原先的代码逻辑错误在什么地方啊?
能否告知清楚啊?谢谢了
2010-04-14 12:10
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
回复 3楼 account
因为有两个getchar()

★★★★★为人民服务★★★★★
2010-04-14 12:22
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
以下是引用cnfarer在2010-4-14 12:22:18的发言:

因为有两个getchar()
版主啊,恕我愚笨,刚学没几天,如果问的问题非常小白还请原谅。
你的代码,我能明白,但我的错误的代码里面的逻辑似乎和两个getchar()无关啊,敲回车就应该结束这个循环了吧。
版主你一定是高手,我知道高手在和新手讲这个时肯定很痛苦:)多多原谅吧
2010-04-14 12:33
一口三个汉堡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:155
专家分:525
注 册:2010-3-21
收藏
得分:0 
#include "stdio.h"
main()
{
int c=0;
printf("Please input sentence:\n");
while(getchar()!='\n')
{c++;
  if (getchar()=='')//又运用了一个了getchar()来读取下一个了,这样过了一个了,‘’里面没有空格
      c--;
  }
printf("The sum of sentence's characters is:%d",c);
getch();
}
我运行的时候并没有要敲两次回车

坚持做对的事情,而不是容易的事情。
2010-04-14 12:44
鬼鬼千年
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:39
专家分:140
注 册:2010-4-9
收藏
得分:0 
getchar()函数
    getchar()函数也是从键盘上读入一个字符, 并带回显。它与前面两个函数
的区别在于: getchar()函数等待输入直到按回车才结束,  回车前的所有输入字
符都会逐个显示在屏幕上。但只有第一个字符作为函数的返回值。
根据这个函数的定义,再看看你的程序,就有错误了。
斑竹改的很强大啊。
   


活了千年的鬼鬼,突然想当个人,看看人和鬼哪个好?
2010-04-14 12:51
account
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:107
注 册:2010-4-12
收藏
得分:0 
说实话,楼上很多高手吧,我虽然明白了错误在哪里,但始终不是太清楚具体哪一步执行会成这样的错误结果。。。痛苦。。。
2010-04-14 13:31
快速回复:问个字符统计的问题,请大家帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019754 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved