C任意进制转换程序_第1页
C任意进制转换程序_第2页
C任意进制转换程序_第3页
C任意进制转换程序_第4页
C任意进制转换程序_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C 任意进制转换程序C 语言写的一个任意进制转换的程序,不使用库提供的 转换函数 . / : 定义控制台应用程序的入口点Z for exit): n);if(!GetScale(temparray) return false;输入目标数*scale_in = atoi(temparray); return true; bool GetObjectScale(int * scale_out) /*据进制 */ char temparrayWIDTH;memset(temparray,0x00,sizeof(temparray);printf(Input object data scale and

2、 press Enter key(one of 2,8,10,16. Z for exit): n);if(!GetScale(temparray) return false;*scale_out = atoi(temparray); return true; bool GetData(char data,int CONCOUNT,int flg) /*输入数据 */ int i,icount;char c;char *p;bool spaceFlag; i = 0;icount = 0;spaceFlag = true;while (c = getchar() != 0x0a)if (spa

3、ceFlag & c = CHAR_SPACE) /*去掉前空格 */去掉后空格 */continue; if (!spaceFlag & c = CHAR_SPACE) /* icount+;continue;else if (icount 0) if (flg)n);/* 输入进制或者源数据时,中间有空格,则重新输入*/CleanScreen();printf(ERROR! Please input again(Z for exit):i = 0;icount = 0;spaceFlag = true;fflush(stdin);continue;elsebreak; if (i = CO

4、NCOUNT - 1) /*判断是否输入数据过长*/if (flg)CleanScreen();printf(ERROR! Too many input again(Z for exit): n);memset(data,0x00,sizeof(data);fflush(stdin);i = 0;continue;else break; if (c = CHAR_0 & !strcmp(data,STRING_0) continue; datai = c;i+;spaceFlag = false; datai = 0; p = data;if (*p = CHAR_0 & strlen(p)

5、1) p+;strcpy(data,p); if (strlen(data) & !strcmp(data,STRING_Z)return false;return true; /* 输入数据进制 */ bool GetScale(char temp) int i,num,kbn_flg;char scalewidthWIDTH;char * s;bool flag; kbn_flg = 1;flag = false; while (!flag) memset(scalewidth,0x00,sizeof(scalewidth);输入数据 */判断是否输入数据 */memset(temp,0x

6、00,sizeof(temp); if (!GetData(scalewidth,WIDTH,kbn_flg) /* return false;s = scalewidth; if (!strlen(s) /*CleanScreen();printf(ERROR! Please input the scale(one of 2,8,10,16.Z for exit): n);continue; i = 0;判断是否输入整数while (*s) if (*s = CHAR_0 & *s = CONST_2 & in_scale = CONST_10) &( CHAR_0 = *s & *s in

7、_scale + CHAR_0) inputdatai = *s;i+;s+;flag = true;else if (in_scale = CONST_16) & (CHAR_0 = *s & *s = CHAR_9) | (CHAR_A = *s & *s = in_scale + CHAR_A - CONST_10 - 1) | (CHAR_a = *s & *s (double)MAX)CleanScreen();printf(ERROR! The input is not available!Please again(less than );switch (in_scale) cas

8、e CONST_2: printf(32 bits 1.);break;case CONST_8: printf(777.);break;case CONST_10:printf(95.);break;case CONST_16:printf(8 bits F or f.);break;printf( Z for exit): n);flag = false;continue;return true; /* 其他进制转换为十进制 */ double OtherToDeci(int scale_in,char inputdata) int i,len,midint;double middbl,t

9、emp; len = strlen(inputdata);temp = ; for(i = 0;i len; i+) midint = inputdatai; if ( CHAR_0 = midint & midint = CHAR_9 ) midint = midint - CHAR_0; /*0-9*/ else if ( CHAR_A = midint & midint CONST_9) outputdatan = m + CHAR_A - CONST_10;outputdatan = m + CHAR_0;deci = deci / scale_out;n+; for (m = 0;

10、m = n / 2 - 1; m+) /*反序得到目标数据*/char t;t = outputdatam;outputdatam = outputdatan - 1 - m;outputdatan - 1 - m = t;outputdatan = 0; void PutSource(char inputdata) /*输出源数据 */int k;if (!strcmp(inputdata,STRING_0) /*源数据为 0*/printf(The source data is: 0)n);printf(The source data is: );for( k = 0; k strlen(

11、inputdata); k+ ) printf(%c,inputdatak);printf()n); void ScaleChange(int scale_in,char inputdata,intscale_out,char outputdata) /*进制转换*/int k;unsigned long deci; deci = 0; if(scale_in= scale_out)/* 原数据进制和目标数据进制相同,不用转换*/if (!strcmp(inputdata,STRING_0) printf(The object data is: n0n);else printf(The obj

12、ect data is: n);for( k = 0; k strlen(inputdata); k+ )printf(%c,inputdatak);printf(n);PutSource(inputdata);elseif (scale_in = CONST_10)deci = atol(inputdata); /*源数据是十进制,直接转换为进制数 */elsedeci = (unsigned long)OtherToDeci(scale_in,inputdata);/* 其他进制转换为十进制 */ if (scale_out = CONST_10) /*如果目标进制是十进制,直接输出十进制数 */printf(The object data is: n%u n,deci);elseif (!deci) /*源数据为 0*/printf(The object data is: n0n);进制转换elseDeciToOther(deci,scale_out,outputdata); /*为其他进制 */ printf(The object data is: n); /*出转换后结果 */ for(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论