(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; }
总结:
学到数组时,就有些疑惑了,一直在学习数组的一些用法,比如常见的矩阵,字符逆向输入等等. 不过在看了某个大哥的"数组分解整数"的概念后, 就有些眉目了. 数组的用法, 也体会得更深一些. 我写的代码中, 就采用了使用数组来分解整数, 这样就可以实现高位整数的输入, 非常实用.