1. 程式人生 > >中國大學慕課C語言入門翁愷老師 第五週測試 第二題 念整數

中國大學慕課C語言入門翁愷老師 第五週測試 第二題 念整數

題目內容:

你的程式要讀入一個整數,範圍是[-100000,100000]。然後,用漢語拼音將這個整數的每一位輸出出來。

如輸入1234,則輸出:

yi er san si

注意,每個字的拼音之間有一個空格,但是最後的字後面沒有空格。當遇到負數時,在輸出的開頭加上“fu”,如-2341輸出為:

fu er san si yi

輸入格式:

一個整數,範圍是[-100000,100000]。

輸出格式:

表示這個整數的每一位數字的漢語拼音,每一位數字的拼音之間以空格分隔,末尾沒有空格。

輸入樣例:

-30

輸出樣例:

fu san ling

參考答案:

//題目關鍵點:取整數的各個位

#include<stdio.h>

int main(){
    int x;
    int mask=1;
    scanf("%d",&x);
    if(x<0){
        printf("fu ");//判斷整數是否為負
    }
    int t=abs(x);//  保留x的絕對值·
    while(t>9){    //求出 取x的最高位時,需要的除數mask
        t/=10;          //去掉 t的最低位
        mask*=10;   //除數擴大10倍
    }
    do{
        int d=abs(x)/mask;    //求x的最高位
        if(d==1){                    //判斷 輸出
            printf("yi");
        }else if(d==2){
        printf("er");
        }else if(d==3){
        printf("san");
        }else if(d==4){
         printf("si");
        }else if(d==5){
         printf("wu");
        }else if(d==6){
        printf("liu");
        }else if(d==7){
        printf("qi");
        }else if(d==8){
        printf("ba");
        }else if(d==9){
         printf("jiu");
        }else{
         printf("ling");
        }
        if(mask>9){//最低位之前的位 後面輸出空格
         printf(" ");
        }
        x%=mask;     //求下一個最高位時,需要的被除數
        mask/=10;   //除數依次縮小10倍

        }while(mask>0);     //迴圈直到mask小於0

        printf("\n");  //回車
        return 0;
}