当前位置: 代码迷 >> C语言 >> [经验]进制转换C语言实现
  详细解决方案

[经验]进制转换C语言实现

热度:248   发布时间:2007-02-22 14:45:40.0
[经验]进制转换C语言实现

#i nclude<stdio.h>

#define N 50
void binarysys();
void octalsys();
void hex();

void main()
{
printf(" &进制转换器& \n");
int select;
do
{
printf("==========================================================================\n");
printf("0、退出\t1、十进制~二进制\t2、十进制~八进制\t3、十进制~十六进制\n");
printf("请选择功能:");
scanf("%d",&select);
if(select==0)
{
break;
}
switch(select)
{
case 1: binarysys();break;
case 2: octalsys();break;
case 3: hex();break;
default : printf("请输入0~3其中的数!\n");
}
}while(1);
}

void binarysys()
{
long int number,i=0;
int arr[N];
printf("请输入一个数:");
scanf("%d",&number);
while(number>=0)
{
if(number<2)
{
arr[i]=number;
break;
}
arr[i]=number%2;
number/=2;
i++;
}
printf("这个数转为二进制后为:");
for(;i>=0;i--)
{
printf("%d",arr[i]);
}
printf("\n");

}

void octalsys()
{
long int number,i=0;
int arr[N];
printf("请输入一个数:");
scanf("%ld",&number);
while(number>=0)
{
if(number<8)
{
arr[i]=number;
break;
}
arr[i]=number%8;
number/=8;
i++;
}
printf("这个数转为八进制后为:");
for(;i>=0;i--)
{
printf("%d",arr[i]);
}
printf("\n");
}

void hex()
{
long int number,i=0;
int arr[N];
printf("请输入一个数:");
scanf("%ld",&number);
while(number>=0)
{
if(number<16)
{
arr[i]=number;
break;
}
arr[i]=number%16;
number/=16;
i++;
}
printf("这个数转为十六进制后为:");
for(;i>=0;i--)
{
switch(arr[i])
{
case 1:printf("%d",arr[i]);break;
case 2:printf("%d",arr[i]);break;
case 3:printf("%d",arr[i]);break;
case 4:printf("%d",arr[i]);break;
case 5:printf("%d",arr[i]);break;
case 6:printf("%d",arr[i]);break;
case 7:printf("%d",arr[i]);break;
case 8:printf("%d",arr[i]);break;
case 9:printf("%d",arr[i]);break;
case 10:
arr[i]='A';
printf("%c",arr[i]);break;
case 11:
arr[i]='B';
printf("%c",arr[i]);break;
case 12:
arr[i]='C';
printf("%c",arr[i]);break;
case 13:
arr[i]='D';
printf("%c",arr[i]);break;
case 14:
arr[i]='E';
printf("%c",arr[i]);break;
case 15:
arr[i]='F';
printf("%c",arr[i]);break;
case 16:
arr[i]='G';
printf("%c",arr[i]);break;
}
}
printf("\n");
}

搜索更多相关的解决方案: C语言  进制  void  printf  

----------------解决方案--------------------------------------------------------
支持一下。
----------------解决方案--------------------------------------------------------
上帝啊,,我看不懂,
----------------解决方案--------------------------------------------------------
蛮辛苦的 顶一下

----------------解决方案--------------------------------------------------------
支持原创啊
----------------解决方案--------------------------------------------------------

我帮修改一下,会变更简单。
#include<stdio.h>
#define N 50
/*void binarysys();
void octalsys(); */
void value(int select);
char *a[]={"这个数转为二进制后为:","这个数转为八进制后为:","这个数转为十六进制后为:"};
void main()
{
int select;
printf(" &进制转换器& \n");

do
{
printf("==========================================================================\n");
printf("0、退出\t1、十进制~二进制\t2、十进制~八进制\t3、十进制~十六进制\n");
printf("请选择功能:");
scanf("%d",&select);
if(select==0)
{
break;
}
/*switch(select)
{
case 1: binarysys();break;
case 2: octalsys();break;
case 3: hex();break;
default : printf("请输入0~3其中的数!\n");
}*/
printf("请输入0~3其中的数!\n");
if(select>0&&select<4)
value(select) ;

}while(1);
}

/*void binarysys()
{
long int number,i=0;
int arr[N];
printf("请输入一个数:");
scanf("%d",&number);
while(number>=0)
{
if(number<2)
{
arr[i]=number;
break;
}
arr[i]=number%2;
number/=2;
i++;
}
printf("这个数转为二进制后为:");
for(;i>=0;i--)
{
printf("%d",arr[i]);
}
printf("\n");

}

void octalsys()
{
long int number,i=0;
int arr[N];
printf("请输入一个数:");
scanf("%ld",&number);
while(number>=0)
{
if(number<8)
{
arr[i]=number;
break;
}
arr[i]=number%8;
number/=8;
i++;
}
printf("这个数转为八进制后为:");
for(;i>=0;i--)
{
printf("%d",arr[i]);
}
printf("\n");
}
*/
void value(int select)
{
long int number,i=0;
int arr[N];

switch(select)
{
case 1:select=2;printf(a[0]);break;
case 2:select=8;printf(a[1]);break;
case 3:select=16;printf(a[2]);break;
}
printf("请输入一个数:");
scanf("%ld",&number);
while(number>=0)
{
if(number<select)
{
arr[i]=number;
break;
}
arr[i]=number%select;
number/=select;
i++;
}
/*printf("这个数转为十六进制后为:"); */

for(;i>=0;i--)
{
switch(arr[i])
{
/*case 1:printf("%d",arr[i]);break;
case 2:printf("%d",arr[i]);break;
case 3:printf("%d",arr[i]);break;
case 4:printf("%d",arr[i]);break;
case 5:printf("%d",arr[i]);break;
case 6:printf("%d",arr[i]);break;
case 7:printf("%d",arr[i]);break;
case 8:printf("%d",arr[i]);break;
case 9:printf("%d",arr[i]);break; */
case 10:
/* arr[i]='A';
printf("%c",arr[i]);break; */putchar('A');break;
case 11:
/*arr[i]='B';
printf("%c",arr[i]);break;*/putchar('B');break;
case 12: putchar('C');break;
/*arr[i]='C';
printf("%c",arr[i]);break; */
case 13: putchar('D');break;
/*arr[i]='D';
printf("%c",arr[i]);break;*/
case 14: putchar('E');break;
/*arr[i]='E';
printf("%c",arr[i]);break;*/
case 15: putchar('F');break;
/*arr[i]='F';
printf("%c",arr[i]);break; */
/* case 16: 16进制是0到15
arr[i]='G';
printf("%c",arr[i]);break;*/
default:printf("%d",arr[i]);
}
}
printf("\n");
}


[此贴子已经被作者于2007-2-22 23:49:56编辑过]


----------------解决方案--------------------------------------------------------

不改变楼主题意,排除没用部分,以下为更清晰:
#include<stdio.h>
#define N 50
void value(int select);
char *a[]={"这个数转为二进制后为:","这个数转为八进制后为:","这个数转为十六进制后为:"};
int main()
{
int select;
printf(" &进制转换器& \n");

do
{
printf("==========================================================================\n");
printf("0、退出\t1、十进制~二进制\t2、十进制~八进制\t3、十进制~十六进制\n");
printf("请选择功能:");
scanf("%d",&select);
if(select==0)
{
break;
}
printf("请输入0~3其中的数!\n");
if(select>0&&select<4)
value(select) ;

}while(1);
return 0;
}

void value(int select)
{
long int number,i=0;
int arr[N];

switch(select)
{
case 1:select=2;break;
case 2:select=8;break;
case 3:select=16;break;
}
printf("请输入一个数:");
scanf("%ld",&number);
while(number>=0)
{
if(number<select)
{
arr[i]=number;
break;
}
arr[i]=number%select;
number/=select;
i++;
}
switch(select)
{
case 2:printf(a[0]);break;
case 8:printf(a[1]);break;
case 16:printf(a[2]);break;
}

for(;i>=0;i--)
{
switch(arr[i])
{

case 10:putchar('A');break;
case 11:putchar('B');break;
case 12: putchar('C');break;
case 13: putchar('D');break;
case 14: putchar('E');break;
case 15: putchar('F');break;
default:printf("%d",arr[i]);
}
}
printf("\n");

}

[此贴子已经被作者于2007-2-22 23:58:49编辑过]


----------------解决方案--------------------------------------------------------
谢谢,朋友们!常常互相交流吧!
----------------解决方案--------------------------------------------------------
小弟也写了一个,觉得比楼主的简单
#include<stdlib.h>//to trasform the radix of natrul number
#include<stdio.h>
void main()
{
int i,j=10;
char c[20];
while(j){
printf("enter the kinds of radix you wawnt to transform:\n<enter 0 to exist>\n");
scanf("%d",&j);
if(!j)
break;
printf("enter the number you want to transform:\n");
scanf("%d",&i);
itoa(i,c,j);
printf("%s\n",c);
}
//printf("%x\n",i); //*输出16进制(输出16进制其实直接用这个就行了)
//printf("%o\n",i);//......8....
}

----------------解决方案--------------------------------------------------------

呵呵,那当然的


----------------解决方案--------------------------------------------------------
  相关解决方案