黑马入学测试一些比较难的题目

本文介绍了iOS编程中的一些C语言基础知识,包括指针、宏定义、异常处理、对象方法等概念,并提供了多项选择题,用于测试读者的理解。涉及到的知识点包括函数指针、内存管理、文件操作、编译时期的概念、Objective-C特性等。
摘要由CSDN通过智能技术生成

#import<stdio.h>

intadd(int p){

   

   return (p++) + (++p);

   

}

 

inttest(int (*p)(int)){

   return p(1);

   

}

intmain(){

   

   int (*p1)(int);

   p1=add;

   int p2 = test(p1);

   printf("%d",p2);

 

   return 0;

   

}

上面输出结果正确的是? ( )----- 单选

 

A1

B2

C3

D4

 

 

fwrite函数的参数不包括以下哪个? ( ) ----- 单选

A、数据容器

B、单个数据字节数

C、文件指针

D、数据

 

以下哪项不是const类型的特点? ( )----- 单选

A、只读

B、在堆区

C、内存空间固定

 

使用宏定义是如何占用内存的? ( )----- 单选

A、不消耗内存

B、用几次也只占一份

C、用不用都只占一份

D、哪里用哪里占一份

 

 

宏定义的效果是什么时候执行的? ( )----- 单选

A、运行时

B、编译前

C、编译时

D、退出时

 

关于文件操作描述中错误的是? ( )----- 单选

A、文件操作前必须先打开文件,使用完毕必须关闭文件

Bfgets读取到NULL的时候就读取结束了

C、字符缓存就是一块内存趋于,用于存储字符,大小由程序员定义

 

c语言和oc之间的关系是? ( ) ----- 单选

Ac语言包含了OC

Bc语言可以兼容oc

Cocc语言加了一层面向对象

Doc包含c语言

 

 

@try …. @catch …@finally @try主要是负责处理什么业务? ( ) ----- 单选

A、异常

B、多态

C、线程

D、内存泄露

 

下列特性中不属于oc特性的是? ( )----- 单选

A、封装型

B、继承型

C、多态类型

D、消息类型

 

类的设计规则是( ) ----- 单选

A、只有类名

B、只有属性不用方法

C、只有行为不用成员

D、需要关心类名、属性、行为

 

在构造方法内部需要写self = [superinit];为什么要这样写呢?( ) ----- 单选

A、这可以保证子类和父类分别开辟两块空间共享

Bsuper才是一个真正的指针,实质是调用了[super message]

C、之所以需要self指向,为了保证正常使用isa指针调用方法

Dself是一个虚拟地址的指针,并不实际存在。

 

关于对象方法说法错误的是( ) ----- 单选

A、对象方法必须以减号开头

B、对象方法只能由对象调用

C、对象方法可以由类名调用

D、对象方法实现在@interface

 

在对象方法中往往可以传递很多参数,方法程序调用,下列传递错误的是( ) ----- 单选

A、对象可以当做方法参数连续传递

B、方法里面可以调用其他方法

C、对象可以作为方法的返回值

D、方法中传递函数名

 

下列说法错误的是? ( ) ----- 单选

Aretain消息:使计数器+1,该方法返回对象本身

Brelease消息:使计数器-1, 并且会立即释放对象

CretainCount消息:获得对象当前的引用计数器值

D、当引用计数器为0的时候对象就会被销毁

 

当你用stringWithFormat来创建一个新NSString对象的时候,系统默认会?( ) ----- 单选

A、这个新创建的字符串对象已经被retain 

B、这个新创建的字符串对象已经被release 

C、调用新创建的字符串的autorelease 方法

D、以上都不对。

 

 

关于autorelease, 说法正确的是?( ) ----- 单选

A、给某个对象发送一条  autorelease   消息时,就会将这个对象加到一个自动释放池中。

B、当自动释放池销毁时,会给池子里面的所有对象发送一条   release   消息。

Cautorelease实际上只是把对 release 的调用延迟了

D、调用autorelease方法时并不会改变对象的计数器,并且没有返回值。

 

 

如果一个类遵从一项协议,这个类的对象成为了声明该协议的对象的代理,那这个类必须实现  ( ) ----- 单选

A、这个协议里的所有required methods

B、这个协议里的所有required methods optional methods 

C、这个协议里至少一个required method

D、以上都不对

 

