PAT乙级 1002 写出这个数 (20分) ---- (C语言 + 详细注释)

读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

输入格式:

每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10​100​​。

输出格式:

在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。

输入样例:

1234567890987654321123456789

输出样例:

yi san wu
//大体思路:本题并不难想,只需对所有的数字求和,再分析每一个数位然后输出即可


#include<stdio.h>
#include<string.h>
#define MAX 105
char* s[MAX];                        //s数组储存结果

char vert[][10] = { "ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu" };          //用二维数组制表

int main() {
    int i, sum;
    char str[MAX];
    scanf("%s", str);
    sum = 0;
    for (i = 0; i < strlen(str); i++)
        sum += (str[i] - '0');              //str[i] - '0'把数字字符转化乘对应的数值,并求和

    for (i = 0; sum; i++) {
        s[i] = vert[sum % 10];         //得到每一位
        sum /= 10;
    }

    while (i--)                       //--i >= 0也可,逆序输出数组中的拼音
        printf("%s%s", s[i], (i > 0) ? " " : "");               //题目要求最后一个拼音后没有空格,可以用三目运算符实现(用的比较多)
    return 0;

}
发布了34 篇原创文章 · 获赞 20 · 访问量 610

猜你喜欢

转载自blog.csdn.net/qq_45472866/article/details/104068399