试题6

#import <Foundation/Foundation.h>

static NSString * const kName = @"name";

static NSString * const kAge = @"age";

static NSString * const kGender = @"gender";

inline static NSMutableDictionary *CreateDict(NSString *name, NSInteger age,  BOOL isMale){

NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithDictionary:@{kName:name,kAge :@(age),kGender :@(isMale)}];

return dict;

}

int main(int argc, const char * argv[]) {

@autoreleasepool {

NSArray *array = @[CreateDict(@"王思聪", 27, YES),

CreateDict(@"范冰冰", 35, NO),

CreateDict(@"马云", 51, YES),

CreateDict(@"霍建华", 36, YES),

CreateDict(@"赵丽颖", 28, NO)];

//第1题 请按照年龄的升序排序输出,输出样式为:王思聪,男性,今年27岁

//char a,b;

NSSortDescriptor *sortArr=[NSSortDescriptor sortDescriptorWithKey:@"age" ascending:1];

NSArray *arr=[array sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortArr]];

for(id sort in arr){

NSDictionary * xin=sort;

int sex=[xin[kGender] intValue];

if (sex==1) {

NSLog(@"%@,男性,%@",xin[kName],xin[kAge]);

}else{

NSLog(@"%@,女性,%@",xin[kName],xin[kAge]);

}

}

NSLog(@"????????????????????????????????????????????????????????");

//第2题 请输入女性信息,输出样式为:范冰冰大美女,今年35岁

for(id Male in arr){

NSDictionary *xin1=Male;

int sex=[xin1[kGender] intValue];

if (sex==0) {

NSLog(@"%@大美女,今年%@岁",xin1[kName],xin1[kAge]);

}

}

NSLog(@"????????????????????????????????????????????????????????");

//第3题 请将“马云”的年龄改为41岁

for(id age1 in arr){

NSDictionary *xin2=age1;

if ([[xin2 objectForKey:kName ]isEqual:@"马云"] ) {

[xin2 setValue:@"41" forKey:kAge];

}

}

for(id sort in arr){

NSDictionary * xin=sort;

int sex=[xin[kGender] intValue];

if (sex==1) {

NSLog(@"%@,男性,%@",xin[kName],xin[kAge]);

}else{

NSLog(@"%@,女性,%@",xin[kName],xin[kAge]);

}

}

return 0;

}

}

时间: 2024-10-06 05:20:31

试题6的相关文章

【转】嵌入式软件工程师经典笔试题

嵌入式软件工程师经典笔试题 > 预处理器(Preprocessor) 1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中 有多少秒而不是计算出实际的值,是更清晰而没有代价的. 3).

10个常见的Node.js面试题

如果你希望找一份有关Node.js的工作,但又不知道从哪里入手评测自己对Node.js的掌握程度. 本文就为你罗列了10个常见的Node.js面试题,分别考察了Node.js编程相关的几个主要方面. 在进入正文之前,需要提前声明两点: 这些问题只是Node.js知识体系的一个局部,并不能完全考察被面试者的实际开发能力. 对现实世界开发中遇到的问题,需要的是随机应变与团队合作,所以你可以尝试结对编程. Node.js面试题列表 什么是错误优先的回调函数? 如何避免回调地狱? 如何用Node来监听8

.NET教程:.NET 面试题之IEnumerable

.NET教程,今天给大家介绍的是:.NET 面试题之IEnumerable ,这是在面试的时候可能会碰到的一道题目,这道题的注解分为了两个部分,这一篇是第一部分! 什么是IEnumerable? IEnumerable及IEnumerable的泛型版本IEnumerable是一个接口,它只含有一个方法GetEnumerator.Enumerable这个静态类型含有很多扩展方法,其扩展的目标是IEnumerable. 实现了这个接口的类可以使用Foreach关键字进行迭代(迭代的意思是对于一个集合

java 19 - 9 finally有关的面试题

1 /* 2 * 面试题: 3 * 1:final,finally和finalize的区别 4 * final:最终的意思,可以修饰类,成员变量,成员方法 5 * 修饰类,类不能被继承 6 * 修饰变量,变量是常量 7 * 修饰方法,方法不能被重写 8 * finally:是异常处理的一部分,用于释放资源. 9 * 一般来说,代码肯定会执行,特殊情况:在执行到finally之前jvm退出了 10 * finalize:是Object类的一个方法,用于垃圾回收 11 * 12 * 2:如果catc

java面试题大全

java面试笔试题大汇总     第一,谈谈final, finally, finalize的区别. 最常被问到. 第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)? 第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统). 第四,&和&&的区别. 这个问得很少. 第五,HashMap和Hashtable的区

【面试】iOS 开发面试题(二)

1. 我们说的oc是动态运行时语言是什么意思? 答案:多态. 主要是将数据类型的确定由编译时,推迟到了运行时. 这个问题其实浅涉及到两个概念,运行时和多态. 简单来说,运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法. 多态:不同对象以自己的方式响应相同的消息的能力叫做多态.意思就是假设生物类(life)都用有一个相同的方法-eat; 那人类属于生物,猪也属于生物,都继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法. 也就是不同的对象以自己的

JAVA常见面试题及解答-java开发

JAVA常见面试题及解答 Java的垃圾回收总结  浅谈Java中的内部类 1)transient和volatile是java关键字吗? 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: class T { transient int a;  //不需要维持 int b;  //需要维持 } 这里,如果T类的一个对象写入一个持久的存储区域,a的内容不被保存,但b的将被保存. volatile修饰符告诉编译器被volatile修饰的变量可以被程序的其他部分改变.在多

链表面试题Java实现【重要】

本文包含以下内容: 1.单链表的创建和遍历 2.求单链表中节点的个数 3.查找单链表中的倒数第k个结点(剑指offer,题15) 4.查找单链表中的中间结点 5.合并两个有序的单链表,合并之后的链表依然有序[出现频率高](剑指offer,题17) 6.单链表的反转[出现频率最高](剑指offer,题16) 7.从尾到头打印单链表(剑指offer,题5) 8.判断单链表是否有环 9.取出有环链表中,环的长度 10.单链表中,取出环的起始点(剑指offer,题56) 11.判断两个单链表相交的第一个

Android-异步任务介绍及面试题

Android-异步任务 一 什么是AsyncTask Android为了减低异步操作的开发难度,结合Handle和线程池,提供了AsyncTask.AsyncTask就是一个封装过的后台任务类, 顾名思义就是异步任务,他具有可以在后台执行耗时操作,同时可以将 执行的进度与UI进行同步的优点 因为Handle实际上就是两个线程之间的桥梁,但是数据的传递是单向的 Handle机制如下图: 而AsyncTask机制如下: 二 如何使用AsyncTask AsyncTask定义三种泛型类型Params

Java面试题全集(中)

这部分主要是与Java Web和Web Service相关的面试题. 96.阐述Servlet和CGI的区别? 答:Servlet与CGI的区别在于Servlet处于服务器进程中,它通过多线程方式运行其service()方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于Servlet. 补充:Sun Microsystems公司在1996年发布Servlet技术就是为了和CGI进行竞争,Servlet是一个特殊的Java程