【OJ】QUST 1226

来源:互联网 发布:中国gdp数据折线图 编辑:程序博客网 时间:2024/05/29 16:18

问题 A: 统计单词个数

时间限制: 1 Sec  内存限制: 128 MB

题目描述

我们的第一个任务,就是统计给定数据单词的个数。

输入

第一行输入一个整型数T,表示有T行测试数据。从第二行开始到第T+1行会有T组测试数据,每行一串字符,可能为大写字母,小写字母,数字(例如年份)或者空格,每两个单词之间用一个空格分隔,但是不保证每个单词以大写字母开头,也不保证大写字母只出现在开头。每一行可能有一个英文句号作为结尾,也可能没有。最后一个单词后面保证没有空格。每一行为一组测试数据,带有连接符“-”连接的两个词视为一个单词,每一行开头可能有一个空格。

输出

有与测试数据对应的T行,每行为一个整数,即这一组字符串中的单词的个数。

样例输入

3ACM International Collegiate Programming Contest is an annual multi-tiered competitive programming competition among the universitieS of the world.

样例输出

576

提示



//QUST 1226//问题 A: 统计单词个数#include<stdio.h>int main(){    int count,n;    int num;    scanf("%d",&n);    int in;    int tmp;    for(count=1;count<n;count++){        num = 0;        getchar();        while(1){            in = getchar();            if(in == 32){                if((tmp = getchar())==10){       //space and enter                    num++;                    break;                }                else{                    ungetc(tmp,stdin);          //single space                    num++;                }            }            if(in == 10){                       //single enter                num++;                break;            }        }        printf("%d\n",num);    }    num = 0;    getchar();    while(1){        in = getchar();        if(in == 32){            if((tmp = getchar())==EOF){                num++;                break;            }            else{                ungetc(tmp,stdin);                num++;            }        }        if(in == EOF){            num++;            break;        }    }    printf("%d",num);    return 0;}


可读性?能吃吗?怎么吃?好吃吗?
忽略每行开头可能出现的空格,每次读到空格时判断下一个字符是否为换行(或EOF)。若是,单词计数加一后退出;若否,继续读,读到换行(EOF)位置加一后退出。
今次没用到newlineornot()啊。

0 0
原创粉丝点击