标题:大家新年好,我有点小问题了。统计单词个数的
只看楼主
missu_1314
Rank: 2
等 级:论坛游民
帖 子:46
专家分:98
注 册:2010-9-8
得分:0 
#include<stdio.h>
#include<string.h>

main()
{
    char a[300];
    int i;

    printf("please input:\n");
    for (i=0; ; i++)
    {
    scanf("%c", &a[i]);
    if (a[i] == '\n')
    break;
    }

    printf("the numbers of  string is: %d", i);
    getch();
}


稍微改了下,现在空格也算了,应该没问题吧
2012-02-07 22:49
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
得分:0 
以下是引用missu_1314在2012-2-7 22:49:35的发言:

#include
#include

main()
{
    char a[300];
    int i;

    printf("please input:\n");
    for (i=0; ; i++)
    {
    scanf("%c", &a);
    if (a == '\n')
    break;
    }

    printf("the numbers of  string is: %d", i);
    getch();
}


稍微改了下,现在空格也算了,应该没问题吧
早点结了算了。还是有问题。下面这个能这题理清思路
程序代码:
#include <stdio.h>
int main(){
    char word[80];
    int words=0;
    bool flag=false;
    gets(word);
    for(int i=0;word[i]!='\0';i++)
    {
        if (word[i]!=' '&&flag==false)
        {
            flag=true;
        }
        if (word[i]==' '&&flag==true)
        {
            flag=false;
            words++;
        }
    }
    printf("%d\n",++words);
}



[ 本帖最后由 a271885843 于 2012-2-7 23:03 编辑 ]

认为事物非黑即白是缺智慧的表现……
2012-02-07 22:59
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
得分:0 
以下是引用zxd675816777在2012-2-7 22:36:01的发言:

嘿嘿,如果要测单词的话只要稍微改变下量就好了额,不过那个可以达到相同的效果哦,不过要考虑用户的可能的输入错误,那样的话就很多咯,就简单写了一下,没帮上忙,不好意思哈
你也太虚伪了点点

认为事物非黑即白是缺智慧的表现……
2012-02-07 23:04
zxd675816777
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:252
专家分:631
注 册:2012-2-3
得分:0 
回复 楼主 a271885843
楼主啊,我稍微修改了下哈,但是故意没有考虑那个最后的输入为回车的,只用了一个++count来处理,不过道理一样的哈。您看看咯。。。


#include<stdio.h>
#include<ctype.h>
int main(void)
{
int z=0,count=0;
char c;
while((c=getchar())!='\n')
{
if(isalpha(c))
z=1;
else
{
count=count+z;
z=0;
}
}
printf("The sum is %d\n",++count);
return 0;
}

数学好难!
2012-02-07 23:15
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
上次我跟誰說過用scanf()讀入一個完整的單詞是最好的處理辦法,是你麼?

授人以渔,不授人以鱼。
2012-02-07 23:29
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
得分:0 
提示: 该帖被管理员或版主屏蔽

认为事物非黑即白是缺智慧的表现……
2012-02-07 23:33
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
得分:0 
以下是引用TonyDeng在2012-2-7 23:29:21的发言:

上次我跟誰說過用scanf()讀入一個完整的單詞是最好的處理辦法,是你麼?
应该不是吧。我都忘了。

认为事物非黑即白是缺智慧的表现……
2012-02-07 23:34
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
得分:0 
以下是引用zxd675816777在2012-2-7 23:15:02的发言:

楼主啊,我稍微修改了下哈,但是故意没有考虑那个最后的输入为回车的,只用了一个++count来处理,不过道理一样的哈。您看看咯。。。


#include
#include
int main(void)
{
int z=0,count=0;
char c;
while((c=getchar())!='\n')
{
if(isalpha(c))
z=1;
else
{
count=count+z;
z=0;
}
}
printf("The sum is %d\n",++count);
return 0;
}
另外你所谓稍微修改的东西,之前是一个水平档次,这又是一个程序档次,说实话,未必有多少初学者能看懂算法,信吗?

认为事物非黑即白是缺智慧的表现……
2012-02-07 23:36
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
你這樣做:scanf("%s", str)這個語句,一定是每次讀入一個單詞的,不會有空格之類空白字符,也就是說,不管有多少空格、TAB之類字符,全部略過,所以計數就計算這個函數返回1的次數即可(用fscanf()統計一個文本文件的單詞數,用這個是最方便的,不用考慮回車換行,一直讀到feof()就是了)。大致的代碼如下:

counter = 0
while (scanf("%s", str) > 0)
{
    ++counter;
}
循環結束後,counter就是所需要的答案。具體你自己嘗試一下。

[ 本帖最后由 TonyDeng 于 2012-2-7 23:42 编辑 ]

授人以渔,不授人以鱼。
2012-02-07 23:40
yxiangyxiang
Rank: 3Rank: 3
来 自:/\/\/\/\/
等 级:论坛游侠
帖 子:130
专家分:186
注 册:2012-1-29
得分:0 
gets(word);
功能:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串
2012-02-07 23:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-360549-1-1.html




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

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