PAT Basic level practise 1002

来源:互联网 发布:js强制弹窗 编辑:程序博客网 时间:2024/05/19 20:20

写出这个数 (20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue

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

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

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

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


我的代码:

#include<stdio.h>
#include<string.h>
void display(int num)
{
    switch(num)
    {
        case 0:printf("ling");break;
        case 1:printf("yi");break;
        case 2:printf("er");break;
        case 3:printf("san");break;
        case 4:printf("si");break;
        case 5:printf("wu");break;
        case 6:printf("liu");break;
        case 7:printf("qi");break;
        case 8:printf("ba");break;
        case 9:printf("jiu");break;
        default:break;
    }        
}
int main()
{
    char n[101];
    int sum = 0;
    int a[3];
    int i,temp;
    scanf("%s",n);
    for(i=0;i<strlen(n);i++)
    {
        sum=sum+n[i]-'0';
    }
    if(sum == 0)
        printf("ling");
    else
    {
        temp = sum;
        for(i=0;i<3;i++)
        {
            a[i] = temp%10;
            temp=temp/10;
        }
        if(sum<10)
            display(a[0]);
        else if(sum<100)
        {
            display(a[1]);
            printf(" ");
            display(a[0]);
        }
        else
        {
            display(a[2]);
            printf(" ");
            display(a[1]);
            printf(" ");
            display(a[0]);    
        }

    }
    printf("\n");
    return 0;
}


我的错误:

1.int型的范围为-2^32——2^32-1,不符合题目输入的范围;

2.“\b”是不支持的;


我的反思:

1.要熟记各种类型的范围;

2.程序写得再简洁一些;

3.字符串的输入输出不熟练。




0 0
原创粉丝点击