注册 登录
编程论坛 C语言论坛

有疑问求大佬解答

barca 发布于 2017-11-24 19:55, 1114 次点击
#include<stdio.h>
int main()
{   
    int a[100];
    long m,n,i;
    int x,A;
    int j=0;
    while(scanf("%d %d",&m,&n)!=EOF)
    {   if(m>0) x=1;
        else   
        {x=0; m=-m; printf("-");}
     for(i=0;i<100;i++)
    {
      A=m/n;
       a[i]=m%n;
        j++;
        m=A;
        if(A==0) break;
    }
    for(i=j-1;i>=0;i--)
{
if(a[i]<10)
printf("%d",a[i]);
else
printf("%c",a[i]+'A'-10);
}
printf("\n");
    }
}                          这个是我写的进制转换的代码(如果是对的话)  但是输入第二组的时候  a[I]没有清空只是被下一组替换 这样第二组的输出就不对了,想知道在下一组之前怎么把a[I]清空
4 回复
#2
吹水佬2017-11-24 20:15
不是清空,是重新初始化a[i],如 a[i]=0
#3
barca2017-11-24 21:42
回复 2楼 吹水佬
在while最后加a[I]=0;还是不行
#4
梦想远航lyz2017-11-24 21:53
#include<stdio.h>
#include <strings.h>

int main()
{   
    int a[100];
    long m,n,i;
    int x,A;
    int j=0;
    while(scanf("%ld %ld",&m,&n)!=EOF)
    {   
        if(m>0)
            x=1;
        else   
            {x=0; m=-m; printf("-");}
        
        for(i=0;i<100;i++)
        {
            A=m/n;
            a[i]=m%n;
            j++;
            m=A;
            if(A==0) break;
        }
        
        for(i=j-1;i>=0;i--)
        {
            if(a[i]<10)
                printf("%d",a[i]);
            else
                printf("%c",a[i]+'A'-10);
        }
        
        j = 0;
        bzero(a,400);
        
        printf("\n");
    }
}  
使用个bzero函数,将j值清零,不然j之一直增
#5
barca2017-11-25 17:12
回复 4楼 梦想远航lyz
bzero和memset一样吗? c free 5.0好像没有bzero函数
1