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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一笑奈_UTPa1 中级黑马   /  2016-1-31 09:11  /  940 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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. }
复制代码

4 个回复

倒序浏览
可以的!!!
回复 使用道具 举报
石门一梦 来自手机 中级黑马 2016-2-1 15:00:45
藤椅
加油!!!        
回复 使用道具 举报
厉害!学习了
回复 使用道具 举报
不错不错!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马