7-1 币值转换
幣值轉換
輸入一個整數(shù)(位數(shù)不超過9位)代表一個人民幣值(單位為元),請轉換成財務要求的大寫中文格式。如23108元,轉換后變成“貳萬叁仟壹百零捌”元。為了簡化輸出,用小寫英文字母a-j順序代表大寫數(shù)字0-9,用S、B、Q、W、Y分別代表拾、百、仟、萬、億。于是23108元應被轉換輸出為“cWdQbBai”元。
輸入格式:
輸入在一行中給出一個不超過9位的非負整數(shù)。
輸出格式:
在一行中輸出轉換后的結果。注意“零”的用法必須符合中文習慣。
輸入樣例1:
813227345
輸出樣例1:
iYbQdBcScWhQdBeSf
輸入樣例2:
6900
輸出樣例2:
gQjB
實驗代碼:
#include<stdio.h> #include<math.h> int m,s=0; int main() {int i,j,k,p=1,flag=1;int f(int q,int m);scanf("%d",&m);for(i=0;m/p>=10;i++){p=pow(10,i);s=s+1;}if(m==0) printf("a");if(m<10&&m>=0) s=1;for(j=1;j<=s;j++){switch(f(j,m)){case 0:if(j!=s&&j!=s-4){if(f(j+1,m)==0) flag=0;else flag=1;if(flag)printf("a");break;};break;case 1:printf("b");break;case 2:printf("c");
break;case 3:printf("d");
break;case 4:printf("e");
break;case 5:printf("f");
break;case 6:printf("g");
break;case 7:printf("h");
break;case 8:printf("i");
break;case 9:printf("j");
break;}if(f(j,m)==0&&j!=s&&j!=s-4) continue;else{if(s==9&&j==5){if(f(2,m)==0&&f(3,m)==0&&f(4,m)==0&&f(5,m)==0)continue;}switch(s-j){case 1:printf("S");
break;case 2:printf("B");
break;case 3:printf("Q");
break;case 4:printf("W");
break;case 5:printf("S");
break;case 6:printf("B");
break;case 7:printf("Q");
break;case 8:printf("Y");
break;}}} return 0; } int f(int q,int m) {int k,a;if(q==1) k=m/pow(10,s-1);else{a=m/pow(10,s-q+1);k=m/pow(10,s-q)-a*10;}return k; }
設計思路
1,開始我們需要了解一下應該存儲那些數(shù)組。 2,題目說的是輸入為非負整數(shù),首先需判定輸入數(shù)為0的情況 3,然后如果輸入數(shù)不為0,那么將輸入數(shù)從低到高取位判定。取得的當前位有0和非0之分,若當前位非0,且當前位數(shù)不為1即當前位不為個位,則存放單位與數(shù)字。注意由于一開始不知道輸入數(shù)的位數(shù),所以數(shù)組的只能從低到高,一般從0開始,先存放單位,后存放數(shù)字。若當前位為0,則可能有下幾種情況流程: 1)若當前位為萬位,則必存單位 2)若當前位不為萬位,則又需要分情況討論: 3)當前位為千位或個位,不存數(shù)字 4)當前位不為千位,且不為個位,但前面一位為0,也不存數(shù)字 5)當前位不為千位,且不為個位,前面一位非0,存數(shù)字問題解決方法: 遇到的問題就是switch和自定函數(shù)帶入的值輸錯,導致結果錯誤, 建議把值輸入那塊部分進行分析。 運行結果(因為為后面自己修改了,所以只能用這張圖)
?
轉載于:https://www.cnblogs.com/LUMO/p/10364812.html
總結
- 上一篇: jquery跨域Ajax请求
- 下一篇: Lua 的table遍历 【转】