面试归来,发现一道很有意思的题目,是考思维发散的,其实不难,我当时是考懵了,只给出最笨的方法,大家可以一起再想想还有没有其它方法。
题目:用C语言写一个函数,要求输入为1时,输出为2;输入为2时,输出为1.
我当时明知道以下的方法不是最好的,可是愣没有其它想法...
方法1:
int func(int x)
{
if(x==1) return 2;
else if(x==2) return 1;
return 0; //if (x!=1 && x!=2 )
}
(后来提示:输入只有两种情况1或者2)
我改写了函数:
方法1‘
int func(int x)
{
if(x==1) return 2;
return 1;
}
经过提示,还有很多其它方法实现:
方法2:
int func(int x)
{
return (3-x);
}
方法3:
int func(int x)
{
int out[2] = {2,1};
return out[x-1]; //or *(out+x-1);
}
.......
你有什么方法吗?