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));