本文主要是介绍(各个公司面试原题)在线做了一套CC++综合测试题,也来测一下你的水平吧(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
刚才又把做错的题看了看,感觉自己有太多的东西要补啊!!!
下面给出试题,和我对题目的一些理解
1.下面描述正确的是
int *p1 = new int[10];
int *p2 = new int[10]();
A. p1和p2申请的空间里面的值都是随机值
B. p1和p2申请的空间里的值都已经初始化
C. p1申请的空间里的值是随机值,p2申请的空间里的值已经初始化
D. p1申请的空间里的值已经初始化,p2申请的空间里的值是随机值
答案:C
我的理解:应该是调用了带有默认参数值的构造函数吧 (据说,《C和指针》这本书里有介绍)
2.下面的程序可以从1....n中随机等概率的输出m个不重复的数。这里我们假设n远大于m
knuth(int n, int m)
{ srand((unsigned int)time(0)); for (int i = 0; i < n; i++) { if ( ) { cout << i << endl;( );}}
}
A. rand()%(n-i)<=m m--
B. rand()%(n-i)<m m--
C. rand()%(n-i)>=m m++
D. rand()%(n-i)>m m++
答案:B
我选的A,错的太亏了。
贴个图
3.以下prim函数的功能是分解质因数。括号内的内容应该为?
void prim(int m, int n){if (m > n){while ( ) n++;( );prim(m, n);cout << n << endl;}}
A. m/n m/=n
B. m/n m%=n
C. m%n m%=n
D. m%n m/=n
答案:D
4.
enum string
{ x1, x2, x3=10, x4, x5,
} x;
问x等于什么?
A. 5
B. 12
C. 0
D. 随机值
答案:C
5.
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
请问p1+5= 什么?
p2+5= 什么?
A. 801005 810005
B. 801010 810014
C. 801005 810014
D. 801010 810015
答案:C
p1+5=p1+5*sizeof(unsigned char),char占1字节
p2+5=p2+5*sizeof( unsigned long),long占4字节
最后转换为十六进制
6.
在32位机器中,如下代码:
void example(char acWelcome[])
{printf("%d",sizeof(acWelcome));return;
}
void main()
{char acWelcome[]="Welcome to Huawei Test";example(acWelcome);return;
}
的输出是?
A. 0
B. 4
C. 23
D. 24
答案:B
数组作为参数传入函数会退化为指针,所以,不管acWelcome的长度是多少(即便为空),都返回4
如果不经过函数而直接写出以下语句
printf("%d\n",sizeof(acWelcome));
则输出23,为acWelcome的长度+1(结束符);
7.
下面关于虚函数和函数重载的叙述不正确的是
A. 虚函数不是类的成员函数
B. 虚函数实现了C++的多态性
C. 函数重载允许非成员函数,而虚函数则不行
D. 函数重载的调用根据参数的个数、序列来确定,而虚函数依据对象确定
答案:A
很明显,A是错的。当时就突然想到,sizeof(Class)是受虚函数影响的,但不受static变量和static函数影响
8.
处理a.html文件时,以下哪行伪代码可能导致内存越界或者抛出异常()
<span style="white-space:pre"> </span>int totalBlank = 0;int blankNum = 0;int taglen = page.taglst.size();
A for(int i = 1; i < taglen-1; ++i){//check blank
B while(page.taglst[i] == "<br>" && i < taglen){
C ++totalBlank;
D ++i;}
E if(totalBlank > 10)
F blankNum += totalBlank;
G totalBlank = 0;}
注意:以下代码中taglen是html文件中存在元素的个数,a.html中taglen的值是15,page.taglst[i]取的是a.html中的元素,例如page.taglst[1]的值是<html>
a.html的文件如下:
<html>
<title>test</title>
<body>
<div>aaaaaaa</div>
</body>
</html>
<br>
<br>
<br>
<br>
<br>
A. A
B. B
C. C
D. D
E. E
F. F
G. G
答案:B
9.
void Func(char str_arg[100])
{printf("%d\n",sizeof(str_arg));
}
int main(void)
{char str[]="Hello";printf("%d\n",sizeof(str));printf("%d\n",strlen(str));char*p=str;printf("%d\n",sizeof(p));Func(str);
}
32位系统下下面程序的输出结果为多少?
A. 5 5 4 4
B. 6 5 4 4
C. 6 5 6 4
D. 5 5 5 100
答案:B
sizeof(str)和strlen(str)的区别在于,前者会把str末尾的'\0'算上
第3个输出我也不太理解,若有如下代码
char a='c';
char *p=&a;
则,sizeof(a)输出1,sizeof(p)输出4.
第4个输出
数组作为参数传入函数会退化为指针,这个和题6一样
10.
下面程序运行后的结果为:
char str[] = "glad to test something";
char *p = str;
p++;
int *p1 = static_cast<int *="">(p);
p1++;
p = static_cast<char *="">(p1);
printf("result is %s\n", p);
A. glad to testsomething
B. ad to testsomething
C. test something
D. to testsomething
答案:D
代码运行不了。。。
不过觉得这题的关键就是,p++是+1个字节(char型占1个字节),p1++是+4个字节(int型占4个字节)
这篇关于(各个公司面试原题)在线做了一套CC++综合测试题,也来测一下你的水平吧(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!