讀入乙個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。
每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10^100。
在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後乙個拼音數字後沒有空格。
1234567890987654321123456789
yi san wu
本題可分為三步思考解決方案:
將讀入的數字串識別為多個一位數字;
將各個數字加起來得到所求和;
將和的各位數字分離,分別轉換為拼音輸出。
本題解決思路:
用字元陣列(n[100])來儲存輸入的數字串,如題意,這裡保證n小於100位;
此時 n[i] 中存放的是字元 '1' '2' '3',所以需要將其轉換為數字 1 2 3,以便求和(利用ascii碼差48求得);
迴圈累加求和,因為字串末尾預設有 『\0』,故使用 '\0' 做結束標識;
利用求餘(%)將和的各位數字記錄進陣列(su[4])中;
對於每一位數字,呼叫printnum函式,輸出拼音。
#include#includeusing namespace std;
void printnum(int n);
int main();
char n[100]=;
//printf("please input a num:\n");
scanf("%s",n);
for(i=0;n[i]!='\0';i++)//get sum
//store reversesum in su[4] ,maxsum is 900
//such as sum=345 su[4]=
i=0;
while(sum)
//print output
//printf("this is answer:\n");
while(i--)
return 0;
}void printnum(int n)
}
其他函式寫在主函式後面時,記得在前面宣告函式。
注意儲存的是字元還是數字,如果不進行轉換為數字,則將以字元的ascii碼進行計算。
將乙個int型整數倒序輸出,即輸入「1234」,輸出「4321」。【思路】可以用 「a%10」 的辦法得到該整數的個位,用初始值為0的變數s記錄倒序的數,如圖1所示。
【**】利用迴圈得到倒序:
//non-recursion
int reverseint(int a)
return s;
}
【思路】遞迴應有 「遞迴體」 和 「遞迴出口」:
【思路】如果僅需輸出此數,則可將各數字按單獨位數輸出,即實際輸出 '3''2''1',而不是 '321' 。
【**】
//another method
void reversestring(int a)
printf("\n");
}
- end - PAT B1002寫出這個數
讀入乙個自然數n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。輸入格式 每個測試輸入包含1個測試用例,即給出自然數n的值。這裡保證n小於10100。輸出格式 在一行內輸出n的各位數字之和的每一位,拼音數字間有1空格,但一行中最後乙個拼音數字後沒有空格。輸入樣例 1234567890987654...
PAT B1002 寫出這個數
讀入乙個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10 100 在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後乙個拼音數字後沒有空格。123456789098765432...
PAT B1002 寫出這個數
1002 寫出這個數 20 分 讀入乙個正整數 n,計算其各位數字之和,用漢語拼音寫出和的每一位數字。每個測試輸入包含 1 個測試用例,即給出自然數 n 的值。這裡保證 n 小於 10 100 在一行內輸出 n 的各位數字之和的每一位,拼音數字間有 1 空格,但一行中最後乙個拼音數字後沒有空格。yi...