C任意进制转换程序Word文件下载.docx
《C任意进制转换程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《C任意进制转换程序Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
#defineCHAR_9'
9'
#defineCHAR_A'
A'
#defineCHAR_a'
a'
#defineCHAR_Z'
Z'
#defineCHAR_SPACE'
'
#defineSTRING_0"
0"
#defineSTRING_Z"
Z"
boolScale();
boolGetSourceScale(int*scale_in);
boolGetObjectScale(int*scale_out);
doubleOtherToDeci(intscale_in,charinputdata[]);
voidDeciToOther(unsignedlongdeci,intscale_out,charoutputdata[]);
boolGetData(chardata[],intCONCOUNT,intflg);
boolGetScale(chartemp[]);
boolGetSource(intin_scale,charinputdata[]);
voidScaleChange(intscale_in,charinputdata[],intscale_out,charoutputdata[]);
voidCleanScreen();
int_tmain(intargc,_TCHAR*argv[])
{intflg=0;
charcs[WIDTH];
memset(cs,0x00,sizeof(cs));
while
(1)
{
printf("
-----------------------------------------------------------------\n"
);
DataTransformBetweenTwoScales\n"
----------------------------------------\n"
/*进制转换主函数*/
if(!
Scale())
break;
}printf("
inputanykeyandpress'
Enter'
keytocontinue,'
forexit:
"
GetData(cs,WIDTH,flg))/*判断是否继续执行下一次转换*/
}
system("
cls"
/*清屏*/
}return0;
}boolScale()
intscale_in,scale_out;
charinputdata[DATAWIDTH];
charoutputdata[DATAWIDTH];
/*输入源数据进制*/
GetSourceScale(&
scale_in))
returnfalse;
}/*输入源数据*/
GetSource(scale_in,inputdata))
}/*输入目标数据进制*/
GetObjectScale(&
scale_out))
}/*进行进制转换*/
ScaleChange(scale_in,inputdata,scale_out,outputdata);
returntrue;
}boolGetSourceScale(int*scale_in)/*输入源数据进制*/
chartemparray[WIDTH];
memset(temparray,0x00,sizeof(temparray));
printf("
Inputsourcedatascaleandpress'
key(oneof2,8,10,16.'
forexit):
\n"
GetScale(temparray))
*scale_in=atoi(temparray);
}boolGetObjectScale(int*scale_out)/*输入目标数据进制*/
Inputobjectdatascaleandpress'
*scale_out=atoi(temparray);
}boolGetData(chardata[],intCONCOUNT,intflg)/*输入数据*/
inti,icount;
charc;
char*p;
boolspaceFlag;
i=0;
icount=0;
spaceFlag=true;
while((c=getchar())!
=0x0a)
if(spaceFlag&
&
c==CHAR_SPACE)/*去掉前空格*/
continue;
}if(!
spaceFlag&
c==CHAR_SPACE)/*去掉后空格*/
icount++;
elseif(icount>
0)
if(flg)
CleanScreen();
ERROR!
Pleaseinputagain('
/*输入进制或者源数据时,中间有空格,则重新输入*/
i=0;
fflush(stdin);
else
}if(i==CONCOUNT-1)/*判断是否输入数据过长*/
Toomanycharacters.Pleaseinputagain('
memset(data,0x00,sizeof(data));
}if(c==CHAR_0&
!
strcmp(data,STRING_0))
}data[i]=c;
i++;
spaceFlag=false;
}data[i]='
\0'
;
p=data;
if(*p==CHAR_0&
strlen(p)>
1)
p++;
strcpy(data,p);
if(strlen(data)&
strcmp(data,STRING_Z))
returntrue;
}/*输入数据进制*/
boolGetScale(chartemp[])
inti,num,kbn_flg;
charscalewidth[WIDTH];
char*s;
boolflag;
kbn_flg=1;
flag=false;
while(!
flag)
memset(scalewidth,0x00,sizeof(scalewidth));
memset(temp,0x00,sizeof(temp));
if(!
GetData(scalewidth,WIDTH,kbn_flg))/*输入数据*/
s=scalewidth;
strlen(s))/*判断是否输入数据*/
Pleaseinputthescale(oneof2,8,10,16.'
}i=0;
while(*s)
if(*s>
=CHAR_0&
*s<
=CHAR_9)/*判断是否输入整数*/
temp[i]=*s;
s++;
flag=true;
temp[i]='
num=0;
if(flag)
num=atoi(temp);
if(!
(num==CONST_2||num==CONST_8||num==CONST_10||num==CONST_16))/*判断是否输入合法整数*/
boolGetSource(intin_scale,charinputdata[])
inti,kbn_flg;
charsourcedata[DATAWIDTH];
Pleaseinputone%dscaledata('
fore