A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 泥娃娃 中级黑马   /  2016-3-22 19:48  /  1007 人查看  /  5 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

编写一个程序,用于接收从终端输入的整数,提取并用英文显示这个数的每一位数,例如输入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;

5 个回复

倒序浏览
学习了,谢谢分享!
回复 使用道具 举报
本帖最后由 外号狐狸 于 2016-3-26 18:40 编辑

这一句  int dex=((int)[inStr characterAtIndex:i])-48;
你是将取出的每一字符再次强转为int类型,然后再减去48??
这句不是很明白
明白了,-48是取英文对应的Ascii码值的,然后来取对应的单词
回复 使用道具 举报
[engOutArray appendString: engArray[dex]];
      
[engOutArray appendString:@" "];
这里两句有意思
回复 使用道具 举报
已学习。。。。。。。。。。
回复 使用道具 举报
谢谢你得分享,很赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马