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

将输入的0和1数字序列表示的二进制数转换成八进制、十六进制数。
功能要求:
将输入的0和1数字序列存放到数组中。
‚从终端输入要转换的进制。
ƒ将转换后的结果保存到数组中,并以适当的形式输出。

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

/*把数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;

}

下面是运行截图:

追问

请问能不能把CPP文件传到我的邮箱里?万分感谢!

追答

亲,直接COPY过去,然后新建一个.C文件就可以了。你要不会就留邮箱吧。记得采纳哦,亲~~

追问

[email protected] 亲 发过来能用我一定会采纳的!~

追答

已发送,亲

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-06
f是否表示转换使用函数实现?
代码将二进制序列转换为十六进制序列:
#include <stdio.h>
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);

}
相似回答