刷题记录6
1.fputs函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针)
其中字符串可以是字符串常量,也可以是字符数组名, 或指针变量。
fwrite(buffer,size,count,fp); 其中buffer是一个指针,在fread函数中,它表示存放输入数据的首地址
为什么选择fwrite而不选择fputs,可能是因为fputs只是写字符串,而fwrite表示写任何信息。
2. 在C语言中,以“e”或“E”后跟一个整数来表示以“10”为底数的幂数 。2.3026可以表示为0.23026E1、2.3026e0、23.026e-1。C语言语法规定,字母e或E之前必须要有数字,且e或E后面的指数必须为整数。如e3、5e3.6、.e、e等都是非法的指数形式。注意:在字母e或E的前后以及数字之间不得插入空格。
3.C++中不能重载的运算符:“ ?: ”、 “ . ”、“ :: ” 、“ sizeof ”和“.”
4.缺失值有完全随机缺失、完全非随机缺失和随机缺失。缺失值处理一般有删除和插值两大类方法。
其中删除包括列删除、行删除;插值包括均值插值、相似值插值、最大似然估计等。
5.层次模型 :层次模型是以记录类型为结点的树型结构,下层记录是上层记录中某元素的细化。 层次模型的记录类型间只有简单的层次关系,且满足以下条件:有一个记录类型没有父结点;其他记录类型有且只有一个父结点。
网状模型: 有一个以上记录类型没有父结点;至少有一个记录类型多于一个父结点。用这种网络结构表示记录类型之间联系的模型称为网状模型。
关系模型: 关系模型的基本思想是把事物与事物之间的联系用二维表格的形式描述。一个关系可以看作一个二维表,表中每一行是一个记录,每一列是一个字段。 关系模型可用离散数学中的关系代数来描述,因而关系数据库管理系统能够用严格的数学理论来描述数据库的组织和操作,且具有简单灵活、数据独立性高等特点,应用十分广泛。
6.由于类的构造次序是由基类到派生类,所以在构造函数中调用虚函数,这个虚函数不会呈现出多态; 相反,类的析构是从派生类到基类,当调用继承层次中某一层次的类的析构函数时往往意味着其派生类部分已经析构掉,所以也不会呈现出多态
7.初始数据集的排列顺序对算法的性能无影响的是堆 直接选择 归并 基数 即最好 和最坏的时间复杂度都是一样的
8.2014! 的末尾有几个0?
末尾为0,主要看乘积项中2和5的个数,由于2的个数明显比5多,则只需看5的个数即可
2014/5 = 402....4
2014/25 = 80....14
2014/125 = 16....14
2014/625 = 3....19
故2014!末尾0的个数为402+80+16+3 = 501
9.数组长度就是你定义数组时方括号中数字的大小。
字符串长度就是字符的个数。
字符串所占空间大小就是字符串长度+1(1个结束符的长度)
作为函数的形参传递时数组退化为指针
10.char c[10]={'x','y','z'},d[]={'x','y','z'}; 不以‘\0’作为结束标志的,它就没有串结束标志, 字符数组的长度,就是数组的长度
sizeof(c)=10,sizeof(d)=3
11.盒子里面有11个苹果,每天至少吃一个,最多不做限制,直到吃完为止,一共有多少种不同的吃法?1024
12.方差分析是用于连续变量的推断统计 卡方分析可以用于两个分类变量的关联性分析
13.StackOverflowError 原因在于 : 无限调用递归函数, 函数是以栈帧的形式存在于虚拟机栈内存中, 一直创建栈帧, 导致栈溢出.
OutOfMemoryError :
Java堆用于存储对象实例, 只要不断地创建对象, 并且保证GC Roots到对象之间有可达路径来避免垃圾回收机制来清除这些对象, 那么在对象数
量到达最大堆的容量限制后就会产生内存溢出异常. (摘抄自深入理解java虚拟机), 所以一直new String() 并不会造成堆内存溢出.
java异常可以分为checkedException和uncheckedException, 检查异常(不包括runtimeException及其子类的exception的子类)必须使用try catch或者throws处理, 而error属于非检查异常,非检查异常可以使用try catch捕获,但是没必要.
14. finally语句不会执行的三种情况 : (摘抄自别的答案, 具体出处不知道了)
1. 在执行finally语句块之前JVM退出或崩溃, (包括调用System.exit(0); 该函数的作用便是中止JVM的调用)
2. try死循环
3. 电源断电
15.异常可以分为检查异常和非检查异常.
检查异常顾名思义就是需要进行检查的异常, 需要使用try catch捕获或者throws抛出. (除去runtimeException及其子类的exception及其子类)
非检查异常 : runtimeException 及其子类, 还有Error(Error也属于异常, 并且属于非检查异常)
16.产生数据不一致的原因主要有三种:一是由于数据冗余;二是由并发控制不当;三是各种故障、错误。但根本原因是数据冗余。第一种情况往往是由于重复存放的数据未能进行一致性地更新造成的。第二种情况是由于多用户共享数据库,而更新操作未能保持同步进行引起的。第三种情况是由于某种原因(如硬件故障或软件故障)而造成数据丢失或数据损坏。
17.当free释放内存之后,指针还指向原来的那块地址,需要我们设置 p = NULL;如果不手动设置 p = NULL,此时P就变成了野指针
18.结构体中字节对齐有两条规则:
数据成员自对齐,即数据成员起始地址为数据类型长度的整数倍,如该题int型b只能从0,2,4...等地址处开始放;
结构体总长度是结构体中有效对齐值的整数倍,有效对齐值,如该题没明确指出,则为最长数据成员(int b)长度的整数倍;
19.使用const比使用define有一下几种好处:
(1)const会进行数据类型检查,而define不会
(2)const效率高,因为const定义的常量,没有在内存中存储,而是在符号表中,每次访问这个数据的时候,少了从内存中读取和存储过程,效率高。
20.指针加一的能力由类型决定。intptr=(int)(&a+1); &a 和a 都指的是数组首元素的地址。不同的是
a就是a+0 ,(a+0)就是a[0],而&a+1 相当于a[]数组类型的指针加1,此时指针加到数组的末尾。
ptr接受后,由于Ptr的类型是int 因此ptr-1 即回退4字节。即指到最后一个元素。*
21.java核心卷I中43页有如下表述:两个数值进行二元操作时,会有如下的转换操作:
如果两个操作数其中有一个是double类型,另一个操作就会转换为double类型。
否则,如果其中一个操作数是float类型,另一个将会转换为float类型。
否则,如果其中一个操作数是long类型,另一个会转换为long类型。
否则,两个操作数都转换为int类型。
22.静态变量通常存储在进程全局区。
23.卡方检验的结果是观察值与理论值偏离程度。
24.final可用于声明属性、方法和类,分别表示属性不可变,方法不可重写,类不可继承。当然final修饰的方法是可以被重载的。