- // Created by xuzhenhao on 16/1/26.
- // Copyright (c) 2016年 xuzhenhao. All rights reserved.
- //
- /**
- 5、中华人民共和国公民身份证号码组成规则是前4位是代表省份和地区(例如4201代表湖北省武汉市),最后一位代表性别(1或3代表男性)。编写一个程序,通过身份证号码判断某人是否是武汉人以及其性别。(Objective-C)
- */
- #import <Foundation/Foundation.h>
- //使用typedef来定义执行判断的代码块为IDBlock,参数为传入的身份证号码
- typedef void (^IDBlock)(NSString *);
- //性别只分男女
- typedef enum {man,women} Sex;
- int main(int argc, const char * argv[]) {
- @autoreleasepool {
- //定义身份证号码
- NSString * idNumber = @"420102199204184313";
- //用新的类型定义block变量,更好的封装
- IDBlock isWuhan;
- isWuhan = ^(NSString *id)
- {
- //记录判断结果的变量,sex性别,flag是否为武汉人
- Sex sex;
- int flag ;
- //先读取id字符串中前4位字符
- NSString *temp = [id substringToIndex:4];
- //将身份证的前4位和”4201“比较
- if([temp compare:@"4201"]!=0)
- flag = -1;//不是,flag置为-1
- else flag = 1;
- //再判断性别,读取最后一位。长度不写死,以防不是18位的身份证号
- temp = [id substringFromIndex:id.length-1 ];
- //如果最后一位是1或3,则赋值为man,否则为woman
- if([temp compare:@"1"]==0||[temp compare:@"3"]==0)
- sex = man;
- else sex = women;
- //输出结果
- NSLog(@"身份证号为%@的用户%@武汉人,性别为%@",id,flag==1?@"是":@"不是",sex==man?@"男":@"女");
- };
- //调用block
- isWuhan(idNumber);
- }
- return 0;
- }
复制代码 |
|