首页 > 考试 > 其他 > 正文
UVA494 Kindergarten Counting Game
2016-08-17       个评论    来源:海岛Blog  
收藏    我要投稿

C语言程序员的一项重要工作就是封装功能函数。

问题链接UVA494 Kindergarten Counting Game

题意简述:幼儿园数单词游戏。输入若干句话,数一下每句有几个单词输出。

问题分析:实现方法有多种。可以用C语言的字符串函数strtok()来实现,也可以用字符流来实现。

程序说明:用字符流实现时,封装了函数mygetchar()和mygetwords(),使得程序逻辑更加简洁,可阅读行强,通用行好。

AC的C++语言程序如下:

 

/* UVA494 Kindergarten Counting Game */

#include 
#include 
#include 

char mygetchar()
{
    char c;

    c = getchar();
    if(c != '\n' && c != EOF)
        c = isalpha(c) ? c : ' ';

    return c;
}

int mygetwords()
{
    char c;
    int count = 0;

    while((c = mygetchar()) && c != '\n' && c != EOF) {
        if(isalpha(c))
            count++;
        while(isalpha(c))
            c = mygetchar();
    }

    return (count == 0 && c == EOF) ? -1 : count;
}

int main(void)
{
    int count;

    for(;;) {
        count = mygetwords();

        if(count < 0)
            break;

        printf("%d\n", count);
    }

    return 0;
}

另外一个AC的C++语言程序如下:

 

 

/* UVA494 Kindergarten Counting Game */

#include 
#include 
#include 

int mygets(char s[])
{
    int i = 0;
    char c;

    while((c = getchar()) && c != '\n' && c != EOF)
        s[i++] = isalpha(c) ? c : ' ';
    s[i] = '\0';

    return i;
}

int main(void)
{
    char buf[1024];
    char delim[] = " ";
    char *p;
    int count;

    while(mygets(buf)) {
        count = 0;
        p = strtok(buf, delim);
        while(p) {
             count++;
             p = strtok(NULL, delim);
        }
        printf("%d\n", count);
    }

    return 0;
}

 

点击复制链接 与好友分享!回本站首页
相关TAG标签
上一篇:HDU1026 Ignatius and the Princess I
下一篇:华为上机题汇总(十七)
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站