转换进制程序C语言,C语言各进制转换源代码

#include

#include

#include

void ten_two(int);

void ten_eight(int);

void ten_sixten(int);

void two_ten(int);

void two_eight(int);

void two_sixten(int);

void eight_two(int);

void eight_ten(int);

void eight_sixten(int);

void sixten_two(char r[], int k);

void sixten_ten(char r[], int k);

void sixten_eight(char r[], int k);

int main(void)

{

int i, j, number = 0;

int temp;

char change[10];

printf("=============================================================\n");

printf(" 欢 迎 使 用 进 制 转 换 程 序 \n");

printf(" 作 者:李 研 时 间:2009 年7 月5 日 \n");

printf("=============================================================\n");

do

{

temp = 0;

//fflush(stdin);

printf("\n请选择转换前的进制:\n2二进制\n8八进制\n10十进\n16十六进制\n0退出\n");

printf("转换前的进制是:");

scanf("%d", &i);

switch (i)

{

case 2:

printf("\n请选择转换后的进制:\n2二进制\n8八进制\n10十进\n16十六进制\n0退出\n");

printf("转换后的进制是:");

scanf("%d", &j);

switch(j)

{

case 2:

printf("\n同进制之间不用转化!\n");

temp = 1;

break;

case 8:

printf("\n请输入您想要转化的数:");

scanf("%d", &number);

two_eight(number);

temp = 1;

break;

case 10:

printf("\n请输入您想要转化的数:");

scanf("%d", &number);

two_ten(number);

temp = 1;

break;

case 16:

printf("\n请输入您想要转化的数:");

scanf("%d", &number);

two_sixten(number);

temp = 1;

break;

case 0:

printf("谢谢使用!!");

}

break;

case 8:

printf("\n请选择转换后的进制:\n2二进制\n8八进制\n10十进\n16十六进制\n0退出\n");

printf("转换后的进制是:");

scanf("%d", &j);

switch(j)

{

case 8:

printf("\n同进制之间不用转化!\n");

temp = 1;

break;

case 2:

printf("\n请输入您想要转化的数:");

scanf("%d", &number);

eight_two(number);

temp = 1;

break;

case 10:

printf("\n请输入您想要转化的数:");

scanf("%d", &number);

eight_ten(number);

temp = 1;

break;

case 16:

printf("\n请输入您想要转化的数:");

scanf("%d", &number);

eight_sixten(number);

temp = 1;

break;

case 0:

printf("谢谢使用!!");

}

break;

case 10:

printf("\n请选择转换后的进制:\n2二进制\n8八进制\n10十进\n16十六进制\n0退出\n");

printf("转换后的进制是:");

scanf("%d", &j);

switch(j)

{

case 10:

printf("\n同进制之间不用转化!\n");

temp = 1;

break;

case 2:

printf("\n请输入您想要转化的数:");

scanf("%d", &number);

ten_two(number);

temp = 1;

break;

case 8:

printf("\n请输入您想要转化的数:");

scanf("%d", &number);

ten_eight(number);

temp = 1;

break;

case 16:

printf("\n请输入您想要转化的数:");

scanf("%d", &number);

ten_sixten(number);

temp = 1;

break;

case 0:

printf("谢谢使用!!");

}

break;

case 16:

printf("\n请选择转换后的进制:\n2二进制\n8八进制\n10十进\n16十六进制\n0退出\n");

printf("转换后的进制是:");

scanf("%d", &j);

switch(j)

{

case 16:

printf("\n同进制之间不用转化!\n");

temp = 1;

break;

case 2:

printf("\n请输入您想要转化的数:");

fflush(stdin);

gets(change);

for(number = 0;; number++)

{

if(change[number] == '\0')

break;

}

sixten_two(change, number);

temp = 1;

break;

case 8:

printf("\n请输入您想要转化的数:");

fflush(stdin);

gets(change);

for(number = 0;; number++)

{

if(change[number] == '\0')

break;

}

sixten_eight(change, number);

temp = 1;

break;

case 10:

printf("\n请输入您想要转化的数:");

fflush(stdin);

gets(change);

for(number = 0;; number++)

{

if(change[number] == '\0')

break;

}

sixten_ten(change, number);

temp = 1;

break;

case 0:

printf("谢谢使用!!");

}

break;

case 0:

printf("\n谢谢使用!\n");

}

}

while(temp == 1);

return 0;

}

/*以下为: 二进制转换为十进制,八进制,十六进制.*/

void two_ten(int a)

