PAT--乙级-1002

题目:

1002. 写出这个数 (20)

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

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

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

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

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

解决代码:(汪汪)
 1 #include <stdio.h>
 2 
 3 int sum_String(int num);
 4 
 5 int main(){
 6     char input_number[100]={0};//假设输入的数字的位数是100位
 7     int sum = 0;
 8     printf("\nPlease enter a number string (number <10^100)\n ");
 9     scanf("%s",input_number);//以字符串的形式 输入要研究的数字
10     int i; 
11     for(i=0;i<100;i++)
12     {
13         if(input_number[i]!=0)
14         {
15             if(('0'>input_number[i])||('9'<input_number[i]))
16             {
17                 printf("Input Error, the program exit ...\n");
18                 return -1;
19             }
20             sum += input_number[i]-'0';
21         }//如果输入的位 非数字  则出现异常,中断;否则继续求和
22         else
23         {
24             break;
25         }
26     }
27 
28     //假设求出的和不超过三位数
29     printf("Sum = %d\n",sum);
30     printf("pingying Sum: ");
31     if(sum/100!=0)
32     {
33         sum_String(sum/100);
34         printf(" ");
35     //        sum_String(sum/100/10);
36         sum_String(sum%100/10);
37         
38         printf(" ");
39         sum_String(sum%10);
40     }
41     
42     else if(sum/10!=0)
43     {
44         sum_String(sum/10);
45         printf(" ");
46         sum_String(sum%10);
47     }
48     else
49     {
50          sum_String(sum%10);
51     }
52     printf("\n---END---\n");
53 }
54 
55 //将对应的数字用拼音表示 
56 int sum_String(int num){
57     switch (num){
58     case 1:printf("yi");break;
59     case 2:printf("er");break;
60     case 3:printf("san");break;
61     case 4:printf("si");break; 
62     case 5:printf("wu");break;
63     case 6:printf("liu");break;
64     case 7:printf("qi");break;
65     case 8:printf("ba");break;
66     case 9:printf("jiu");break;
67     case 0:printf("ling");break;
68 
69 } 
70 }

注:代码添加功能:

1.在输入非数字时异常退出

 

测试结果:

PAT--乙级-1002

 

*放在测试器 中递交时 可删除部分功能代码:

#include <stdio.h>

int sum_String(int num);

int main(){
    char input_number[100]={0};//假设输入的数字的位数是100位
    int sum = 0;
    //printf("\nPlease enter a number string (number <10^100)\n ");
    scanf("%s",input_number);//以字符串的形式 输入要研究的数字
    int i; 
    for(i=0;i<100;i++)
    {
        if(input_number[i]!=0)
        {
            if(('0'>input_number[i])||('9'<input_number[i]))
            {
            //    printf("Input Error, the program exit ...\n");
                return -1;
            }
            sum += input_number[i]-'0';
        }//如果输入的位 非数字  则出现异常,中断;否则继续求和
        else
        {
            break;
        }
    }

    //假设求出的和不超过三位数
  //  printf("Sum = %d\n",sum);
//    printf("pingying Sum: ");
    if(sum/100!=0)
    {
        sum_String(sum/100);
        printf(" ");
    //        sum_String(sum/100/10);
        sum_String(sum%100/10);
        
        printf(" ");
        sum_String(sum%10);
    }
    
    else if(sum/10!=0)
    {
        sum_String(sum/10);
        printf(" ");
        sum_String(sum%10);
    }
    else
    {
         sum_String(sum%10);
    }
//    printf("\n---END---\n");
}

//将对应的数字用拼音表示 
int sum_String(int num){
    switch (num){
    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;
    case 0:printf("ling");break;

} 
}

递交结果:
成功!