| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2133 人关注过本帖
标题:大家新年好,我有点小问题了。统计单词个数的
取消只看楼主 加入收藏
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
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
a271885843
Rank: 2
等 级:论坛游民
帖 子:291
专家分:58
注 册:2011-11-24
收藏
得分:0 
以下是引用TonyDeng在2012-2-7 23:40:20的发言:

你這樣做:scanf("%s", str)這個語句,一定是每次讀入一個單詞的,不會有空格之類空白字符,也就是說,不管有多少空格、TAB之類字符,全部略過,所以計數就計算這個函數返回1的次數即可(用fscanf()統計一個文本文件的單詞數,用這個是最方便的,不用考慮回車換行,一直讀到feof()就是了)。大致的代碼如下:

counter = 0
while (scanf("%s", str) > 0)
{
    ++counter;
}
循環結束後,counter就是所需要的答案。具體你自己嘗試一下。
思路很好,不过我搞了半天没搞出来,明天有面试,不搞了,休息了噢

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

#include  
#include  
#include  
 
void main(void)
{
    bool finish = false;
 
    printf_s("請輸入語句(以句號.作為結束符): ");
    int counter = 0;
    while (!finish)
    {
        char word[11];                                     // 應根據實際情況設置為能容納最大長度的單詞容量
        scanf_s("%s", word, sizeof(word) - 1);             // 這種輸入方法,容許任意輸入,不限文章長度、不限按鍵,只認約定結束符
        // 從這個步驟開始,可以考慮排除指定的標點符號
        char* p = strchr(word, '.');     
        if (p != NULL)                                     // 此下兩個if語句刻意寫成邏輯判斷形式,目的是強制結果為布爾類型
        {
            *p = '\0';
            finish = true;
        }
        if (strlen(word) > 0)
        {
            ++counter;
            printf_s("%s\n", word);                        // 驗證提取的單詞,可省
        }
    }
    printf_s("單詞數: %d\n", counter);
 
    printf_s("\n按任意鍵結束程序……");
    _getch();
}
看明白了,每次scanf_s只读取第一个空格之前的单词,然后只要结束符.没出现,第一个if不起作用,然后又循环,scanf_s再次读取字符串中第二个单词........

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

對,是的。
刚开始以为是算法,原来scanf_s是c++里的,然后纠结scanf_s是怎么读完一个单词,即便是标志finish还是flase,结果想了想,应该是scanf_s读内存里的去了,这样一想就通了。感谢之,呵呵。

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

scanf_s()是C語言scanf()的安全版本函數(s是safe的首字母,即“安全的”),其實就是scanf(),後面加的參數只是制約讀入的字符數目不至於超過數組容量溢出罷了,你把它看成scanf()就可以,不過最好習慣使用這個函數,因為溢出太可怕了(這個函數會觸發錯誤處理機制,讓你有機會挽回,而scanf()是直接崩潰的)。

scanf()函數讀字符串的特性,一向如此,刪掉空格,只讀入無空格的一個單元串,充分利用這點特性。在C++中,同樣特性的是<<輸入符。
嗯。

认为事物非黑即白是缺智慧的表现……
2012-02-08 23:32
快速回复:大家新年好,我有点小问题了。统计单词个数的
数据加载中...
 
   



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

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