求编程大师帮忙 ... 写一个C语言程序

2025-04-13 18:10:34
推荐回答(2个)
回答1:

#include

#include

#include

/*把数a从b进制转换成c进制*/

void transfer(char a[],int c) 

char   s[100]; 

int   rv,   n=0,   base=1, i ,ii;

int b = 2;

int len = strlen(a);

i = len;

for(i = len - 1;i >= 0;i--)//a从b进制的转化为10进制的 

ii = a[i]-'0';

n+=(ii%10)*base; 

base*=b; 

itoa(n,   s,   c);//函数调用n转化为C进制的,存在数组S中 

sscanf(s,   "%d ",   &rv); 

printf("将数%s转换成%10进制后是:%d\n",a,rv);

int main()

{

char x[10];

int c;

printf("输入你要转换进制的数和进制,用空格分开\n");

scanf("%s%d",x,&c);

transfer(x,c);

return 0;

}

下面是运行截图:

回答2:

f是否表示转换使用函数实现?
代码将二进制序列转换为十六进制序列:
#include
void f(char *p2,char *p16) //将二进制数转换为十六进制数
{
int t=0;
for (int i=0;p2[i];i++)
t=t*2+p2[i]-'0';
i=0;
while (t!=0)
{
for(int j=i;j>0;j--)
p16[j]=p16[j-1];
p16[0]=t%16;
p16[0]+=p16[0]<10?'0':'A'-10;
t=t/16;
i++;
}
p16[i]='\0';
}

void main()
{
char a[80],b[80];
printf("输入二进制数:");
scanf("%s",a);
f(a,b);
printf("十六进制数:%s\n",b);

}