| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 478 人关注过本帖
标题:统计单词个数的程序,询问下错误
收藏  订阅  推荐  打印 
webtonny
Rank: 1
等级:新手上路
帖子:7
积分:160
注册:2008-4-19
统计单词个数的程序,询问下错误

#define N 81
#include "stdio.h"
void main()
{
  char string[N];
  char c;
  int i;
  int num=0,word=0;
  gets(string);
  for(i=0;(c=string[i]!='\0');i++)
  {  
    if(c==' ')
    word=0;
    else if(word==0)
    {
      word=1;
      num++;
    }
  }
  printf("There are %d words in the Array String",num);
}

num始终输出1....
搜索更多相关主题的帖子: 单词  询问  统计  
2008-4-21 21:49
sunkaidong
Rank: 12Rank: 12Rank: 12
来自:南京师范大学
等级:版主
威望:4
帖子:4131
积分:44881
注册:2006-12-28

(c=string[i])!='\0'

学习需要安静。。海盗要重新来过。。
2008-4-21 22:01
中学者
Rank: 12Rank: 12Rank: 12
等级:版主
威望:11
帖子:3376
积分:34542
注册:2007-9-14


程序代码:
#include<stdio.h>
#define N 81
int main(void)
{
   char string[N];
   char *pst;
   int count = 0;
   gets(string);
   for(pst = string;*pst!=0;pst++)
        if(*pst!=' ') ++count;
   printf("%d\n",count);
  return 0;
}      

汇编.....
2008-4-21 22:04
webtonny
Rank: 1
等级:新手上路
帖子:7
积分:160
注册:2008-4-19

以下是引用 中学者 在 2008-4-21 22:04 的发言:


#include
#define N 81
int main(void)
{
   char string[N];
   char *pst;
   int count = 0;
   gets(string);
   for(pst = string;*pst!=0;pst++)
        if(*pst!=' ') ++count;
   printf("%d\n",count);
  ...
这个代码不是原意,这个是输出字母的个数不是单词个数的。
2008-4-21 23:24
sunkaidong
Rank: 12Rank: 12Rank: 12
来自:南京师范大学
等级:版主
威望:4
帖子:4131
积分:44881
注册:2006-12-28

c=string[i]!='\0'
一般不要这样写,加括号吧,(c=string[i])!='\0'.
那样写的问题是:判断string[i]!='\0'然后把结果赋值给c.那么c只是0或1.由于开始的时候word==0;所以执行word=1..后面再也不运行了..所以是1...

学习需要安静。。海盗要重新来过。。
2008-4-21 23:35
广陵绝唱
Rank: 4
等级:高级会员
威望:1
帖子:825
积分:9718
注册:2008-2-15


程序代码:
/********************************************************
    根据LZ的程序改的,如果没有标点符号,计算正确。
    明天如果有时间,作个标点符号的程序。
    呵呵,希望这是LZ希望的程序。欢迎测试。
**********************************************************/
#define N 81
#include "stdio.h"
void main()
{
  char string[N];
  int i;
  int num=0;
  gets(string);
  for(i=0;string[i]!='\0';i++) /* 循环条件为字符数组不为休止符 */
  {  
    if(string[i]==' ')        /* 如果遇到空格,说明一个单词结束,计数器加1 */
            num++;
  }
  printf("There are %d words in the Array String",num+1);/* 由于最后一个单词无法计算,所以计数器加1为
                                                            真正的单词个数*/

  getch();
}
2008-4-22 00:17
中学者
Rank: 12Rank: 12Rank: 12
等级:版主
威望:11
帖子:3376
积分:34542
注册:2007-9-14

LS的代码也有问题呢~~无法处理连续空格的情况..

汇编.....
2008-4-22 16:55
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.073812 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved