【PAT】A1082. Read Number in Chinese (25)

来源:互联网 发布:2333软件 编辑:程序博客网 时间:2024/04/29 20:15

A1082. Read Number in Chinese (25)

易错点在于对于 ling的输出和空格的处理

#include <stdio.h>#include <string.h>char num[10][5] = {    "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};char wei[5][5] = {    "Shi", "Bai", "Qian", "Wan", "Yi"};int main(int argc, const char * argv[]) {    char str[15];    gets(str);    int len = (int)strlen(str);    int left = 0, right = len - 1; // 左右指针    int zeroFlag = 0, printFlag = 0;    if(str[0] == '-'){        printf("Fu");        left++;    }    // left和right指向同一节    while(left + 3 < right)        right -= 4;    while(left < len){        zeroFlag = 0; // 是否需要输出“ling“        printFlag = 0; // 该节是否有输出        while (left <= right) {            if(left > 0 && str[left] == '0'){                zeroFlag = 1;            } else {                if(zeroFlag){                    printf(" ling");                    zeroFlag = 0;                }                if(left > 0) printf(" ");                printf("%s", num[str[left] - '0']);                printFlag = 1;                // 除个位外,都需要输出位的名称 "Shi" "Bai" "Qian"                if(left != right)                    printf(" %s", wei[right - left - 1]);            }            left++;        }        // 输出每一节的名称 “Wan“,“Yi”        if(printFlag && right != len - 1)            printf(" %s", wei[(len - 1 - right) / 4 + 2]);        right += 4;    }    return 0;}
0 0
原创粉丝点击