黑马程序员技术交流社区

标题: 分享自己做的练习题 [打印本页]

作者: 一笑奈_UTPa1    时间: 2016-1-31 09:11
标题: 分享自己做的练习题
  1. //  Created by xuzhenhao on 16/1/26.
  2. //  Copyright (c) 2016年 xuzhenhao. All rights reserved.
  3. //

  4. /**
  5. 5、中华人民共和国公民身份证号码组成规则是前4位是代表省份和地区(例如4201代表湖北省武汉市),最后一位代表性别(1或3代表男性)。编写一个程序,通过身份证号码判断某人是否是武汉人以及其性别。(Objective-C)
  6. */

  7. #import <Foundation/Foundation.h>
  8. //使用typedef来定义执行判断的代码块为IDBlock,参数为传入的身份证号码
  9. typedef void (^IDBlock)(NSString *);
  10. //性别只分男女
  11. typedef enum {man,women} Sex;
  12. int main(int argc, const char * argv[]) {
  13.     @autoreleasepool {
  14.         //定义身份证号码
  15.         NSString * idNumber = @"420102199204184313";
  16.         //用新的类型定义block变量,更好的封装
  17.         IDBlock isWuhan;
  18.         isWuhan = ^(NSString *id)
  19.         {
  20.             //记录判断结果的变量,sex性别,flag是否为武汉人
  21.             Sex sex;
  22.             int flag ;
  23.            //先读取id字符串中前4位字符
  24.             NSString *temp = [id substringToIndex:4];
  25.             //将身份证的前4位和”4201“比较
  26.             if([temp compare:@"4201"]!=0)
  27.                 flag = -1;//不是,flag置为-1
  28.             else flag = 1;
  29.             //再判断性别,读取最后一位。长度不写死,以防不是18位的身份证号
  30.             temp = [id substringFromIndex:id.length-1 ];
  31.             //如果最后一位是1或3,则赋值为man,否则为woman
  32.             if([temp compare:@"1"]==0||[temp compare:@"3"]==0)
  33.                 sex = man;
  34.             else sex = women;
  35.             //输出结果
  36.             NSLog(@"身份证号为%@的用户%@武汉人,性别为%@",id,flag==1?@"是":@"不是",sex==man?@"男":@"女");
  37.         };
  38.         //调用block
  39.         isWuhan(idNumber);
  40.     }
  41.     return 0;
  42. }
复制代码

作者: 13631297627    时间: 2016-2-1 13:30
可以的!!!
作者: 石门一梦    时间: 2016-2-1 15:00
加油!!!        
作者: 847374032    时间: 2016-2-1 20:29
厉害!学习了
作者: 13631297627    时间: 2016-2-1 23:45
不错不错!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2