【问题标题】:C program to convert a decimal number to binary stringC程序将十进制数转换为二进制字符串
【发布时间】:2020-04-10 15:57:59
【问题描述】:

给我这个程序将输入的十进制数转换为 二进制 数字的字符串。现在这是一个正确的程序并且确实有效。我对while 循环表达ch = (rem + 48); 表示怀疑我相信余数rem 的值最终将被ch 继承,那么为什么要添加0 即。 48 用 ascii 术语来说是有区别的。什么使添加 48 将 rem 转换为字符形式。如果我只写ch = rem;ch 不被视为字符,添加 48 使其成为字符。但是为什么???

void main()
{
    char x[15],tmp,ch;
    int i=0,j=0,dno,rem;
    printf("\nEnter decimal number:");
    scanf("%d",&dno);
    while(dno>0)
    {
        rem = dno % 2;
        ch = (rem+48);
        x[j++] = ch;
        dno/=2;
    }
    x[j--]='\0';
    while(i<j)
    {
        tmp = x[j];
        x[j--] = x[i];
        x[i++] = tmp;
    }
    puts(x);
    return;
}

【问题讨论】:

  • 使用'0' 的“字符文字”表示而不是“幻数”48 是更好的做法(也更清晰)!这可能会有所帮助(尽管转换是相反的):stackoverflow.com/q/628761/10871073
  • 感谢这个问题链接对我帮助很大的兄弟。感谢您的帮助.......

标签: c string


【解决方案1】:

ch 是一个代表 ascii 字符值的数字

48对应字符"0"

49对应字符"1"

rem(0 或 1)与 48 之和导致 48 或 49,分别为字符 "0""1"

【讨论】:

    【解决方案2】:

    在C中将一个字符数字转换为其等价的整数值,我们可以使用这种关系:

    x = character - '0'
    

    类似地将一个数字转换为它的等价字符数字,我们使用以下关系:

    ch = digit + '0'
    

    这就是为什么将 48 添加到您的 rem 使其成为一个字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 2017-02-23
      • 2014-08-03
      • 2013-11-24
      • 2020-01-04
      • 2016-06-02
      相关资源
      最近更新 更多