【问题标题】:base conversion in c programming languagec语言中的基础转换
【发布时间】:2017-03-26 02:29:01
【问题描述】:

谁能指出这段代码有什么问题?我正在尝试编写一个简单的(不使用数组和类似的东西)程序,它将基数为 10 的数字转换为任何其他基数。我是初学者,刚开始用 C 编码。

PS:如您所见,我没有编写任何可以反转结果的东西,也没有收到编译器的任何输出。它停止工作。

main()
{
    int a,b,c;
    printf("Please enter a number in base 10: ");
    scanf("%d",&a);
    printf("\nPlease enter the base that you want the number to be converted to: ");
    scanf("%d",&b);
    do
    {
        c=a%b;
        printf("%d",c);
        a/=b;
    }while(c!=0);
}

【问题讨论】:

  • 你输入了什么?你得到了什么输出?你怎么能改变它不以相反的顺序打印数字?您打算什么时候检查输入是否有效?什么时候输出换行符或空格来分隔数字?
  • 好吧,我没有收到任何输出,因为编译器停止工作,是的,我还没有写任何会反转结果的东西,这就是我所能做的......@Jonathan Leffler跨度>
  • 我在你的程序中输入了428(八进制),它回复250虽然十进制42是八进制52
  • 是的,那是因为我还没有写任何可以逆转结果的东西。我什至没有得到任何结果,我正在使用 Codeblocks 来编译它。
  • 由于您只显示结果,因此您无需反转。您必须首先找到新基数中的最高位数字,因为这些数字是您首先打印的数字。然后一直到最低位。

标签: c binary decimal base


【解决方案1】:

将您的 while 循环更改为 != 0。您希望循环直到您将输入数字减少到零。当第一个数字为 0 时,您的代码将终止。

【讨论】:

  • 下一个挑战将是正确写入转换后的值。保留所有数字。
  • 关于如何反转结果的任何想法??
【解决方案2】:

将任何基数转换为基数 10:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
main()
{

char input[23];
int sum;
int power;
int base;
int val;
int len;
gets(input);
strupr(input);
scanf("%d",&base);
len=strlen(input);
power=len-1;
for(int x=0;x<len;x++,power--)
{
        val=input[x]-48;
        if(val>9)
        val-=7; 
        sum+=val*pow(base,power);
}
printf("%d",sum);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 2010-11-28
    • 2018-01-09
    • 2018-09-22
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多