20111116

ACM 492 Pig-Latin

一個字元一個字元慢慢吃,
再判斷是否是字母。
是就存起來,
當遇到非字母時,就output改過的單字。

有一點stack的味道。

/* ACM 492 Pig-Latin
 * mythnc
 * 2011/11/16 11:50:51   
 * run time: 0.028
 */
#include <stdio.h>
#include <ctype.h>

#define MAXCHAR 1000

void print(char *);

int main(void)
{
    char word[MAXCHAR];
    int c, i;

    i = 0;
    while ((c = getchar()) != EOF)
        if (isalpha(c))
            word[i++] = c;
        else {
            if (i != 0) {
                word[i] = '\0';
                print(word);
                i = 0;
            }
            putchar(c);
        }
    return 0;
}

/* print: print out word in pig-latin form */
void print(char *w)
{
    switch (w[0]) {
        case 'A':
        case 'a':
        case 'E':
        case 'e':
        case 'I':
        case 'i':
        case 'O':
        case 'o':
        case 'U':
        case 'u':
            printf("%say", w);
            break;
        default:
            printf("%s%cay", w + 1, w[0]);
    }
}

沒有留言: