Tanky WooRSS

HDOJ 2072 单词数

18 Jul 2010
这篇博客是从旧博客 WordPress 迁移过来,内容可能存在转换异常。

考察了sscanf! int sscanf(const char *buffer, const char *format[, argument]); 功能:The sscanf function reads data from buffer into the location given by each argument.

e.g:

        char buf[100];
        char a1[10], a2[10], a3[10];
        int len;
        gets(buf);
        sscanf(arr, "%s %s %s", a1, a2, a3);
        printf("%s %s %s\n", a1, a2, a3);
        printf("-------------------------\n");
        sscanf(arr, "%s", a1);
        sscanf(arr, "%s", a2);
        sscanf(arr, "%s", a3);
        printf("%s %s %s\n", a1, a2, a3); 

输入: abc(空格)def(空格)ghi 输出:

abc(空格)def(空格)ghi

abc abc abc

代码:

#include 
#include 
#include 
using namespace std;

char word[1000];
char arr[100][100];  //arr用于存储以前出现过的单词
int main()
{
    int len, pos;
    char temp[100];
    while(gets(word) && strcmp(word, "#") != 0)   
    {
        len = strlen(word);
        pos = 0;
        int cnt = 0;
        // pos加单词长度一直到>=len
        while(pos < len)
        {
            sscanf(word + pos, "%s", temp); //把一个单词存入temp,空格忽略
            int k;
            for(k = 0; k < cnt; ++k)
                if(strcmp(temp, arr[k]) == 0)   //如果和以前存入的单词相同,则不计数
                    break;
            if(k == cnt)
                strcpy(arr[cnt++], temp);   //把temp存入arr,并计数器cnt加一
            pos += strlen(temp) + 1;
        }
        printf("%d\n", cnt);
    }
    return 0;
}