答案仅供参考,有错误欢迎指正。
1.求1111+2*1111+....+1111*1111对7求余的结果。
556*1111*1111对7求余,每个分别对7求余最后算的结果是5.
2.绕Y轴旋转的旋转矩阵。
3.f(0)=0,f(1)=1,f(n)=(f(n-1)+f(n-2))mod 5求f(2013);
周期为20,答案是3
4.二分查找的时间复杂度,堆排序的空间复杂度。
课本
5.快排的时间复杂度。
课本
6.下面代码的输出结果:
#include <iostream>
#define f(a) (a)*(a)
using namespace std;
int main()
{
int a=5,b,c;
b=f(a++);
c=f(++a);
if(!a&&c++)
b++;
else
c++;
cout<<b<<'\t'<<c<<endl;
}
GCC和VS的结果不同,本来刚开始这么写的,但是后来还是写的GCC上的结果。
VS:25,82.GCC30,82
7.关于断言:下面是一个断言的声明:
#define asert(e) if(!e) assert_error(_ERROR_LINE),
这样声明有什么问题?改成下面这样呢?
#define asert(e) {if(!e)assert_error(ERROR_LINE);}
该怎么改才是对的。
8.下面程序输出是什么?
#include <iostream>
using namespace std;
class Base
{
public:
~Base()
{
cout<<"~Base"<<endl;
}
};
class Dri:public Base
{
public:
~Dri()
{
cout<<"~Dri"<<endl;
}
};
int main()
{
Base *b=new Dri();
delete b;
return 0;
}
~Base
9.在一个低地址的系统中,下面代码输出的结果是:
#include <stdio.h>
struct data
{
int a;
short s;
};
int main()
{
struct data dd;
dd.s=0x0102;
char *p=ⅆ
printf("%d,%d",sizeof(dd),(int)(*(p+4)));
}
p=&dd不知道怎么回事显示有点问题。
8,2
10.下面调用多少次fork(),打印几个'-'#include <stdio.h>
#include <unistd.h>
int main()
{
int i;
for(i=0;i<2;++i)
{
fork();
printf("-");
}
return 0;
}
3,8
11.下面代码有什么用?
./a.out >outfile 2>&1
将标准输出和标准出错重定向到outfile
12.一分钟的音乐,采用14400的采样率,双声道,16比特,问大概多大。
前面这些题是试卷的第I部分,上面说第一部分不过直接就pass
下面是编程方面的题目
1.两个题可以选一个,a.写一个strcmp函数b.约瑟夫环的问题。
2.纸牌游戏,随便抽五张牌,A代表1,2-10还是2-10,J,Q,K表示11,12,13 王可以当任何一张。判断5张牌是不是顺子。
3.程序改错
class obj
{
public:
obj()
{
m=0;
data=new int[100];
}
obj(const &t)
{
m=t.m;
}
int squ(volatile int *p)
{
return *p**p;
}
~obj()
{
if(data)
delete[] data;
}
void add() const
{
m++;
}
private:
int m;
int *data;
};
int main()
{
obj o1;
obj o2=o1;
return 0;
}
比较明显的错误是:拷贝构造函数要用深拷贝,volatile那个应该先用一个int记下*p的值,还有就是const函数的问题。