中國大學慕課C語言入門翁愷老師 第五週測試 第二題 念整數
阿新 • • 發佈:2019-02-09
題目內容:
你的程式要讀入一個整數,範圍是[-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
return 0;
}