几道编程题目

2011年05月20日


(以下题目皆不得始用已有库函数)
1. 不另申请变量,交换两个整型变量,要求两种方法。
2. 不另申请变量,统计指定字符串的长度。
3. 不用if、三目运算符以及其它条件判断语句,写一个求两个数中较大值的函数。

答案在这里:

第一道有两种解法
1、就是你说的算术法:
a = a + b;
b = a – b;
a = a – b;
2、用异或的方法:
a = a^b;
b = a^b;
a = a^b;

第二道题的两种方法:
1、递归
int GetLength( char *p )
{
return ( 0 == *p ? 0 : 1 + GetLength( p + 1 ) );
}

2、循环
char* Travel( char *p )
{
while( *(p++) );
return p – 1;
}
void main()
{
char* szTest = “sqlite”;
int length = (int)(Travel(szTest)-szTest);
}

第三道题的方法:
数组法
int Max( int a, int b )
{
int nResult[3] = { b, b, a };
return nResult[ ( (a – b) * 2 + 1 ) % 2 + 1 ];
}