Linux的vim编程判断质数,牛客练习错题总结

1、linux创建文件的命令有()

touch,cat,vi/vim,>

touch命令

创建空白文件或修改文件时间

cat主要有三大功能:1.一次显示整个文件。

2.从键盘创建一个文件。

只能创建新文件,不能编辑已有文件.

3.将几个文件合并为一个文件

vi/vim可用来创建文件编辑文件并保存

> 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;

2、32位机上,

有三个类A B C定义如下, 请确定sizeof(A) sizeof(B) sizeof(C)的大小顺序.

struct A{

A() {}

~A() {}

int m1;

int m2;

};

struct B:A{

B() {}

~B() {}

int m1;

char m2;

static char m3;

};

struct C{

C() {}

virtual~C() {}

int m1;

short m2;

};则

A

答案解析:类的大小只与成员变量(非static数据成员变量)和虚函数指针有关,还要考虑到对齐.

那么类A的大小是8个字节;

类B继承类A,在类A的8个字节基础上,再加上B自己的大小8字节,所以类B大小是16个字节;

类C是4个字节+4个字节(考虑对齐)+4个字节(指向虚析构函数的指针)=12个字节

3、下面这个代码输出的是()

#include #include using namespace std;

int main(void)

{

vectorarray;

array.push_back(100);

array.push_back(300);

array.push_back(300);

array.push_back(300);

array.push_back(300);

array.push_back(500);

vector::iterator itor;

for(itor=array.begin();itor!=array.end();itor++)

{

if(*itor==300)

{

itor=array.erase(itor);

}

}

for(itor=array.begin();itor!=array.end();itor++)

{

cout<

100 300 300 500

解析:vector::erase():从指定容器删除指定位置的元素或某段范围内的元素

vector::erase()方法有两种重载形式

如下:

iterator erase(   iterator _Where);

iterator erase(   iterator _First,   iterator _Last);

如果是删除指定位置的元素时:

返回值是一个迭代器,指向删除元素下一个元素;

如果是删除某范围内的元素时:返回值也表示一个迭代器,指向最后一个删除元素的下一个元素;

在本题中,当 *itor==300成立时,删除第一个值为300的元素,同时itor指向下一个元素(即是第二个值为300的元素),

在for(;;itor++)执行itor,itor指向第三个值为300的元素,进入下一个循环

进入循环满足*itor==300,重复上面的过程,执行完循环,itor执行值为500的元素。

所有整个过程中,只删除了2个值为300的元素。1、

对重载函数形象的描述中,正确的是()参数的类型可能不同,参数的顺序可能不同,函数的返回值类型可能不同,参数的个数可能不同2、下述有关虚函数和纯虚函数说法错误的是?

同时含有纯虚拟函数的类称为抽象类,它可以被实例化,但是对象不可以调用纯虚函数(错误)解析:virtual void func 加 “=0”,实现虚函数。

抽象类中至少存在一个纯虚函数;存在纯虚函数的类一定是抽象类。存在纯虚函数是成为抽象类的充要条件。

抽象类之所以不能被实例化,是因为它里面是抽象方法,实例化对象调用其里面的方法没有意义,我们需要做的就是覆写掉里面的抽象方法。 而这个抽象方法其实就是纯虚函数,通过派生类来override纯虚函数,定义N个方法。

以下关于linux操作系统中硬链接和软链接的描述,正确的是?(b)

a、

硬链接和软链接指向的inode的编号是一样的

b、

可以建立一个空文件的软链接

c、

linux操作系统可以对目录进行硬链接

d、

硬链接指向inode节点

解析:

由于

硬链接

是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性:

文件有相同的 inode 及 data block;

只能对已存在的文件进行创建;

不能交叉文件系统进行硬链接的创建;

不能对目录进行创建,只可对文件创建;

删除一个硬链接文件并不影响其他有相同 inode 号的文件。

软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。因此软链接的创建与使用没有类似硬链接的诸多限制:

软链接有自己的文件属性及权限等;

可对不存在的文件或目录创建软链接;

软链接可交叉文件系统;

软链接可对文件或目录创建;

创建软链接时,链接计数 i_nlink 不会增加;

删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

软链接(符号链接) ln -s   source  target

硬链接 (实体链接)ln       source  target

参考:http://www.ibm.com/developerworks/cn/linux/l-cn-hardandsymb-links/

1、关于KMP算法的说法,错误的是(d)

a、效率不一定比普通算法高

b、next值跟主串没有关系

c、计算next值时,模式串也可以看做主串

d、模式串next值从左到右增大

解析:kmp算法:

1后移,直到字符串有一个字符,与搜索词的第一个字符相同为止.

2接着比较字符串和搜索词的下一个字符,直到字符串有一个字符,与搜索词对应的字符不相同为止

3根据部分匹配表,移动位数 = 已匹配的字符数 - 对应的部分匹配值

4 逐位比较,直到搜索词的最后一位

2、字符串www.qq.com所有非空子串(两个子串如果内容相同则只算一个)个数是(

50

)

初步计算为(10+11)/2,除去重复的内容w(2次),ww(1次),q(1次),.(1次)共5次,则一共为55-5=50次

1、现在有以下语句:

则执行后,变量sz的值将得到(16)

解析:结构体默认对齐方式为8,则iVersion取4字节对齐,CTag、CAdv和cEnd取2字节对齐,结构体大小为14,14不为4的整数倍,补空字节,增至16时符合所有条件,则sizeof(Thunder)为16。

参考:http://blog.chinaunix.net/uid-10995602-id-2918694.html

2、

在一个64位的操作系统中定义如下结构体:

同时定义fool函数如下:

上述fool()程序的执行结果为(

1,0,0)

解析:

uint16_t id;//两个字节,16位

3、

编译和执行如下c语言代码,系统将会输出什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值