C语言学习笔记一

实现功能:由用户输入一个数,并选择该数应该转换成几进制数,将结果输出。如果
用户输入过程中出现错误,程序会提示出错。
分为两种:一种是输入十进制数,然后把它转化为成其他进制,除N取余,一直除到商
为0为止。
另一种是输入其他进制的数,按位数展开,得到十进制。*/
//十进制转化为其他进制的函数
ten_to_others()
{
    int j,a,n;//n为这个数的值,a为要转化的进制
    int num[80];
    int i=0;
    printf("请输入要转换的数\n");
    scanf("%d",&n);
    printf("请输入要转换的进制数\n");
    scanf("%d",&a);
    while(n != 0)//辗转相除法
    {

        num[i]=n%a;       //这里编译出现问题
        n = n/a;
        i++;
        if(i>=80)
        {
            printf("超出输入范围\n");

        }
    }
    for(j=i; j>=0; j--)
    {
        printf("%d",num[j]);
    }

}
上面这个函数代码截图编译出现问题,问题在于最后一次i++,在数组num[i]里没有写入任何数据,而后面却让他进行输出。应该为:
ten_to_others()
{
    int j,a,n;//n为这个数的值,a为要转化的进制
    int num[80];
    int i=0;
    printf("请输入要转换的数\n");
    scanf("%d",&n);
    printf("请输入要转换的进制数\n");
    scanf("%d",&a);
    while(n != 0)//辗转相除法
    {

        i++;
        num[i]=n%a;
        n = n/a;
        if(i>=80)
        {
            printf("超出输入范围\n");

        }
    }
    for(j=i; j>0; j--)
    {
        printf("%d",num[j]);
    }

}

功能实现的总代码:

ten_to_others()
{
    int j,a,n;//n为这个数的值,a为要转化的进制
    int num[80];
    int i=0;
    printf("请输入要转换的数\n");
    scanf("%d",&n);
    printf("请输入要转换的进制数\n");
    scanf("%d",&a);
    while(n != 0)//辗转相除法
    {

        i++;
        num[i]=n%a;
        n = n/a;
        if(i>=80)
        {
            printf("超出输入范围\n");

        }
    }
    for(j=i; j>0; j--)
    {
        printf("%d",num[j]);
    }

}
//其他进制的数转化为十进制
others_to_ten()
{
    int n,a,j,c;
    int i=0;
    int sum=0;
    int num[80];
    printf("请输入要转换的数\n");
    scanf("%d",&n);
    printf("请输入这个数的进制\n");
    scanf("%d",&a);
    while(n != 0)//分别取出每个位上的数
    {
        i++;
        num[i]=n%10;
        n /= 10;
    }
    for(j=i; j>0; j--)
    {
        c =pow(a,j-1)*num[j];
        sum = sum+c;

    }
    printf("%d",sum);
}
void main()
{
    int choice;
    printf("请输入你的选择\n1.十进制转化为其他进制的函数\n2.其他进制的函数转化为十进制\n");
    scanf("%d",&choice);
    switch(choice)
    {
    case 1://十进制转化为其他进制的函数

        ten_to_others();
        break;
    case 2:////其他进制的数转化为十进制
        others_to_ten();
        break;
    case 0://退出
        exit(0);
    }

}



猜你喜欢

转载自blog.csdn.net/weixin_41938314/article/details/80376417