面试宝典

Q1:下列语句正误?why?

int main(){

char* pch="kinghz";

*pch='q';

return 0;

}

int main(){

char pch[]="kinghz";

*pch='q';

return 0;

}

 

Q2:不用判断语句求整数a,b较大值。

 

A:

http://topic.csdn.net/u/20081019/15/d51bf769-8ce0-4e3d-b78a-cc402f08c7fd.html

/数轴上画一下,(a + b)表示两个a加上a和b之间的差值,之后加上 abs(a -b) ,就是两个最大值。

  int bigger(int a,int b){

return ((a + b) + abs(a -b))/2;

// return return ((a/b)*a + (b/a)*b)/(a/b+b/a);

}

 

abs(a-b)= a&b - a|b;

 

如果<和>不算判断的话,下面的也行。

以下是代码片段:

int max(int a, int b)
{
int pair[2];
pair[0]=a;
pair[1]=b;
return pair[(a<b)];
}


Q3:让电脑发声。

 

A:   prinf("/0x7");

 

Q4:用一行代码交换a和b的值

 

A:

转自 http://cookinglinux.cn/one-line-change-a-and-b.html

直接这样问你,你可能一时想不到答案,不过我们可以把问题拆分出来看。

现有两个变量a与b,请用代码实现a与b的值相互交换。

你肯定会说,这是一个简单得不能再简单的问题了,使用一个中间变量tmp直接进行交换就行了。高级一点就使用指针交换。

那好,如果要求你不允许使用tmp变量就进行交换 ,你会怎么做?

我唯一想到的就是把a”藏”在b里边,就像这样:

a += b;
b = a - b;
a -= b;

可能你更喜欢异或:

a ^= b;
b ^= a;
a ^= b;

离答案越来越近了,现在要求你,只用一行代码交换a,b的值。

可以使用替换法,就像这样:

a -= (b = (a += b) - b);

a ^=(b ^= (a ^= b));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜猫逐梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值