1 下列for循环的循环体执行次数为
for(int i=10, j=1; i=j=0; i++, j--)
0
1
无限
以上都不对

2 下面程序的输出结果是

char *p1= “123”, *p2 = “ABC”, str[50]= "xyz";
strcpy(str+2,strcat(p1,p2));
cout << str;

xyz123ABC


z123ABC


xy123ABC


出错


//strcat(p1,p2)出错,因为p1只被分配了4个字节的地址空间,将p2拼接在p1后面会引起内存溢出。



3 下面函数的执行结果是输出

char str[ ] = “xunlei”;
char *p = str;
int n = 10;
printf(“%d, %d, %d/n”, sizeof(str), sizeof(p), sizeof(n));

4, 4, 4


7, 4, 4


6, 4, 4


6, 6, 4



4


char *p, *q;
p = (char*) malloc(sizeof(char) * 20);
q = p;
scanf(“%s %s”, p, q);
printf(“%s %s/n”, p, q);

若从键盘输入:abc def, 则输出结果是


def def


abc def


abc d


d d




5 现在有以下语句:


struct _THUNDER{


       int iVersion;


       char cTag;


       char cAdv;


       int iUser;


       char cEnd;


}Thunder;


int sz = sizeof(Thunder);


 


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


11


12


13


16




6 有如下程序段:


void GetMemeory(char* p)


{


    p = (char*) malloc (100);




void test()


{


    char *str=NULL;


    GetMemory(str);


    strcpy(str,”Thunder”);


    strcat(str+2, “Downloader”);


    printf(str);


}


请问运行Test函数结果是:


Thunder Downloader


under Downloader


Thunderownloader


程序崩溃




7 p是指向类X的成员m的指针,s是类X的一个对象。现要给m赋值,()是正确的。


s.p = 5


s->p = 5


s.*p = 5


*s.p = 5




8 函数


fun(char* p) { 


    return p;


}


的返回值是


无确切值


行参p中存放的地址值


一个临时存储单元的地址


行参p自身的地址值



9 a,b均为不等于0的整形变量,以下关系式恒成立的是:


a*b/a*b == 1


a/b*b/a == 1


a/b*b + a%b == a


a/b*b == a


//a/b得到的是去除余数后的值,再加上a%b取摸的值就等于a了



10 设有如下说明:

typedef struct ST{ 

    long a; int b; char c[2]; 

} NEW;

则下面叙述中正确的是:

以上的说明形式非法

ST是一个结构体类型

NEW是一个结构体类型

NEW是一个结构体变量



11 下列表达式中,不合法的是()

已知:double d = 3.2; int n = 3;

d<<2;

d/n

!d && (n-3)

(d-0.2)|n


12 下面描述正确的是()

while循环语句的循环体至少执行1次

do-while循环可以写成while循环的格式

continue语句可以出现在各种循环体中

break语句不可以出现在循环体内


13 关于内联函数正确的是()

类的私有成员函数不能作为内联函数

在所有类说明中内部定义的成员函数都是内联函数

类的保护成员函数不能作为内联函数

使用内联函数的地方会在运行阶段用内联函数体替换掉


14 下面模板声明中,哪些是非法的()

template<class Type>class C1;

template<class T, U, class V>class C2;

template<class C1, ypename C2>class C3{};

template<typename myT, class myT>class C4{};



15 在使用浏览器打开一个网页的过程中,浏览器会使用的网络协议包括()

DNS

TCP

HTTP

Telnet


16 有n个文件的长度记载在一个无符号64位整数数组中unsigned__int64 file_length[n],把这n 个文件从逻辑上按序首尾拼接在一起形成一个逻辑上的大文件,然后以每块长度为unsigned block_length把这个逻辑上的大文件划分成大小相等的数据块(当然,最后一块有可能比block_length小),请定义和实现一个函数,把边界块的序号集合返回给函数的调用者(第一个数据块序号为0)。

注:边界块指的是跨多个文件的数据块。



17 请实现一个函数,把两个从大到小的有序链表合并成一个链表,新的链表是一个从小到大的有序链表。

struct list

{

    int value;

    list* next;

};

list * merge (list *list1_head, list*list2_head);



18 如果两个英文单词,组成它们的字符集合相同,而且相同字符出现的次数也相同,则称这两个词匹配:比如说:同”abbc”与词 ”babc”是匹配的。有一个词典,存储在字符串数组const char* dictionary[n]中,数组的每一个元素是一个词。对于任意给出的句子。句子中的单词使用空格分割。请实现以下函数,判断句子中是否有词和词典中的词匹配。 

bool is_matching( const char* dictionary[],int n, const char* sentence);