PAT乙级练习1002

输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于1000(说好的1000?)。

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

输入样例:
1234567890987654321123456789
输出样例:
yi san wu

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
    char n[1000];//由于题目要求的数字太长,只能用字符串数组 
    int sum = 0;//用于计算各位之和 
    int m;//用于计算数字的位数 
    char str[20];
    gets(n);//输入 
    m = strlen(n);//得到输入的数字位数 
    //printf("位数为:%d\n",m);
    for(int i = 0;i < m;i++){//遍历数组并计算出各位之和 
        sum+=n[i]-'0'; 
    }
    //printf("各位数字之和为:%d\n",sum);
    //itoa(sum,str,10);//因为C++不支持,下面与之等价
    snprintf(str, sizeof(str), "%d", sum); 
    //printf("%s\n",str); 
    m = strlen(str);
    for(int j = 0;j < m;j++){//遍历数组并打印 
        switch(str[j]){
            case '0':
            if(str[j+1] == '\0'){
                printf("ling\n");
            }else{
                printf("ling ");//输出后面有个空格,不能用\t    
            }
            break;
            case '1':
            if(str[j+1] == '\0'){
                printf("yi\n");
            }else{
                printf("yi ");  
            }
            break;
            case '2':
            if(str[j+1] == '\0'){
                printf("er\n");
            }else{
                printf("er ");  
            }
            break;
            case '3':
            if(str[j+1] == '\0'){
                printf("san\n");
            }else{
                printf("san "); 
            }
            break;
            case '4':
            if(str[j+1] == '\0'){
                printf("si\n");
            }else{
                printf("si ");  
            }
            break;
            case '5':
            if(str[j+1] == '\0'){
                printf("wu\n");
            }else{
                printf("wu ");  
            }
            break;
            case '6':
            if(str[j+1] == '\0'){
                printf("liu\n");
            }else{
                printf("liu "); 
            }
            break;
            case '7':
            if(str[j+1] == '\0'){
                printf("qi\n");
            }else{
                printf("qi ");  
            }
            break;
            case '8':
            if(str[j+1] == '\0'){
                printf("ba\n");
            }else{
                printf("ba ");  
            }
            break;
            case '9':
            if(str[j+1] == '\0'){
                printf("jiu\n");
            }else{
                printf("jiu "); 
            }
            break;
            default:
            printf("出现错误");
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值