鱼C论坛

 找回密码
 立即注册
查看: 2796|回复: 6

谭浩强C语言书中的一个小问题

[复制链接]
发表于 2013-12-10 20:55:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
#include<stdio.h>
void main()
{
    char string[81];
    int i,num=0,word=0;
    char c;
    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 line.",num);
}

对这段代码中的word这个变量理解不好,这个程序必须要这么写吗?有没有简单好懂的代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-10 21:02:32 | 显示全部楼层
word是用来区分空格的,我觉得吧word改成space还比较好理解。
如果字符串只有单词和空格的话,干嘛不直接统计空格的个数,单词数不就是空格数+1吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-10 21:24:07 | 显示全部楼层
#include<stdio.h>
void main()
{
    char string[81];
    int i,num=0,word=0;
    char c;
    gets(string);
    for(i=0;(c=string[i])!='\0';i++)//如果字符没有结束
    {
        if((c>=32 && c<=47) ||( c>=58 && c<=64 )||( c>=91 && c<=96 )||( c>=123 && c<=126))
                {//这是符号的ascii码,比如逗号、句号、问号、感叹号等等!
                        num++;
                }
    }
    printf("There are %d words in the line.",num);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-10 21:25:56 | 显示全部楼层

那如果是这句话呢?
Hi,Tom!  没有空格,加1的话就会打印出有一个单词!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-10 21:31:33 | 显示全部楼层
maomingkun 发表于 2013-12-10 21:25
那如果是这句话呢?
Hi,Tom!  没有空格,加1的话就会打印出有一个单词!

哦哦,也是,要考虑符号
if((c>=32 && c<=47) ||( c>=58 && c<=64 )||( c>=91 && c<=96 )||( c>=123 && c<=126))
                {//这是符号的ascii码,比如逗号、句号、问号、感叹号等等!
                        num++;
                }
这句改成if(!(('a'<=c && c<='z') || ('A'<=c && c<='Z')))
                {//这是符号的ascii码, 比如逗号、句号、问号、感叹号等等!
                        num++;
                }
是不是直观点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-10 22:18:22 | 显示全部楼层
对啊,就是这个意思,我就是大致说了一下思路,没有具体简化代码,:lol:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-12-11 13:46:29 | 显示全部楼层
我就看看   不说话!!!!!!!!!!!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 15:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表