MP3是通过把人耳不易分辨的频率去除来压缩音频文件的,具体怎么去做不甚明白觉得主要的就是如何去做一个滤波算法。
MP3文件其实利用了人耳和人脑对声音的记忆错觉来进行编码的。举个例子来说,如果有两个音很接近,或一个高音和一个低音在同一时刻出现,人的大脑只能凭感觉记住其中的一个音,MP3编码的算法正是基于这么一种原理。通过选取重要的声音信号忽略次要信号,在人耳能承受的音频质量范围内来达到高压缩比,其压缩的比率就是MP3编码率。
人们普遍采用比特率来作为MP3的参考标准。比特率表示单位时间(1秒)内传送的比特数bps(位/秒),使用kbps作为单位,音乐文件的比特率越高就代表其数据量越多,而音质就越好,不过其文件就愈大。
在MP3方面,其传输范围是128~320kbps,而最常见的比特率则为128kbps,已足够满足大多数人的耳朵,如果你的耳朵很挑剔的话,不妨选择更高一点的比特率,不过320 kbps的音质也就足够好了。
2.将一个 1M -10M 的文件,逆序存储到另一个文件,就是前一个文件的最后一个
字符存到新文件的第一个字符,以此类推。
3.main主函数执行完毕后,是否可能会再执行一段代码,给出说明。(朗讯面试题)
crt会执行另一些代码,进行处理工作。
如果你需要加入一段在main退出后执行的代码,可以使用atexit()函数,注册一个函数。
#include <stdio.h>
#include <stdlib.h>
void fn1( void ), fn2( void ), fn3( void ), fn4( void );
// atexit()以栈的方式注册函数,先注册的函数会后执行。
void main( void )
{
atexit( fn1 );
atexit( fn2 );
atexit( fn3 );
atexit( fn4 );
printf( "This is executed first./n" );
return;
}
void fn1()
{
printf( "next./n" );
}
void fn2()
{
printf( "executed " );
}
void fn3()
{
printf( "is " );
}
void fn4()
{
printf( "This " );
}
结果:
This is executed first.
This is executed next.
5.给一个字符串、例如 “ababc”要求返回“ab”. 因为“ab”连续重复出现且最长。
用C/C++语言写一函数完成该算法,给出复杂度
6.对序列1、1、2、3、5、8、13。。。。 是Fab..数列
2、3、5、13...是Fab..质数数列,因为他们与自己前面的Fab...数列都互质
给出k,返回第k小的Fab..质数
7.101个硬币100真、1假,真假区别在于重量。请用无砝码天平称两次给出真币重还是假币
重的结论。
8.完成字符串拷贝可以使用 sprintf、strcpy 及 memcpy 函数,请问这些函数有什么区别
,你喜欢使用哪个,为什么?
9.变量的声明和定义有什么区别?
广义地说,声明包括定义,但并不是所有的声明都是定义。
一般把需要建立存储空间的声明称为定义,把不需要建立存储空间的声明称为声明。
10.请写出下面代码在 32 位平台上的运行结果,并说明 sizeof 的性质:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char a[30];
char *b = (char *)malloc(20 * sizeof(char));
printf("/t%d/n", sizeof(a)); // 30
printf("/t%d/n", sizeof(b)); // 4
printf("/t%d/n", sizeof(a[3])); // 1
printf("/t%d/n", sizeof(b+3)); // 4
printf("/t%d/n", sizeof(*(b+4))); // 1
return 0 ;
}
12.请完成以下题目。注意,请勿直接调用 ANSI C 函数库中的函数实现。
a)请编写一个 C 函数,该函数给出一个字节中被置 1 的位的个数,并请
给出该题的至少一个不同解法。
b)请编写一个 C 函数,该函数将给定的一个字符串转换成整数。
c)请编写一个 C 函数,该函数将给定的一个整数转换成字符串。
d)请编写一个 C 函数,该函数将一个字符串逆序。
e)请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回
该字符所在位置索引值。
f)请编写一个 C 函数,该函数在一个字符串中找到可能的最长的子字符串,
该字符串是由同一字符组成的。
给出演示上述函数功能的一个简单程序,并请编写对应的 Makefile 文件
14.假设现有一个单向的链表,但是只知道只有一个指向该节点的指针p,并且假设这个节
点不是尾节点,试编程实现删除此节点。
15.写一个程序,把一个100以内的自然数分解因数。(自然数分解因数就是将一个自然数
分解为几个素数的乘积,提示,由于该数不是很大,所以可以将质数保存在数组中,以加快计
算速度)
16.编写一个Identify的分配、释放的函数,为1-10000之间的自然数。
17.分别实现itoa和atoi.
18.Consider the following code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int i = 1;
char buf[4];
strcpy(buf, "AAAA");
printf("/t i = %d/n", i);
return 0;
}
结果:
i = 0
a) When compiled and executed on x86, why does this program usually not
output what the programmer intended?
b) Name several ways in which the security problem that causes this
program not to output what the programmer intended can be prevented
WITHOUT changing the code.
19.
void main( void )
{
int w=1, x=2, y=3, z=4;
int m;
m = (w < x) ? w : x;
m = (m < y) ? m : y;
m = (m < z) ? m : z;
printf("m = %d/n", m);
return;
}
结果:
m = 1
20.说出结果
#include <stdio.h>
void main()
// 文件重定位
{
FILE *fp;
int i;
int a[4] = {1, 2, 3, 4};
int b1, b2, b3, b4;
int s = sizeof(int);
fp = fopen("data.dat","wb");
for(i = 0; i < 4; i++)
{
fwrite(&a[i], sizeof(int), 1, fp);
}
fclose(fp);
fp = fopen("data.dat", "rb");
fseek(fp, -1 * s, SEEK_END);
fread(&b1, sizeof(int), 1, fp);
fseek(fp, -2 * s, SEEK_END);
fread(&b2, sizeof(int), 1, fp);
fseek(fp, -3 * s, SEEK_END);
fread(&b3, sizeof(int), 1, fp);
fseek(fp, -4 * s, SEEK_END);
fread(&b4, sizeof(int), 1, fp);
fclose(fp);
printf("b1 = %d/n", b1);
printf("b2 = %d/n", b2);
printf("b3 = %d/n", b3);
printf("b4 = %d/n", b4);
return;
}
结果:
b1 = 4
b2 = 3
b3 = 2
b4 = 1
21.有双向循环链表结点:
typedef struct node
{
int date;
struct node *front,*next;
}_Node;
有两个双向循环链表A,B,知道其头指针为:pHeadA,pHeadB,请写一函数将两上链表中d
ate值相同的结点删除
22.
char *GetStr()
{
char *tmp;
tmp = "123";
return tmp;
}
void main()
{
char *str = "0123";
printf("%s", GetStr());
printf("/n");
printf("%c/n", "0123"[0]);
printf("%c/n", "0123"[1]);
printf("%c/n", "0123"[2]);
printf("%c/n", "0123"[3]);
}
结果:
123
0
1
2
3
会输出123吗?123创建在堆上还是栈上呢?123的空间是什么时候释放的?
23.
字符指针、浮点数指针、以及函数指针这三种类型的变量哪个占用的内存最大?为什么?
类ClassB从ClassA派生,那么ClassA *a = new ClassB(…); 试问该表达是否合法?为什
么?
如果ClassA中定义并实现虚函数int func(void),ClassB中也实现该函数,那么上述变量
a->func()将调用哪个类里面的函数?如果int func(void)不是虚函数,情况又如何?为什
么?
char **p, a[16][8]; 问:p=a是否会导致程序在以后出现问题?为什么?
在同一个进程中,一个模块是否可以通过指针操作破坏其它模块的内存,为什么?
应用程序在运行时的内存包括代码区和数据区,其中数据区又包括哪些部分?
24.Assignment 2: Picture Processing
Use C++, Java, or similar languages or/and any middleware such as EJB and J2EE
to process a picture with a high resolution (3 Mega Pixels for example). Use
some methodologies to degrade the resolution of the picture to make it quick
er for browsing. Then divide the degraded picture into 9 sectors equally. Cli
ck any of the 9 sectors will result a detailed picture for this sector with t
he same resolution as that of the original picture. This assignment is design
ed for you to demonstrate your ability to handle pictures.
25.用<<,>>,|,&实现一个WORD(2个字节)的高低位交换!!
26.要开辟P1,P2,P3,P4内存来做缓冲,大小自定,但这四个缓冲的大小要一样,并且是连续的
27.有一浮点型数组A,用C语言写一函数实现对浮点数组A进行降序排序,并输出结果,要求要
以数组A作为函数的入口.(建议用冒泡排序法)
28.找错:
#include <string.h>
#include <stdio.h>
class Base
{
private:
char * name;
public:
Base(char * className)
{
name = new char[strlen(className)];
strcpy(name, className);
}
~Base()
{
delete name;
}
char * copyName()
{
char newname [256];
strcpy(newname, name);
return newname;
}
char * getName()
{
return name;
}
static void print(Base base)
{
printf("name: %s/n" , base.name);
}
};
class Subclass : public Base
{
public:
Subclass(char * className) : Base(className)
{
}
};
int main()
{
Base * pBase = new Subclass("test");
Base::print(*pBase);
printf("name: %s/n", pBase->getName());
printf("new name: %s/n", pBase->copyName());
return 0;
}
29.编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数的功能是
把接到的这组字符串转换成十进制数字.并将十进制数字返回.
30.编写一个函数将一条字符串分成两部分,将前半部分按ASCII码升序排序,后半部分不
变,(如果字符串是奇数则中间的字符不变,)最后再将前后两部分交换,然后将该字符
串输出,
测试字符串“ADZDDJKJFIEJHGI”
31.找错
Void test1()
{
char string[10];
char* str1="0123456789";
strcpy(string, str1);
}
Void test2()
{
char string[10], str1[10];
for(I=0; I<10;I++)
{
str1[i] ='a';
}
strcpy(string, str1);
}
Void test3(char* str1)
{
char string[10];
if(strlen(str1)<=10)
{
strcpy(string, str1);
}
}
32.
找错
#define MAX_SRM 256
DSN get_SRM_no()
{
static int SRM_no;
int I;
for(I=0;I{
SRM_no %= MAX_SRM;
if(MY_SRM.state==IDLE)
{
break;
}
}
if(I>=MAX_SRM)
return (NULL_SRM);
else
return SRM_no;
}
33.
写出程序运行结果
int sum(int a)
{
auto int c = 0;
static int b = 3;
c += 1;
b += 2;
return(a + b + c);
}
void main()
{
int i;
int a = 2;
for(i = 0; i < 5; i++)
{
printf("/t%d/n", sum(a));
}
}
结果:
8
10
12
14
16
34.
int func(int a)
{
int b;
switch(a)
{
case 1: b = 30;
case 2: b = 20;
case 3: b = 16;
default: b = 0;
}
return b;
}
void main()
{
int i;
int a = 2;
a = func(1);
printf("/n/ta = %d/n", a);
}
结果:
a = 0
(注意:case语句中缺少break)
35:
void main()
{
int i;
int a[3];
int *p, *q;
int result;
a[0] = 0;
a[1] = 1;
a[2] = 2;
p = a;
q = &a[2];
result = q - p;
printf("/n/t result = %d ", result);
result = a[q-p]; // q - p = 2
printf("/n/t result = %d /n", result);
}
结果:
result = 2
result = 2
36.
定义 int **a[3][4], 则变量占有的内存空间为:3 × 4 ×4 = 48
这是一个指向指针的指针数组(每个元素都是一个指向整型数的指针的指针)
37.
编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。如输入2004年12
月31日23时59分59秒,则输出2005年1月1日0时0分0秒。
38.写一个函数,判断一个int型的整数是否是2的幂,即是否可以表示成2^X的形式(不可
以用循环)
我只知道是用递推,大概写了一下,如下:
int IsTwoPow(int s)
{
if(s==1)return FALSE;
s=s>>1;
if(s>1)IsTwoPow(s);
return (s==1)?TRUE:FALSE;//大概是这个意思,但是这一句似乎不该这么返回!
}
39 A,B从一堆玻璃球(共100个)里向外拿球,规则如下:
(1)A先拿,然后一人一次交替着拿;
(2)每次只能拿1个或2个或4个;
(3)谁拿最后一个球,谁就是最后的失败者;
问A,B谁将是失败者?写出你的判断步骤。
40.已知:无序数组,折半查找,各元素值唯一。
函数原型是:Binary_Seach(int array[], int iValue, int iCount)
array是数组,在里面用折半查找的方法找等于iValue的值,找到返回1否则0,iCount是元
素个数
41.统计一个字符串中字符出现的次数
42.100位以上的超大整数的加法(主要考虑数据结构和加法的实现)。
43.对如下电文:"CASTCASTSATATATASA"给出Huffman编码。
44.int (* (*f)(int, int))(int)表示什么含义?
45.x=x+1,x+=1,x++,为这三个语句的效率排序。并说明为什么。
46.中缀表达式 A-(B+C/D)*E的后缀形式是什么?
47.struct S1
{
char c;
int i;
};
sizeof(S1) = ?
class X{
public:
X();
virtual ~X();
void myMemberFunc();
static void myStaticFunc();
virtual void myVirtualFunc();
private:
int i;
char * pstr;
char a;
}
sizeof(X) = ?
48.找出两个字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的最大子串为"acty
et"
49.有一百个整数,其中有负数,找出连续三个数之和最大的部分.
50.写一程序实现快速排序. 假设数据输入为一文件
快速算法描述如下
Algorithm Partition
Input: sequence a0, ..., an-1 with n elements
Output: permutation of the sequence such that all elements a0, ..., aj are les
s than or equal to all
elements ai, ..., an-1 (i > j)
Method:
choose the element in the middle of the sequence as comparison element x
let i = 0 and j = n-1
while ij
search the first element ai which is greater than or equal to x
search the last element aj which is less than or equal to x
if ij
exchange ai and aj
let i = i+1 and j = j-1
After partitioning the sequence, Quicksort treats the two parts recursively by
the same procedure.
The recursion ends whenever a part consists of one element only.
51.写一算法检测单向链表中是否存在环(whether there is a loop in a link list),
要求算法复杂度(Algorithm's complexity是O(n)) 并只使用常数空间(space is O(c)).
注意,你只知道一个指向单向链表头的指针。链表的长度是不定的,而且环出现的地方也
是不定的,环有可能在头,有可能在中间。而且要求是检测, 不能破坏环的结构.
52.设下列函数已经通过了调试
bool Sort_Array(ArrayType * Pinputarray, ArrayType * Poutarray);
该函数在内存中排序,能把字节数最大为100M字节的ArrayType类型的数组排序。其中Arr
ayType是一个预定义的数组类型(细节无关紧要),Pinputarray,Poutarray分别为排序前
的指针和排序后的指针。
请用c语言的伪码风格设计一个算法,他调用上面给出的函数完成下列从输入到输出的任务
:
输入:排序前的大文件,名称为char * pinoutfilename ,其内容为用分号分隔的ArrayT
ype类型的数组元素,可装满4个100M字节的数组。
输出:排序后的大文件char * poutoutfilename。
53.用最有效率的方法算出2乘以8等於几?
54.
1).错误的转义字符是 (C)
A.'/091' B.'//'
C.'/0' D.'/''
2).若数组名作实参而指针变量作形参,函数调用实参传给形参的是 (D)
A.数组的长度 B.数组第一个元素的值
C.数组所有元素的值 D.数组第一个元素的地址
3).变量的指针含意是指变量的 (B)
A.值 B.地址
C.存储 D.名字
5).某文件中定义的静态全局变量(或称静态外部变量)其作用域是 (B)
A.只限某个函数 B.本文件
C.跨文件 D.不限制作用域
55.
1. 解二次方程:a*x*x+b*x+c
int Quadratic( double a,double b,double c,double& x1,double& x2);
返回值:解的个数
2. 最大公约数
DWORD Divisor( DWORD dwFirst, DWORD dwSecond );
返回值:最大公约数
3. 根据蒙特卡洛算法计算圆周率
double PI( DOWRD dwCount/*测试次数*/ );
返回值:PI
4. 无符号整数乘法,乘数为32bit,结果为64bit
提示:32bit整数分解为16bit相乘
void Multiply( DWORD dwFirst, DWORD dwSecond, DWORD& dwHigh, DWORD& dwLower );
5. 链表排序(从小到大)
节点定义为:
struct Node{
int nValue;
struct Node* pNext;
};
最后一个节点的pNext = NULL.
Node* SortChain( Node* pHead );
返回值:链表头
改错并说明原因
file: 1.c
int a[10]={0};
file: 2.c
int
main ()
{
extern int *a;
printf ("%d/n", a[0]);
return 0;
}
1 #include “filename.h”和#include <filename.h>的区别?
2 头文件的作用是什么?
3 C++函数中值的传递方式有哪几种?
4 内存的分配方式的分配方式有几种?
5 实现双向链表删除一个节点P,在节点P后插入一个节点,写出这两个函数;
6 写一个函数,将其中的/t都转换成4个空格。
7 Windows程序的入口是哪里?写出Windows消息机制的流程.
8 如何定义和实现一个类的成员函数为回调函数?
9 C++里面是不是所有的动作都是main()引起的?如果不是,请举例.
10 C++里面如何声明const void f(void)函数为C程序中的库函数
11 下列哪两个是等同的
int b;
A const int* a = &b;
B const* int a = &b;
C const int* const a = &b;
D int const* const a = &b;
12 内联函数在编译时是否做参数类型检查
13 三个float:a,b,c
问值
(a+b)+c==(b+a)+c
(a+b)+c==(a+c)+b
14 把一个链表反向填空
15 设计一个重采样系统,说明如何anti-alias
16 某个程序在一个嵌入式系统(200M的CPU,50M的SDRAM)中已经最化了,换到另一个系统(
300M的CPU,50M的SDRAM)中运行,还需要优化吗?
17. 下面哪种排序法对12354最快
a quick sort
b.buble sort
c.merge sort
18. 哪种结构,平均来讲,获取一个值最快
a. binary tree
b. hash table
c. stack
19 请问C++的类和C里面的struct有什么区别?
20 构函数和虚函数的用法和作用?
21 全局变量和局部变量有什么区别?实怎么实现的?操作系统和编译器是怎么知道的?
22 一些寄存器的题目,主要是寻址和内存管理等一些知识。
23 8086是多少尉的系统?在数据总线上是怎么实现的?
24 多态。overload 和 override的区别。
25.完成下列程序<<Sony笔试题>>
*
*.*.
*..*..*..
*...*...*...*...
*....*....*....*....*....
*.....*.....*.....*.....*.....*.....
*......*......*......*......*......*......*......
*.......*.......*.......*.......*.......*.......*.......*.......
#include <stdio.h>
#define N 8
int main()
{
int i;
int j;
int k;
return 0;
}
26 完成程序,实现对数组的降序排序
#include <stdio.h>
void sort();
int main()
{
int array[]={45,56,76,234,1,34,23,2,3}; //数字任意给出
sort();
return 0;
}
27 费波那其数列,1,1,2,3,5……编写程序求第十项。可以用递归,也可以用其他方
法,但要说明你选择的理由。
#include <stdio.h>
int Pheponatch(int);
int main()
{
printf("The 10th is %d",Pheponatch(10));
return 0;
}
28 下列程序运行时会崩溃,请找出错误并改正,并且说明原因。
#include <stdio.h>
#include <malloc.h>
typedef struct
{
TNode* left;
TNode* right;
int value;
} TNode;
TNode* root=NULL;
void append(int N);
int main()
{
append(63);
append(45);
append(32);
append(77);
append(96);
append(21);
append(17); // Again, 数字任意给出
}
void append(int N)
{
TNode* NewNode=(TNode *)malloc(sizeof(TNode));
NewNode->value=N;
if(root==NULL)
{
root=NewNode;
return;
}
else
{
TNode* temp;
temp=root;
while((N>=temp.value && temp.left!=NULL) || (N<temp. value && temp. right!=
NULL
))
{
while(N>=temp.value && temp.left!=NULL)
temp=temp.left;
while(N<temp.value && temp.right!=NULL)
temp=temp.right;
}
if(N>=temp.value)
temp.left=NewNode;
else
temp.right=NewNode;
return;
}
}
29. A class B network on the internet has a subnet mask of 255.255.240.0, what
is the maximum number of hosts per subnet.
a. 240
b. 255 c. 4094 d. 65534
30. What is the difference: between o(log n) and o(log n^2), where both logari
thems have base 2.
a. o(log n^2) is bigger
b. o(log n) is bigger
c. no difference
31. For a class what would happen if we call a class’s constructor from with
the same class’s constructor.
a. compilation error
b. linking error
c. stack overflow
d. none of the above
32. “new” in c++ is a:
a. library function like malloc in c
b. key word
c. operator
d. none of the above
33. Which of the following information is not contained in an inode
.
a. file owner
b. file size
c. file name
d. disk address
34.What’s the number of comparisons in the worst case to merge two sorted li
sts containing n elements each.
a. 2n
b.2n-1 c.2n+1 d.2n-2
35.Time complexity of n algorithm T(n), where n is the input size ,is T(n)=T(
n-1)+1/n if n>1 otherwise 1 the order of this algorithm is:
a. log (n)
b. n c. n^2 d. n^n
36.The number of 1’s in the binary representation of 3*4096+ 15*256+5*16+3 are:
a. 8
b. 9 c. 10 d. 12
37.设计函数 int atoi(char *s)。
38.int i=(j=4,k=8,l=16,m=32);
printf(“%d”, i);
输出是多少? 32
39.解释局部变量、全局变量和静态变量的含义。
40.解释堆和栈的区别。
41.论述含参数的宏与函数的优缺点。
42. 以下三条输出语句分别输出什么?[C易]
char str1[]
= "abc";
char str2[]
= "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char* str5 = "abc";
const char* str6 = "abc";
cout << boolalpha << ( str1==str2 ) << endl; // 输出什么?
cout << boolalpha << ( str3==str4 ) << endl; // 输出什么?
cout << boolalpha << ( str5==str6 ) << endl; // 输出什么?
43. 非C++内建型别 A 和 B,在哪几种情况下B能隐式转化为A?[C++中等]
答:
a. class B : public A { ……} // B公有继承自A,可以是间接继承的
b. class B { operator A( ); } // B实现了隐式转化为A的转化
c. class A { A( const B& ); } // A实现了non-explicit的参数为B(可以有其他带默认
值的参数)构造函数
d. A& operator= ( const A& ); // 赋值操作,虽不是正宗的隐式类型转换,但也可以勉
强算一个
44. 以下代码中的两个sizeof用法有问题吗?[C易]
void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
{
for( size_t i=0; i<sizeof(str)/sizeof(str[0]); ++i )
if( 'a'<=str[i] && str[i]<='z' )
str[i] -= ('a'-'A' );
}
char str[] = "aBcDe";
cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;
UpperCase( str );
cout << str << endl;
45. 以下代码有什么问题?[C难]
void char2Hex( char c ) // 将字符以16进制表示
{
char ch = c/0x10 + '0'; if( ch > '9' ) ch += ('A'-'9'-1);
char cl = c%0x10 + '0'; if( cl > '9' ) cl += ('A'-'9'-1);
cout << ch << cl << ' ';
}
char str[] = "I love 中国";
for( size_t i=0; i<strlen(str); ++i )
char2Hex( str[i] );
cout << endl;
46. 以下代码有什么问题?[C++易]
struct Test
{
Test( int ) {}
Test() {}
void fun() {}
};
void main( void )
{
Test a(1);
a.fun();
Test b();
b.fun();
}
47. 以下代码有什么问题?[C++易]
cout << (true?1:"1") << endl;
8. 以下代码能够编译通过吗,为什么?[C++易]
unsigned int const size1 = 2;
char str1[ size1 ];
unsigned int temp = 0;
cin >> temp;
unsigned int const size2 = temp;
char str2[ size2 ];
48. 以下代码中的输出语句输出0吗,为什么?[C++易]
struct CLS
{
int m_i;
CLS( int i ) : m_i(i) {}
CLS()
{
CLS(0);
}
};
CLS obj;
cout << obj.m_i << endl;
49. C++中的空类,默认产生哪些类成员函数?[C++易]
答:
class Empty
{
public:
Empty(); // 缺省构造函数
Empty( const Empty& ); // 拷贝构造函数
~Empty(); // 析构函数
Empty& operator=( const Empty& ); // 赋值运算符
Empty* operator&(); // 取址运算符
const Empty* operator&() const; // 取址运算符 const
};
50. 以下两条输出语句分别输出什么?[C++难]
float a = 1.0f;
cout << (int)a << endl;
cout << (int&)a << endl;
cout << boolalpha << ( (int)a == (int&)a ) << endl; // 输出什么?
float b = 0.0f;
cout << (int)b << endl;
cout << (int&)b << endl;
cout << boolalpha << ( (int)b == (int&)b ) << endl; // 输出什么
51. 以下反向遍历array数组的方法有什么错误?[STL易]
vector array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 3 );
for( vector::size_type i=array.size()-1; i>=0; --i ) // 反向遍历array数组
{
cout << array[i] << endl;
}
52. 以下代码有什么问题?[STL易]
typedef vector IntArray;
IntArray array;
array.push_back( 1 );
array.push_back( 2 );
array.push_back( 2 );
array.push_back( 3 );
// 删除array数组中所有的2
for( IntArray::iterator itor=array.begin(); itor!=array.end(); ++itor )
{
if( 2 == *itor ) array.erase( itor );
}
53. 写一个函数,完成内存之间的拷贝。[考虑问题是否全面]
答:
void* mymemcpy( void *dest, const void *src, size_t count )
{
char* pdest = static_cast<char*>( dest );
const char* psrc = static_cast<const char*>( src );
if( pdest>psrc && pdest<psrc+cout ) 能考虑到这种情况就行了
{
for( size_t i=count-1; i!=-1; --i )
pdest[i] = psrc[i];
}
else
{
for( size_t i=0; i<count; ++i )
pdest[i] = psrc[i];
}
return dest;
}
int main( void )
{
char str[] = "0123456789";
mymemcpy( str+1, str+0, 9 );
cout << str << endl;
system( "Pause" );
return 0;
}
54:线程与进程的区别。
55:请你分别划划OSI的七层网络结构图,和TCP/IP的五层结构图?
56:请你详细的解释一下IP协议的定义,在哪个层上面,主要有什么作用? TCP与UDP呢?
57:请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?
58:请问C++的类和C里面的structure有什么区别?
59:析构函数和虚函数的用法和作用?
60:全局变量和局部变量有什么区别?怎么实现的?操作系统和编译器是怎么知道的?
61:一些寄存器的题目,主要是寻址和内存管理等一些知识。
62:8086是多少位的系统?在数据总线上是怎么实现的?
63:怎样用最快的方法判断链表是否有环? (IBM)
64:c++中引用和指针有什么不同?指针加上什么限制等于引用?
65:做的项目,遇到的困难,怎样解决?
66:在房里有三盏灯,房外有三个开关,在房外看不见房内的情况,你只能进门一次,你用什么
方法来区分那个开关控制那一盏灯.
67:有两根不均匀分布的香,每根香烧完的时间是一个小时,你能用什么方法来确定一段15分钟的时间。
68:一个经理有三个女儿,三个女儿的年龄加起来等于13,三个女儿的年龄乘起来等于经理自
己的年龄,有一个下属已知道经理的年龄,但仍不能确定经理三个女儿的年龄,这时经理说只
有一个女儿的头发是黑的,然后这个下属就知道了经理三个女儿的年龄.请问三个女儿的年
龄分别是多少?为什么?
69:操作符重载
class CMyObject:pulic CObject
{
Public:
CMyObject();
CMyObject &operator=(const CMyObject &my);
private:
CString strName;
int nId:
};
请重载赋值操作符
70:链表
Struct structList
{
int value;
structList *pHead;
}
Struct LinkedList *pMyList;
请编写删除链表的头、尾和第n个节点的程序。
1:#include “filename.h”和#include <filename.h>的区别?
#include “filename.h” 表明该文件是用户提供的头文件,查找时从当前文件目录开始;
#include <filename.h> 表明该文件是一个工程或标准头文件,查找时首先系统目录。
2:头文件的作用是什么?
1) 通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只
要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功
能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。
2) 头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的
声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。
3:C++中函数值的传递方式有哪几种?
答:值传递、指针传递和引用传递。
4:内存分配的方式有几种?
1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的
整个运行期间都存在。例如全局变量。
2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执
行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高
,但是分配的内存容量有限。
3) 从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内
存,程序员自己负责在何时用free或delete释放内存。动态内存的生存期由我们决定,使
用非常灵活,但问题也最多。
交换两个数,不用第三块儿内存!请问怎么实现?
现有12个小球,其中只有1个球与其它的球重量不同(即有11个球重量全相同),并且不知道这个跟其它球重量不同的球是重还是轻(跟其他11个重量相同的球相比而言),那么从这12个球中找出这个跟其它球重量不同的球。