目標(biāo):將輸入的數(shù)字年齡翻譯成英文
方法:一
可以使用if語(yǔ)句,編寫每一個(gè)數(shù)字都有輸出一個(gè)英文的代碼如:
if(i=1){
printf("Your age is one\n");
}
不過(guò)這種方法比較麻煩,不好操作。因此我們就應(yīng)該思考如何簡(jiǎn)化程序,很顯然需要插入數(shù)組,那么該如何操作呢,再接著往下看吧。
方法:二
不想要操作方法一那么復(fù)雜的程序,那么就讓我們用數(shù)組來(lái)試一試吧,首先我們要先思考如何來(lái)讓1對(duì)應(yīng)one,讓11對(duì)應(yīng)eleven。
先來(lái)簡(jiǎn)單一點(diǎn)的 如何讓用戶輸入一個(gè)數(shù)字1 來(lái)對(duì)應(yīng)數(shù)組中的one吧!
我們想要讓1 2 3 分別對(duì)應(yīng)數(shù)組中的one two three ,那么我肯定要把這些英文放到一個(gè)數(shù)組里(這里只考慮1-9的情況)那么這里的數(shù)組代碼我就直接給大家寫出來(lái)吧:
char* gewei[] = {"one","two","three","four","five","six","seven","eight","nine"};
那讓我們來(lái)試一試完整的程序是如何執(zhí)行的吧:
現(xiàn)在的問(wèn)題是我們輸入的是6,但它給我們顯示的結(jié)果是seven,因此問(wèn)題就出現(xiàn)了,要解決這個(gè)問(wèn)題就要了解字符串中這個(gè)one到底是從1開(kāi)始還是從0開(kāi)始,可能這時(shí)候大家都明白了,在gewei[ ]中的這個(gè)[ ]中應(yīng)該是輸入的是age-1,這樣就能保證用戶輸入1的時(shí)候?qū)?yīng)的就是one,正確的程序再給大家寫一遍吧:
#include<stdio.h>
int main(){
int age = 0;
//數(shù)組:數(shù)字對(duì)應(yīng)的英文
char* gewei[] = {"one","two","three","four","five","six","seven","eight","nine"};
//用戶輸入年齡
printf("請(qǐng)輸入你的年齡:");
scanf("%d",&age);
//開(kāi)始對(duì)應(yīng)數(shù)組里的字符串
char *name;//保存每次取出的字符串
name = gewei[age-1];
printf("Your age is %s\n",name);
return 0;
}
寫到這里,再想一想10-19是不是這樣呢,顯然也是的,但當(dāng)我們寫到20-29呢,30-39呢,是不是一想頭就大了,但先別急,先喝口開(kāi)水冷靜冷靜,仔細(xì)分析一波,21是twenty-one、31是thirty-one,這樣規(guī)律是不是很容易就發(fā)現(xiàn)了,我們需要編一個(gè)
char* shiwei[]= {"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninty"};
這樣的數(shù)組出來(lái) 在和我們前面寫的數(shù)組進(jìn)行鏈接是不是就可以了,那好那我們先把這個(gè)放到一邊,先不說(shuō)它,回頭來(lái)看10-19這一組,因?yàn)闆](méi)有什么規(guī)律,所以完全可以按照第一組的方法來(lái)編,這里呢我就直接把代碼寫出來(lái)吧,但需要注意的是我們這個(gè)時(shí)候需要一個(gè)數(shù)字來(lái)幫我們找是第幾項(xiàng),因此最好的方法呢就是取余,代碼呢就寫好了:
//保存10-19
char* temp[]= {"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};
//獲取個(gè)位數(shù)
int index = age % 10;
name = temp[index];//這里的name呢已經(jīng)在前面定義過(guò)了
接下來(lái)就讓我們看看剩下需要我們做的吧:
1.我們輸入的是一個(gè)兩位數(shù),因此就需要對(duì)應(yīng)數(shù)組shiwei[ ]和數(shù)組gewei[ ]。
2.當(dāng)我們輸入的是20+時(shí) 這時(shí)應(yīng)該從twenty開(kāi)始 30+的時(shí)候就應(yīng)該是從thirty開(kāi)始,因此我們需要定義一個(gè)變量s來(lái)使2與twenty對(duì)應(yīng),3與thirty對(duì)應(yīng)。
3.保證了十位數(shù)字對(duì)應(yīng)后,我們還需要對(duì)應(yīng)個(gè)位數(shù)字,此時(shí)我們?cè)谝胍粋€(gè)變量g保證第一組數(shù)組的對(duì)應(yīng)。
好了,大致上我們已經(jīng)被思路捋順了,現(xiàn)在讓我們放到程序里操作試試:
//保存?zhèn)€位數(shù)
char* gewei[] = {"one","two","three","four","five","six","seven","eight","nine"};
//保存十位
char* shiwei[]= {"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninty"};
//獲取個(gè)位數(shù)
int g = age % 10;
//獲取十位數(shù)
int s = age / 10;
//取出對(duì)應(yīng)的單詞
char* sString = shiwei[s];
char* gString = gewei[g];
printf("Your age is %s-%s\n",sString,gString);
好了寫到這里,問(wèn)題又來(lái)了,當(dāng)我們輸入20的時(shí)候會(huì)發(fā)現(xiàn)這時(shí)候十位對(duì)應(yīng)的是forty,但我們想要的是twenty,好吧,細(xì)心一點(diǎn)我們會(huì)發(fā)現(xiàn)這個(gè)問(wèn)題之前已經(jīng)提過(guò)了 所以就需要把這個(gè)char* sString = shiwei[s]; 改成char* sString = shiwei[s-2]; 那么問(wèn)題又來(lái)了,此時(shí)的g為0啊,但它對(duì)應(yīng)的是one,那么我們就需要在數(shù)組gewei[ ]中改一下數(shù)據(jù):
char* gewei[] = {"","one","two","three","four","five","six","seven","eight","nine"};
這樣是不是就可以實(shí)現(xiàn)了,需要注意的是,這樣改,我們求第一組的時(shí)候的gewei[age-1]中age就可以不用減一了。
最終的代碼結(jié)果為:
#include<stdio.h>
int main(){
int age = 0;
//保存?zhèn)€位數(shù)
char* gewei[] = {"","one","two","three","four","five","six","seven","eight","nine"};
//保存10-19
char* temp[]= {"ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"};
//保存十位
char* shiwei[]= {"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninty"};
printf("請(qǐng)輸入年齡:");
scanf("%d",&age);
char *name;//保存每次取出的字符串
if(age < 10){
name = gewei[age];
}else if(age >= 10 && age <= 19){
//獲取個(gè)位數(shù)
int index = age % 10;
name = temp[index];
}else{
//獲取個(gè)位數(shù)
int g = age % 10;
//獲取十位數(shù)
int s = age / 10;
//取出對(duì)應(yīng)的單詞
char* sString = shiwei[s-2];
char* gString = gewei[g];
printf("Your age is %s-%s\n",sString,gString);
//程序還未運(yùn)行完畢就提前結(jié)束
return 0;
}
printf("Your age is %s\n",name);
return 0;
}
自我感悟
編寫代碼時(shí),一定要有清晰的思路,邏輯要完善,編寫帶有數(shù)組的代碼時(shí),一定要了解到數(shù)組的使用規(guī)則;仔細(xì)分析每一個(gè)步驟,盡量使代碼更加簡(jiǎn)潔規(guī)范,總之,編碼不易,禿頭肯定也是遲早的事了。。