《ASCE1885的IT笔试面试题》---0000 0002
2010-07-18 15:20
399 查看
据传是《中软国际2009校园招聘》笔试题(有改动by ASCE1885):
1)Swap two variables without using third variable?
解答:一开始容易陷入误区,认为交换必须通过移动变量来实现,因而少不了要用第三个变量,仔细想想,却有以下几种方法可以实现呢,基本思想是进行代数运算或逻辑上的变换(这里仅以基本内置类型int变量为例):
(1)简单的加法和减法运算:
函数形式:
void swap(int &a, int &b)
{
a += b;
b = a-b;
a = a-b;
}
宏定义:
#define swap(a, b) a+=b;b=a-b;a=a-b;
(2)异或方法,异或的特性是连续跟一个数异或两次得到的是它自身:
函数形式:
void swap(int &a, int &b)
{
a = a^b;
b = a^b; //相当于a连续跟b异或两次,即是a
a = a^b; //相当于b连续跟a异或两次,即是b
}
宏定义:
#define swap(a,b) a=a^b;b=a^b;a=a^b;
(3)带乘除的方法,此方法效率较低,乘除嘛!
函数形式:
void swap(int &a, int &b)
{
a = a+b;
b = a - 2*b;
a = (a-b)/2;
b = a+b;
}
宏定义:
#define swap(a, b) a=a+b;b=a-2*b;a=(a-b)/2;b=a+b;
2)what is wrong with the call fopen(“C:/newdir/file.dat”, “r”)?
解答:应该改为:fopen("C://newdir//file.dat", "r");
3)what is wrong with the following code?
char *p;
*p = malloc(10);
解答:应改为:
char *p;
p = (char*)malloc(10);
4)will the following program execute?
void main()
{
void* vptr = (void*)malloc(sizeof(void));
vptr++;
}
解答:不会,编译通不过,sizeof不能跟void;同时标准C++禁止对void指针进行增减操作。
5)以下程序运行结果是什么?
#include<iostream>
int main()
{
char a[] = "hello";
char *p = a;
std::cout<<sizeof(a)<<std::endl;
std::cout<<sizeof(p)<<std::endl;
std::cout<<strlen(a)<<std::endl;
std::cout<<strlen(p)<<std::endl;
system("pause");
return 0;
}
解答:6 4 5 5,当然是每行一个数了。
1)Swap two variables without using third variable?
解答:一开始容易陷入误区,认为交换必须通过移动变量来实现,因而少不了要用第三个变量,仔细想想,却有以下几种方法可以实现呢,基本思想是进行代数运算或逻辑上的变换(这里仅以基本内置类型int变量为例):
(1)简单的加法和减法运算:
函数形式:
void swap(int &a, int &b)
{
a += b;
b = a-b;
a = a-b;
}
宏定义:
#define swap(a, b) a+=b;b=a-b;a=a-b;
(2)异或方法,异或的特性是连续跟一个数异或两次得到的是它自身:
函数形式:
void swap(int &a, int &b)
{
a = a^b;
b = a^b; //相当于a连续跟b异或两次,即是a
a = a^b; //相当于b连续跟a异或两次,即是b
}
宏定义:
#define swap(a,b) a=a^b;b=a^b;a=a^b;
(3)带乘除的方法,此方法效率较低,乘除嘛!
函数形式:
void swap(int &a, int &b)
{
a = a+b;
b = a - 2*b;
a = (a-b)/2;
b = a+b;
}
宏定义:
#define swap(a, b) a=a+b;b=a-2*b;a=(a-b)/2;b=a+b;
2)what is wrong with the call fopen(“C:/newdir/file.dat”, “r”)?
解答:应该改为:fopen("C://newdir//file.dat", "r");
3)what is wrong with the following code?
char *p;
*p = malloc(10);
解答:应改为:
char *p;
p = (char*)malloc(10);
4)will the following program execute?
void main()
{
void* vptr = (void*)malloc(sizeof(void));
vptr++;
}
解答:不会,编译通不过,sizeof不能跟void;同时标准C++禁止对void指针进行增减操作。
5)以下程序运行结果是什么?
#include<iostream>
int main()
{
char a[] = "hello";
char *p = a;
std::cout<<sizeof(a)<<std::endl;
std::cout<<sizeof(p)<<std::endl;
std::cout<<strlen(a)<<std::endl;
std::cout<<strlen(p)<<std::endl;
system("pause");
return 0;
}
解答:6 4 5 5,当然是每行一个数了。
相关文章推荐
- 两种方法输出以下内容''' 0000 0001 0002 0003 0004 0005 0006 0007 0008 0009 '''
- 使用列表解析式输出以下结果 ''' ['0000', '0001', '0002', '0003', '0004', '0005', '0006', '0007', '0008', '0009'] '
- 【c++】输出 0000,0001,0002,0003,0004...这样的字符串
- 上传图片对路径“ImageFile/B-0000-0002”的访问被拒绝。
- 检索COM类工厂中CLSID为{000209FF-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005
- Node.js笔记(0002)---connect模块
- 检索 COM 类工厂中 CLSID 为{00024500-0000-0000-C000-000000000046} 的组件时失败
- MySQL 存储过程传参数实现where id in('40288c81494f088601494f92938d0002,40288c81494f088601494f92938d0012,')示例
- python PIL --show me the code 0000
- java的Timestamp时间插入mysql的datetime字段是0000-00-00 00:00:00
- 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败
- 0002cpp文件与h文件
- 0002算法笔记——【递归】排列问题,整数划分问题,Hanoi问题
- BUG现象与对应0002 JS改值取不到
- 【工作笔记0000】VS2012关闭解决方案或是切换最近方案导致停止工作
- Cannot convert value '0000-00-00 00:00:00' from column 1 to TIMESTAMP解决办法
- SQLException:value '0000-00-00' can not be represended as java.sql.TimeStamp
- 0002.函数定义、控制流程、异常处理
- IIS Excel操作问题解决 Retrieving the COM class factory for component with CLSID {00024500-0000-000
- 练习0002 switch