黑马程序员技术交流社区
标题:
分享测试题
[打印本页]
作者:
泥娃娃
时间:
2016-3-22 19:48
标题:
分享测试题
编写一个程序,用于接收从终端输入的整数,提取并用英文显示这个数的每一位数,例如输入112,输出one one two
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
//定义一个变量初始化为0,用于保存用户输入的整数
int input=0;
//提示用户输入一个整数
NSLog(@"请输入一个整数");
//接收用户输入的整数,并保存在input中
scanf("%d",&input);
//将用户输入的整数转换成字符串对象,并保存于inStr中
NSString*inStr=[NSString stringWithFormat:@"%d",input];
//设置一个不可变的英文数组
NSArray *engArray=@[@"Zero",@"one",@"two",@"three",@"four",@"five",@"six",@"seven",@"eight",@"nine"];
//设置一个可变的字符串用于存放处理的结果
NSMutableString *engOutArray=[NSMutableString string];
//开始遍历
for(int i=0;i<inStr.length;i++)
{
//取出字符串对象中得每一个字符,并转换成整型数据
int dex=((int)[inStr characterAtIndex:i])-48;
//根据整型数据,从英文数组中取出对应的英文单词,并存放于可变字符串中
[engOutArray appendString: engArray[dex]];
//存放英文单词后,加入一个空格
[engOutArray appendString:@" "];
}
//遍历结束,输出结果
NSLog(@"处理结果为:%@",engOutArray);
}
return 0;
}
复制代码
关键是:以下两句代码思想的实现。
NSArray *engArray=@[@"Zero",@"one",@"two",@"three",@"four",@"five",@"six",@"seven",@"eight",@"nine"];
int dex=((int)[inStr characterAtIndex:i])-48;
作者:
910428147
时间:
2016-3-23 15:55
学习了,谢谢分享!
作者:
外号狐狸
时间:
2016-3-26 18:32
本帖最后由 外号狐狸 于 2016-3-26 18:40 编辑
这一句 int dex=((int)[inStr characterAtIndex:i])-48;
你是将取出的每一字符再次强转为int类型,然后再减去48??
这句不是很明白
明白了,-48是取英文对应的Ascii码值的,然后来取对应的单词
作者:
外号狐狸
时间:
2016-3-26 18:42
[engOutArray appendString: engArray[dex]];
[engOutArray appendString:@" "];
这里两句有意思
作者:
爱尘iPhone
时间:
2016-3-26 22:21
已学习。。。。。。。。。。
作者:
songxuefeng
时间:
2016-3-28 00:53
谢谢你得分享,很赞
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2