(2~32)任意十进制数据转换 [数组的一此基本应用, 刚体会的^_^]
以下是偶写的一段代码,用来转换十进制数据.
程序代码:
#include "stdio.h"
/*------------------------------------------------------------------------------------------
* 任意进制转换(-32~+32)(六十四进制)
*-----------------------------------------------------------------------------------------*/
const char thr[]={'T','0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','P','Q','R','S','T','U','V','W','X','Y','Z'};
const long ArrayInt( const long a, const int mode, long bin[] )
{
int i=0,j=a>0?a:-a,p=a>0?1:-1;long arr=0;
/*--------------------
数组下标0,用来记录符号
--------------------*/
bin[0]=p;
/*--------------------
进制转换,并保存在数组中
--------------------*/
while(j)
{
i++;
bin[i]=j%mode;
j=j/mode;
}
arr=i;
/*--------------------
以下是打印输出的结果
--------------------*/
if(bin[0]==-1) printf("-");
for(;i>=1;i--)
{
printf("%c",thr[bin[i]+1]);
}
/*--------------------
传回数组的最大下标值
--------------------*/
return arr;
}
int main(void)
{
/*声明一个缓存数组*/
long bin[1000]={0};
int i=0,mode=1,value=0;
printf("Please enter a integer value: ");
scanf("%d",&value);
while( mode <= 1)
{
printf("\nPlease seclect convert mode(2~32): ");
scanf("%d",&mode);
if(mode <=1) printf("\nConvert Mode is false!");
}
i=ArrayInt(value,16,bin);
if(bin[0]==-1) printf("\n-");
for(;i>=1;i--)
{
printf("%c",thr[bin[i]+1]);
}
return 0;
}
总结:
学到数组时,就有些疑惑了,一直在学习数组的一些用法,比如常见的矩阵,字符逆向输入等等. 不过在看了某个大哥的"数组分解整数"的概念后, 就有些眉目了. 数组的用法, 也体会得更深一些. 我写的代码中, 就采用了使用数组来分解整数, 这样就可以实现高位整数的输入, 非常实用.