{

int i, s = 0;

int result = 0;

for(i = 1; a != 0; i *= 2)

{

if(a % 10 > 1)

{

s = 1;

break;

}

else

{

result += (a % 10) * i;

a = a / 10;

}

}

if(s == 1)

printf("您的输入有误!请重新输入\n");

else

printf("\n转换后的数为:%d\n", result);

}

void two_eight(int a)

{

int i, j, k, s = 0;

int p[30];

int result = 0;

for(i = 1; a != 0; i *= 2)

{

if(a % 10 > 1)

{

s = 1;

break;

}

else

{

result += (a % 10) * i;

a = a / 10;

}

}

for(j = 0; result != 0; j++)

{

p[j] = result % 8;

result = result / 8;

}

if(s == 1)

printf("It is wrong\n");

else

{

printf("\n转换后的数为:");

for(k = j - 1; k >= 0; k--)

{

printf("%d", p[k]);

}

printf("\n");

}

}

void two_sixten(int a)

{

int i, j, k, s = 0;

char p[30];

int result = 0;

for(i = 1; a != 0; i *= 2)

{

if(a % 10 > 1)

{

s = 1;

break;

}

else

{

result += (a % 10) * i;

a = a / 10;

}

}

for(j = 0; result != 0; j++)

{

p[j] = result % 16;

result = result / 16;

if (p[j] > 10)

{

switch(p[j])

{

case 10:

p[j] = 'A';

break;

case 11:

p[j] = 'B';

break;

case 12:

p[j] = 'C';

break;

case 13:

p[j] = 'D';

break;

case 14:

p[j] = 'E';

break;

case 15:

p[j] = 'F';

break;

}

}

else p[j] += 48;

}

if(s == 1)

printf("It is wrong\n");

else

{

printf("\n转换后的数为:");

for(k = j - 1; k >= 0; k--)

{

printf("%c", p[k]);

}

printf("\n");

}

}

/*以下为: 八进制转换为二进制,十进制,十六进制.*/

void eight_two(int a)

{

int i, j, k, s = 0;

int result = 0;

int p[30];

for(i = 1; a != 0; i *= 8)

{

if(a % 10 > 7)

{

s = 1;

break;

}

else

{

result += (a % 10) * i;

a = a / 10;

}

}

for(j = 0; result != 0; j++)

{

p[j] = result % 2;

result = result / 2;

}

if(s == 1)

printf("It is wrong\n");

else

{

printf("\n转换后的数为:");

for(k = j - 1; k >= 0; k--)

{

printf("%d", p[k]);

}

printf("\n");

}

}

void eight_ten(int a)

{

int i, s = 0;

int result = 0;

for(i = 1; a != 0; i *= 8)

{

if(a % 10 > 7)

{

s = 1;

break;

}

else

{

result += (a % 10) * i;

a = a / 10;

}

}

if(s == 1)

printf("It is wrong\n");

else

{

printf("\n转换后的数为:%d\n", result);

}

}

void eight_sixten(int a)

