demo实验要求:
设计一个程序,使得输入一个数字可以转化为对应的英语
提示:【数组】
效果为:
(输入年龄) 20
your age is twenty
思考:
a.各段对应的英语单词是?
1-10 one two three four five six seven night nine ten
11-19 eleven twelve thirteen fourteen fifteen sixteen seventeen eighteen nineteen
20 twenty
21 twenty one
31 thrity one
以此类推···
b.
以上的英语单词是字符串,可以使用数组的知识分为个位,十位,与11-19的特殊部分共计三段
c.
可以使用数组和判断语句,让指针在经过算法后可以输出个位、十位、11-19等各段数组对应的字符串
个人的解决方案
#include <stdio.h>
int main(){
int age=0;
int temp=0; //初始化 防止缓冲区的影响
char *eng; //eng的指针在各个数组中调用我对应的英语单词
//保存个位数 1-9 / “ "为无内容字符串(可能刚好为整十,不需要个位数)/
char*gewei[]={" ","one","two","three","four","five","six","seven","eight","nine"} ;
//保存10到19
char*temp[]={"ten","eleven","thirteen","fourteen","sixteen","seventeen","eighteen","nineteen"} ;
//保存十位
char*shiwei[]={"twenty","thirty","forty","fifty","sixty","seventy","eighty","ninety"};
printf("请输入年龄:"); //提示操作
scanf("%d",&age); //获取age的值
if(age<10){
//直接访问个位数组
//age从1开始 索引值从0开始
//必须-1才能匹配
eng=gewei[age-1];//数组从0开始需要age为0才能输出第一个字符串
printf("your age is %s",eng);
}
else if(age>=10&&age<=19){ // 10-19的数组
int index=age%10;
eng=temp[index];
printf("your age is %s",eng);
}
else{
int g=age%10; //定义并且获取个位数(除十然后取余)
char*gEng
gEng=gewei[g-1];
int s=age/10;//定义并且获取十位数
char*sEng=shiwei[s-2]; ///十位-2才能匹配 (从二十开始)
printf("your aeg is %s-%s",sEng,gEng) ;//(效果如:twenty-nine)
}
return 0;
}
注意事项:
a.
为保证用户体验 不要再scanf();乱输入内容 否则必须为为printf();中输入%d的特定格式
例子:
scanf("%d %d\n",&num1,&num2);
若为%d%d 需要一个一个敲 再两次 enter
printf("%d,%d\n",num1,num2); //\n是格式 输入为: 1 2\n 才可
b.
注意书写格式,方便检查错误(不然后面修bug要累哭)
- if(){
} - 各个步并且骤即时注释,并且每一段功能记得间隔开。
3.多个判断语句记得交错开,不要从上往下一条线。
4.多层逻辑记得越里层逻辑越靠后 多敲几次TAB