1. 程式人生 > >Linuxc基礎 十一

Linuxc基礎 十一

今天做了一道加密和解密的題我感覺很難。
程式碼

程式碼題目:某個公司採用公用電話傳遞資料資訊,資料是小於8位的整數,為了確保安全,在傳遞過程中需要加密,加密規則如下:
首先將資料倒序,然後將每位數字都加上5,再用和除以10的餘數代替該數字,最後將第一位和最後一位數字交換。 請任意給定一個小於8位的整數,然後,把加密後的結果在控制檯打印出來

#include <stdio.h>

int  my_shuzu(int num,int array[])
{
	int len = 0;
	int i = 0;
	while(num)
	{
		array[i] = num % 10;
		num /= 10;
		++i;
		++len;
		array[i];
	}
	return len;
	

}

//加密程式碼
void JiaMi(int array[], int len)
{
	int i;
	int temp;
	for(i=0;i<len;++i)
	{
		temp= array[i]+5;
		array[i]=temp % 10;
		
	
	}
	temp = array[len-1];
    array[len-1] = array[0];
    array[0] = temp;
	for (i = 0; i < len; ++i)
    {
        printf("%d", array[i]);
    }
	printf("\n");
}

//解密程式碼
void  JieMi(int *pb,int len2)
{
	int num1;
	int temp;
	int i;
	temp = pb[len2-1];
    pb[len2-1] = pb[0];
    pb[0] = temp;

	for(i=0;i<len2;++i)
	{
		if(pb[i]<=5)
		{
			pb[i]+=5;
		}
		else if(pb[i]>5)
		{
			pb[i]-=5;
		}
		
		
	}
	
	for(i=0;i<len2;++i)
	{
	
		printf("%d",pb[i]);
	}
	printf("\n");
	num1=pb[len2-1];
	for(i=len2-1;i>0;i--)
	{
		
		num1=pb[i-1]+10*num1;
	
	}
	printf("%d\n",num1);
	

	
	

	
}
int main()
{
	int array[8] = {0};
	int num=12345678;
	int len1=my_shuzu(num,array);
	
	JiaMi(array,len1);
	
	JieMi(array,len1);
	
}

總結
今天寫的這個程式對我來說還是有點難度的,但是我還是堅持的把功能實現了。這個程式寫的有點複雜和不規範,我以後會繼續改進的我覺得這個程式很考驗我對函式的使用情況。