栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

PAT乙级1002 C语言 最好理解的解法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PAT乙级1002 C语言 最好理解的解法

先看题目:

输入样例:1234567890987654321123456789

输出样例:yi san wu 

思路:

1.数值很大不能用常规int每位加和,然后switch。

2.所以采用数组将每一位以字符型读进数组。

3.将数组里每个数由字符型转化为整型并且加和。

4.想办法从高到低读出来。

上程序! 
#include 
#include 
int main(){
    char a [1000];
    int b [50];
    int i,length, sum = 0,digits,t,orig,j;      //digits位数、orig是sum的替代品
    digits = 0;
    scanf("%[^n]%*c", a);
    char py[10][10] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};     //拼音数组

    length = strlen(a);
    for(i = 0; i < length; i++){       //求出总和
        sum += (a[i] - '0');
    }
        orig = sum ;        //弄个替代品,便利后续使用

        while (orig > 0) {     //弄清sum是几位数
            orig /= 10;
            digits++;
        }

    for(t = 0; t < digits; t++){        //把和读进另外一个数组里面
        b[t] = sum % 10;
        sum /= 10;
    }

    printf("%s",py[b[t-1]]);        //为符合格式先倒序输出第一位再循环按格式打印其他位数
    for(i = t-2; i >= 0; i--)
        printf(" %s",py[b[i]]);

    return 0;
}

最初我的输入采用了gets,但是由于gets比较危险所以我就用了一个scanf的方法,

作为gets的替代方法大家可以自行百度一下,在这里就不详细讲解了。

(附上通过截图)

有问题可以评论区留言~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873040.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号