练习赛的一段代码,哪里出错了呢?求助
输入第一个数为数据组数n
接下来n行,每行首先有一个整数k,表示需要进行的转换类型 如果k是10,则k之后有一个十进制整数x,需要将它依次转换为二、八、十六进制并输出在同一行,以空格分开
如果k为2,8,16,则k之后一个整数p表示该二、八、十六进制数的位数,p后隔一个空格有一个序列表示该数,需要将其转换为十进制数输出一行
输出
对于每组数据,输出一行,每行输出如果有多个数字用空格分割(十六进制中字母为大写字母)
输入样例
4
10 27
2 3 101
8 2 67
16 5 ABCDE
输出样例
11011 33 1B
5
55
703710
以上是题目这是我的代码,哪里错了呢?????
#include<stdio.h>
#include<math.h>
#include<string.h>
void change_2(int a)
{
int i=0,b;
while(a)
{
b=a%2;
a=a/2;
i++;
}
for(i--;i>=0;i--)
{
printf("%d",b);
}
memset(b,0,sizeof(b));
}
int main()
{
int n,i,k,x,len,j,a,yy=0;
scanf("%d",&n);
while(n--)
{
scanf("%d",&k);
if(k==10)
{
scanf("%d",&x);
change_2(x);
printf(" %o",x);
printf(" %X\n",x);
}
if(k==2)
{
scanf("%d",&len);
for(j=0;j<len;j++)
{
scanf("%1d",&a);
}
for(j=len-1;j>=0;j--)
{
yy+=a*pow(2,j);
}
printf("%d\n",yy);
yy=0;
memset(a,0,sizeof(a));
}
if(k==8)
{
scanf("%d",&len);
scanf("%o",&x);
printf("%d\n",x);
}
if(k==16){
scanf("%d",&len);
scanf("%X",&x);
printf("%d\n",x);
}
}
return 0;
}
我自己发现问题了,,二进制那里错了。。。。
页:
[1]