shu_1171 十->二进制转换(输入输出控制)

http://202.121.199.212/JudgeOnline/problem.php?cid=1079&pid=19


分析:主要是输出格式控制

  “对于每一个n,以11位的宽度右对齐输出n值”: 即包含该数在内一共11位,右对齐为printf的默认方式。所以用 %11d  来解决。

   另外,

         输出左对齐与右对齐,需在指定输出长度的时候才有意义; 如无指定长度,则输出从行首開始,有多长输出多长。

         左对齐: %-11d

  实例:

  

#include <stdio.h>

int main()
{
    int a=123;
    int b=1234;
    int c=12345;
    printf("%d
%d
%d
",a,b,c);  //没有规定输出长度
    printf("
%11d
%11d
%11d
",a,b,c); //11位宽右对齐
    printf("
%-11d
%-11d
%-11d
",a,b,c); //11位宽左对齐
    return 0;
}



代码:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <iostream>
#include <string>
using namespace std;
 
int main()
{
    int n;
    char buf[32];
    while(scanf("%d",&n)!=EOF){
      /*  if(n>=0)
           printf("%11d-->%s
",n,itoa(n,buf,2));
        else
            printf("%11d-->-%s
",n,itoa(-n,buf,2));
    */
        printf("%11d-->",n);
        if(!n) { printf("0
"); continue;}
        if(n<0) { n=-n; printf("-");}
        string str="";
        while(n){
            str +=n%2 +'0';
            n /=2;
        }
        for(int i=str.length()-1;i>=0;i--)
            cout<<str[i];
        cout<<endl;
    }
    return 0;
}


【推广】 免费学中医,健康全家人
原文地址:https://www.cnblogs.com/llguanli/p/8409741.html