アルゴリズム——数字は中国語で出力する


自然数nを読み込んで、その各数字の和を計算し、中国語のピンインで和の各数字を書きます.
入力フォーマット:各テスト入力には、自然数nの値を与える1つのテスト例が含まれます.ここではnが10100未満であることを保証する.
出力フォーマット:1行にnの各数字の和の各ビットを出力し、ピンイン数字の間に1スペースがあるが、1行の最後のピンイン数字の後にスペースがない.
サンプルを入力:
1234567890987654321123456789

出力サンプル:
yi san wu

基本的な考え方:まず元のユーザが入力した数の各ビット数を分解してarr[]配列に格納する
さらに各ビット数を加算して総数をtempで格納する
さらにtempを各ビット数の分割してarr[]配列に格納する(元の配列を簡単に上書きできるようにする)
さらにk-=1分割数は最後にk++があるため、kは予想値より1つ多く減じる必要がある
最後に1つのswitch文で各ビット数に中国語printfを出します
コードは次のとおりです.
#  include
void WriteInChinese(int num)
{
int arr[100];
int i=0;
int temp=0;
int k=0;
while(num!=0)
{
arr[i]=num%10;
num=num/10;
temp+=arr[i];
i++;
}
while(temp!=0)
{
arr[k++]=temp%10;
temp=temp/10;
}
k-=1;
for(int h=k;h>=0;h--)
{
switch(arr[h])
{
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;
}
}
}
int main()
{
int n;
printf(「10^100未満の自然数nを入力してください」).
scanf("%d",&n);
WriteInChinese(n);
return 0;
}