黑马程序员技术交流社区

标题: 分享测试题 [打印本页]

作者: 泥娃娃    时间: 2016-3-22 19:48
标题: 分享测试题
编写一个程序,用于接收从终端输入的整数,提取并用英文显示这个数的每一位数,例如输入112,输出one one two

  1. #import <Foundation/Foundation.h>

  2. int main(int argc, const char * argv[]) {
  3.     @autoreleasepool {
  4.         //定义一个变量初始化为0,用于保存用户输入的整数
  5.         int input=0;
  6.         //提示用户输入一个整数
  7.         NSLog(@"请输入一个整数");
  8.         //接收用户输入的整数,并保存在input中
  9.         scanf("%d",&input);
  10.         //将用户输入的整数转换成字符串对象,并保存于inStr中
  11.         NSString*inStr=[NSString stringWithFormat:@"%d",input];
  12.         //设置一个不可变的英文数组
  13.         NSArray *engArray=@[@"Zero",@"one",@"two",@"three",@"four",@"five",@"six",@"seven",@"eight",@"nine"];
  14.         //设置一个可变的字符串用于存放处理的结果
  15.         NSMutableString *engOutArray=[NSMutableString string];
  16.         //开始遍历
  17.         for(int i=0;i<inStr.length;i++)
  18.         {
  19.             //取出字符串对象中得每一个字符,并转换成整型数据
  20.             int dex=((int)[inStr characterAtIndex:i])-48;
  21.             //根据整型数据,从英文数组中取出对应的英文单词,并存放于可变字符串中
  22.             [engOutArray appendString: engArray[dex]];
  23.             //存放英文单词后,加入一个空格
  24.             [engOutArray appendString:@" "];
  25.         }
  26.         //遍历结束,输出结果
  27.         NSLog(@"处理结果为:%@",engOutArray);
  28.         
  29.         
  30.     }
  31.     return 0;
  32. }
复制代码


关键是:以下两句代码思想的实现。
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