[程序設計入門—C語言] 念整數

題目內容:http://mooc.study.163.com/learn/ZJU-1000002011#/learn/ojhw?id=1000052000

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

如輸入1234,則輸出:


  1. yi er san si


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


  1. fu er san si yi



輸入格式:

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


輸出格式:

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


輸入樣例:

-30


輸出樣例:

fu san ling


我的思路:

首先處理0,再對負數輸出"fu ",然後轉化成整數處理。

對每個整數,先模10得到個位再除以10循環處理,從個位到高位逐個剝離位值存儲在整數數組tmp[ ]。

然後從數組的最末位置往0位置開始處理,遇到第一個非0的數就“讀”出來,注意第一個讀出來的數字前面沒有空格。以後的數字讀出來之前都有空格輸出。

下面的代碼在處理-0056 這樣的輸入會有bug.


#include <stdio.h>

int SIZE = 7;

int main(){
	char* say[10]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};

	int tmp[7]={0};
	int in;
	scanf("%d",&in);
	//in = -30608;
	if(in == 0){
		printf("%s",say[0]);
		return 0;
	}
	else if (in < 0){
		printf("%s","fu ");
		in *= -1;
	}
	
	for(int i = 0;in>0;i++){
		tmp[i] = in % 10;
		in /= 10;
	}
	int begin = 0;
	for(int i = SIZE-1;i >=0; i--){
		if(tmp[i]==0&&!begin)
			continue;
		if(!begin){
			begin = 1;
			printf("%s",say[tmp[i]]);
			continue;
		}
		
		if(begin){
			printf(" %s",say[tmp[i]]);
		}
		
	
	}
	
	return 0;	
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章