首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印函数中如何对齐

问打印函数中如何对齐
EN

Stack Overflow用户
提问于 2016-01-25 13:31:10
回答 2查看 213关注 0票数 0

我想让printf函数从右到左打印,因为这个程序将数字的值转换为二进制,并且我希望它以适当的形式打印,例如,如果我转换16,它的写法是00001,但是它必须看起来像那个10000,所以有人知道如何提前完成这个任务吗?

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>

int main()
{
   int x,rem;

   printf("please enter number: ");
   scanf("%d",&x);

   while (x !=0)
   {
       rem=x%2;
       if (rem==0)
       {
           printf("0");
       }
       else
       {
          printf("1");
       }
       x = x/2;
       rem = 0;
   }
   return 0;
}

​

​

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-25 14:08:58

下面是:

代码语言:javascript
复制
void print_binary(int x)
{
    int skip = 1;
    unsigned int mask = 1 << 31;
    while(mask > 0){
        if(x & mask){
            skip = 0;
            printf("1");
        }else{
            if(!skip) printf("0");
        }
        mask >>= 1;
    }
    printf("\n");
}

这将打印不带尾随零的二进制数字。

如果希望将结果存储在字符串中,可以使用:

代码语言:javascript
复制
#include <string.h>
void int_to_binary(int x, char * buff) // buff size must be >= 32 !
{
    buff[0] = '\0'; // ensure string ends with \0
    unsigned int mask = 1 << 31;
    for (; mask > 0; mask >>= 1)
    {
        strcat(buff, (x & mask) ? "1" : "0");
    }
}

若要检查这两个代码,请使用:

代码语言:javascript
复制
int main(int argc, char* argv[])
{
    int x;
    printf("please enter number: ");
    scanf("%d",&x);
    char bin[32];
    int_to_binary(x, bin);
    printf("%s\n", bin);
    print_binary(x);
}

我们所做的是使用一个掩码,它在二进制中是一个"1“,从最左边开始,在每个循环中向右移动一步。"&“是一个咬人操作(我让你在谷歌上搜索它是如何工作的)。如果你需要更多的解释,可以随便问。

票数 1
EN

Stack Overflow用户

发布于 2016-01-25 13:45:06

代码语言:javascript
复制
#include<stdio.h> 
#include<stdlib.h> 
int main() 
{ 
      int binary[20]; 
      int q,i=0;
      printf("Enter the decimal no\n"); 
      scanf("%d",&q); 
      while(q > 0) 
      { 
           binary[i]=q%2; 
           i++; 
           q=q/2;
      }

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

return 0;
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34993886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档