C任意进制转换程序计算机等级考试
文章作者 100test 发表时间 2009:07:08 02:56:36
来源 100Test.Com百考试题网
编辑特别推荐:
全国计算机等级考试(等考)指定教材
全国计算机等级考试学习视频
全国计算机等级考试网上辅导招生
全国计算机等级考试时间及科目预告
百考试题教育全国计算机等级考试在线测试平台
全国计算机等级考试资料下载
全国计算机等级考试论坛
以前做C培训时写的一个任意进制转换的程序,不使用库提供的转换函数,现贴出来做一下记录。
/ scale.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <.stdio.h>.
#include <.stdlib.h>.
#include <.ctype.h>.
#include <.string.h>.
#include <.math.h>.
#define WIDTH 10
#define DATAWIDTH 50
#define MAX 4294967295
#define CONST_2 2
#define CONST_3 3
#define CONST_8 8
#define CONST_9 9
#define CONST_10 10
#define CONST_16 16
#define CHAR_0 0
#define CHAR_9 9
#define CHAR_A A
#define CHAR_a a
#define CHAR_Z Z
#define CHAR_SPACE
#define STRING_0 "0"
#define STRING_Z "Z"
bool Scale().
bool GetSourceScale(int * scale_in).
bool GetObjectScale(int * scale_out).
double OtherToDeci(int scale_in,char inputdata[]).
void DeciToOther(unsigned long deci,int scale_out,char outputdata[]).
bool GetData(char data[],int CONCOUNT,int flg).
bool GetScale(char temp[]).
bool GetSource(int in_scale,char inputdata[]).
void ScaleChange(int scale_in,char inputdata[],int scale_out,char outputdata[]).
void CleanScreen().
int _tmain(int argc, _TCHAR* argv[])
{
int flg = 0.
char cs[WIDTH].
memset(cs,0x00,sizeof(cs)).
while(1)
{
printf("-----------------------------------------------------------------\n").
printf(" Data Transform Between Two Scales \n").
printf(" ----------------------------------------\n").
/*进制转换主函数*/
if(!Scale())
{
break.
}
printf("-----------------------------------------------------------------\n").
printf("input any key and press Enter key to continue, Z for exit:").
if(!GetData(cs,WIDTH,flg)) /*判断是否继续执行下一次转换*/
{
break.
}
system("cls"). /*清屏*/
}
return 0.
}
bool Scale()
{
int scale_in,scale_out.
char inputdata[DATAWIDTH].
char outputdata[DATAWIDTH].
/*输入源数据进制*/
if(!GetSourceScale(&.scale_in))
{
return false.
}
/*输入源数据*/
if(!GetSource(scale_in,inputdata))
{
return false.
}
/*输入目标数据进制*/
if(!GetObjectScale(&.scale_out))
{
return false.
}
/*进行进制转换*/
ScaleChange(scale_in,inputdata,scale_out,outputdata).
return true.
}
bool GetSourceScale(int * scale_in) /*输入源数据进制*/
{
char temparray[WIDTH].
memset(temparray,0x00,sizeof(temparray)).
printf("Input source data scale and press Enter key(one of 2,8,10,16. Z for exit): \n").
if(!GetScale(temparray))
{
return false.
}
*scale_in = atoi(temparray).
return true.
}
bool GetObjectScale(int * scale_out) /*输入目标数据进制*/
{
char temparray[WIDTH].
memset(temparray,0x00,sizeof(temparray)).
printf("Input object data scale and press Enter key(one of 2,8,10,16. Z for exit): \n").
if(!GetScale(temparray))
{
return false.
}