{

int i, j, k, s = 0;

char p[30];

int result = 0;

for(i = 1; a != 0; i *= 8)

{

if(a % 10 > 7)

{

s = 1;

break;

}

else

{

result += (a % 10) * i;

a = a / 10;

}

}

for(j = 0; result != 0; j++)

{

p[j] = result % 16;

result = result / 16;

if(p[j] 

p[j] += 48;

else

{

switch(p[j])

{

case 10:

p[j] = 'A';

break;

case 11:

p[j] = 'B';

break;

case 12:

p[j] = 'C';

break;

case 13:

p[j] = 'D';

break;

case 14:

p[j] = 'E';

break;

case 15:

p[j] = 'F';

break;

}

}

}

if(s == 1)

printf("It is wrong\n");

else

{

printf("\n转换后的数为:");

for(k = j - 1; k >= 0; k--)

{

printf("%c", p[k]);

}

printf("\n");

}

}

/*以下为: 十六进制转换为十进制,二进制,八进制.*/

void sixten_ten(char a[], int k)

{

int i, j, s = 0;

int result = 0;

int b[50];

for(i = 0; i 

{

if(a[i] <= '9' && a[i] >= '1')

{

b[i] = a[i] - 48;

}

else

{

switch(a[i])

{

case 'A':

b[i] = 10;

break;

case 'B':

b[i] = 11;

break;

case 'C':

b[i] = 12;

break;

case 'D':

b[i] = 13;

break;

case 'E':

b[i] = 14;

break;

case 'F':

b[i] = 15;

break;

case 'a':

b[i] = 10;

break;

case 'b':

b[i] = 11;

break;

case 'c':

b[i] = 12;

break;

case 'd':

b[i] = 13;

break;

case 'e':

b[i] = 14;

break;

case 'f':

b[i] = 15;

break;

default:

s = 1;

}

}

}

for(i = 1, j = k - 1; j >= 0; j--, i *= 16)

{

result += b[j] * i;

}

if(s == 1)

printf("It is wrong\n");

else

{

printf("\n转换后的数为:%d", result);

}

}

void sixten_two(char a[], int k)

{

int i, j, s = 0;

int result = 0;

int b[50];

int p[30];

for(i = 0; i 

{

if(a[i] <= '9' && a[i] >= '1')

b[i] = a[i] - 48;

else

{

switch(a[i])

{

case 'A':

b[i] = 10;

break;

case 'B':

b[i] = 11;

break;

case 'C':

b[i] = 12;

break;

case 'D':

b[i] = 13;

break;

case 'E':

b[i] = 14;

break;

case 'F':

b[i] = 15;

break;

case 'a':

b[i] = 10;

break;

case 'b':

b[i] = 11;

break;

case 'c':

b[i] = 12;

break;

case 'd':

b[i] = 13;

break;

case 'e':

b[i] = 14;

break;

case 'f':

b[i] = 15;

break;

default:

s = 1;

}

}

}

for(j = k - 1, i = 1; j >= 0; j--, i *= 16)

{

result += b[j] * i;

}

for(j = 0; result != 0; j++)

{

p[j] = result % 2;

result = result / 2;

}

if(s == 1)

printf("It is wrong\n");

else

{

printf("\n转换后的数为:");

for(k = j - 1; k >= 0; k--)

{

printf("%d", p[k]);

}

printf("\n");

}

}

void sixten_eight(char a[], int k)

{

int i, j, s = 0;

int result = 0;

int b[30];

int p[30];

for(i = 0; i 

{

if(a[i] <= '9' && a[i] >= '1')

b[i] = a[i] - 48;

else

{

switch(a[i])

{

case 'A':

b[i] = 10;

break;

case 'B':

b[i] = 11;

break;

case 'C':

b[i] = 12;

break;

case 'D':

b[i] = 13;

break;

case 'E':

b[i] = 14;

break;

case 'F':

b[i] = 15;

break;

case 'a':

b[i] = 10;

break;

case 'b':

b[i] = 11;

break;

case 'c':

b[i] = 12;

break;

case 'd':

b[i] = 13;

break;

case 'e':

b[i] = 14;

break;

case 'f':

b[i] = 15;

break;

default:

s = 1;

}

}

}

for(j = k - 1, i = 1; j >= 0; j--, i *= 16)

{

result += b[j] * i;

}

for(j = 0; result != 0; j++)

{

p[j] = result % 8;

result = result / 8;

}

if(s == 1)

printf("It is wrong\n");

else

{

printf("\n转换后的数为:");

for(k = j - 1; k >= 0; k--)

{

printf("%d", p[k]);

}

printf("\n");

}

}

/*以下为: 十进制转换为二进制,八进制,十六进制.*/

void ten_two(int a)

{

int j, k;

int p[30];

for(j = 0; a != 0; j++)

{

p[j] = a % 2;

a = a / 2;

}

printf("\n转换后的数为:");

for(k = j - 1; k >= 0; k--)

{

printf("%d", p[k]);

}

printf("\n");

}

void ten_eight(int a)

{

int j, k;

int p[30];

for(j = 0; a != 0; j++)

{

p[j] = a % 8;

a = a / 8;

}

printf("\n转换后的数为:");

for(k = j - 1; k >= 0; k--)

{

printf("%d", p[k]);

}

printf("\n");

}

void ten_sixten(int a)

{

int j, k;

int p[30];

for(j = 0; a != 0; j++)

{

p[j] = a % 16;

a = a / 16;

if(p[j] 

p[j] += 48;

else

{

switch(p[j])

{

case 10:

p[j] = 'A';

break;

case 11:

p[j] = 'B';

break;

case 12:

p[j] = 'C';

break;

case 13:

p[j] = 'D';

break;

case 14:

p[j] = 'E';

break;

case 15:

p[j] = 'F';

break;

}

}

}

printf("\n转换后的数为:");

for(k = j - 1; k >= 0; k--)

{

printf("%c", p[k]);

}

printf("\n");

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值