在定义协议方法的时候, 如果想让一个类必须实现某个方法, 应该怎么做? ( ) ----- 单选

A@optional

B@class

C@private

D@required

 

关于block 的说法错误的是?( ) ----- 单选

Ablock 表示的是一个代码块

Bblock 的名称写在小括号中的 ^ 后面

Cblock 定义完成后会立即执行

D、如果 block 没有参数, 等号右边的小括号可以省略

 

 

下列block代码块书写错误的是? ( ) ----- 多选

^{

NSLog(@”无参,无返回值block1”);

};

 

^(inta){

黑马程序员训练营入学考试题 1、方法的内部类能不能访问方法的局部变量,为什么? 2、编写一个类,在main方法定义一个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value。 3、取出一个字符串字母出现的次数。如:字符串:"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)... 4、有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。 5、编写一个程序,获取10个1至20的随机数,要求随机数不能重复。 6、编写三各类Ticket、SealWindow、TicketSealCenter分别代表票信息、售票窗口、售票心。售票心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。 7、写一方法,打印等长的二维数组,要求从1开始的自然数由方阵的最外圈向内螺旋方式地顺序排列。 如: n = 4 则打印: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 ? 8、编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数,然后打印出这个十进制整数对应的二进制形式。这个程序要考虑输入的字符串不能转换成一个十进制整数的情况,并对转换失败的原因要区分出是数字太大,还是其包含有非数字字符的情况。提示:十进制数转二进制数的方式是用这个数除以2,余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2,这次得到的余数就是次低位,如此循环,直到被除数为0为止。其实,只要明白了打印出一个十进制数的每一位的方式(不断除以10,得到的余数就分别是个位,十位,百位),就很容易理解十进制数转二进制数的这种方式。 9、28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(需写出分析思路) 10、有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人的第几个人?
1.方法的内部类能不能访问方法的局部变量,为什么? 2.分析运行结果,说明原理。(没有分析结果不得分) import java.util.ArrayList; class Data { int val; } public class Test { public static void main(String args[]) { Data data = new Data(); ArrayList list = new ArrayList(); for (int i = 100; i < 103; i++) { data.val = i; list.add(data); } for (Data d : list) { System.out.println(d.val); } } } 3.编写一个类,在main方法定义一个Map对象(采用泛型), * 加入若干个对象,然后遍历并打印出各元素的key和value。 4.编写一个类,在main方法定义一个Map对象(采用泛型), * 加入若干个对象,然后遍历并打印出各元素的key和value。 5.定义一个文件输入流,调用read(byte[] b)方法将exercise.txt * 文件的所有内容打印出来(byte数组的大小限制为5)。 6.存在一个JavaBean,它包含以下几种可能的属性: 1:boolean/Boolean 2:int/Integer 3:String 4:double/Double 属性名未知,现在要给这些属性设置默认值,以下是要求的默认值: String类型的默认值为字符串 www.itheima.com int/Integer类型的默认值为100 boolean/Boolean类型的默认值为true double/Double的默认值为0.01D. 只需要设置带有getXxx/isXxx/setXxx方法的属性,非JavaBean属性不设置,用代码实现 7.有一个类为ClassA,有一个类为ClassB,在ClassB有一个方法b,此方法抛出异常, * 在ClassA类有一个方法a,在这个方法调用b,然后抛出异常。 * 在客户端有一个类为TestC,有一个方法为c ,在这个方法捕捉异常的信息。 * 完成这个例子,说出java针对异常的处理机制。 8.编写一个程序,获取10个1至20的随机数,要求随机数不能重复。 9.编写一个程序,它先将键盘上输入的一个字符串转换成十进制整数, * 然后打印出这个十进制整数对应的二进制形式。 * 这个程序要考虑输入的字符串不能转换成一个十进制整数的情况, * 并对转换失败的原因要区分出是数字太大,还是其包含有非数字字符的情况。 * 提示:十进制数转二进制数的方式是用这个数除以2, * 余数就是二进制数的最低位,接着再用得到的商作为被除数去除以2, * 这次得到的余数就是次低位,如此循环,直到被除数为0为止。 * 其实,只要明白了打印出一个十进制数的每一位的方式 * (不断除以10,得到的余数就分别是个位,十位,百位), * 就很容易理解十进制数转二进制数的这种方式。 10.有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。 * 问:最后剩下的是100人的第几个人?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值