C數據相關操作
一、交換兩個數據
方法二省去了中間變量。
- 方法一
void SwapData(int &a,int &b)
{
int temp=0
temp = *a;
*a = *b;
*b = temp;
}
2.方法二
void SwapData(int &a,int &b)
{
*a = *a+*b;
*b = *a-*b;
*a = *a-*b;
}
二、數組對稱交換
輸入:
buf[]={1,2,3,4,5}
輸出:buf[]={5,4,3,2,1}
/****************************************
* @brief : 數組對稱交換
* @param : 輸入數組
* @param : 輸入數據長度
* @return: none
*****************************************/
void InversionArray(int *buf,int len)
{
int i=0;
for(i=0;i<len/2;len++)
{
buf[i] = buf[i]+buf[len-1];
buf[len-1] = buf[i]-buf[len-1];
buf[i] = buf[i]-buf[len-1];
}
}
三、字符串對稱交換
輸入:
"abcdefg"
輸出:gfedcba
/****************************************
* @brief : 字符串對稱交換
* @param : 輸入/輸出 字符串
* @return: true/false
*****************************************/
int InversionString(unsigned char *str)
{
unsigned int i=0,len=0;
if(str == NULL)
{
return false;
}
len=0;
while (str[len] != '\0')
{
len++;
}
//注意:len爲字符串的長度,但是下標是以str[0]開始計算
//所以字符串最後一個有效數據爲str[len-i-1]
for(i=0; i<len/2; i++)
{
str[i] = str[i]+str[len-i-1];
str[len-i-1] = str[i]-str[len-i-1];
str[i] = str[i]-str[len-i-1];
}
return true;
}
四、數字轉字符串
輸入:
int num=12234
輸出:"12234"
/****************************************
* @brief : 數字轉字符串
* @param : 輸入數字(long)
* @param : 輸出字符串
* @return: true/false
*****************************************/
int NumberToString(long number, unsigned char *string)
{
int i=0, j=0;
if(number<0) //判斷是否爲負數
{
number = -number; //轉換爲正數
*string = '-'; //增加負號
string++; //字符串向後移動
}
while(number) //按序寫入字符串
{
string[j++] = number%10+'0';
number /= 10;
}
for(; i<j/2; i++) //對稱交換
{
string[i] = string[i]+string[j-i-1];
string[j-i-1] = string[i]-string[j-i-1];
string[i] = string[i]-string[j-i-1];
}
string[j] = '\0'; //結尾增加結束符
return true;
}