C數據相關操作

C數據相關操作

一、交換兩個數據

方法二省去了中間變量。

  1. 方法一
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;
}

五、字符串轉數字

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章