程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> PAT 07-0 寫出這個數,pat07-0寫出

PAT 07-0 寫出這個數,pat07-0寫出

編輯:關於C語言

PAT 07-0 寫出這個數,pat07-0寫出


用拼音輸出一個數字的各位數字之和,這個或許比上面的標題恰當。這裡我第一次用到了sprintf()(stdio.h)這個函數,我本來是要找itoa()(stdlib.h)函數來著,查資料一看,說這個函數不是ANSI的標准函數,而且完全可以用sprintf()替代,此外,這個函數還是非常強大的,此處未用到,mark一下,下面是題設要求及代碼實現

/*
    Name: 
    Copyright: 
    Author: 
    Date: 01/04/15 10:37
    Description: 
讀入一個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。

輸入格式:每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。

輸出格式:在一行內輸出n的各位數字之和的每一位,拼音數字間有1 空格,但一行中最後一個拼音數字後沒有空格。

輸入樣例:
1234567890987654321123456789
輸出樣例:
yi san wu
*/

#include <stdio.h>
#include <string.h>

int main()
{
//    freopen("in.txt", "r", stdin); // for test
    
    char * num[] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
    char ch, s[3], * p;
    int sum, l;
    
    p = s;
    
    sum = 0;
    while((ch = getchar()) && ch != '\n')
        sum += ch - '0';
        
    sprintf(p, "%d", sum);
    l = strlen(s);
    
    int i;
    for(i = 0; i < l; i++)
    {
        printf("%s", num[s[i] - '0']);
        if(i != l - 1)
            printf(" ");
        else
            printf("\n");
    }
    
//    fclose(stdin); // for test
    
    return 0;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved