第1个回答 2010-12-05
---------------vc6.0测试通过---
----------要更多的进制表示,你可以在switch语句中自己加---------------
-------- 我的可以支持到16进制数的转换------------
#include <stdio.h>
#include <stdlib.h>
void main()
{
int nNum,Rad,i=0,Residue;
int Store[50];
printf("请输入一个任意整数:");
scanf("%d",&nNum);
printf("\n请输入一个合法的表示进制的基数[2,16]:");
scanf("%d",&Rad);
if(Rad<=1)
exit(-1);
printf("\n转换后的结果是:");
while(nNum>=Rad)
{
Residue=nNum%Rad;//0
nNum/=Rad;//1
Store[i]=Residue;//0
++i;
}
Store[i]=nNum;
for(;i>=0;--i)
switch(Store[i])
{
case 0:
printf("0");
break;
case 1:
printf("1");
break;
case 2:
printf("2");
break;
case 3:
printf("3");
break;
case 4:
printf("4");
break;
case 5:
printf("5");
break;
case 6:
printf("6");
break;
case 7:
printf("7");
break;
case 8:
printf("8");
break;
case 9:
printf("9");
break;
case 10:
printf("A");
break;
case 11:
printf("B");
break;
case 12:
printf("C");
break;
case 13:
printf("D");
break;
case 14:
printf("E");
break;
case 15:
printf("F");
break;
}
printf("\n");
}
第2个回答 2010-12-04
#include <stdio.h>
#include <string.h>
void Reveres(char ch[]);
void Atob(int x,int b,char s[]);
int main()
{
int x,b;
char s[80];
scanf("%d %d",&x,&b);
Atob(x,b,s);
Reveres(s);
puts(s);
return 0;
}
void Atob(int x,int b,char s[])
{
int i=0,r;
while (x>0)
{
r=x%b;
if (r<10)
{
s[i]=r+'0';
}
else
{
s[i]=r+55;
}
r=x%b;
x=x/b;
i++;
}
}
/*void Reveres(char ch[])
{
int i,n=strlen(ch),t;
for (i=0; i<n/2; i++)
{
t=ch[i];
chi=ch[n-i-1];
ch[n-i-1]=t;
}
}*/
void Reveres(char ch[])
{
int i,j,n;
i=j=n=0;
while(chn)
{
++n;
j=n-1;
}
while(i<j)
{
n=ch[i];
ch[i]=ch[j];
ch[j]=n;
++i;
--j;
}本回答被提问者和网友采纳