用拼音輸出一個數字的各位數字之和,這個或許比上面的標題恰當。這裡我第一次用到了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;
}