题解 | #十进制数转二进制数#

十进制数转二进制数

https://www.nowcoder.com/practice/90d2de77e05e497eacc85e6b50272900

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();/*读取数字*/
        int i = 0;
        char[] str = new char[100];
	  //先定义一个char类型数组准备存余数
        int c;
        if(num!=0){/*判断输入数字是否为0*/
            while((num/2)!=0){
                c = num%2;
                String str1 = c+"";/*将int类型转为String类型*/
                str[i++] = str1.charAt(0);/*再将String类型转为char类型存入数组*/
                num = num/2;/*每次取余*/
            }
		  //添加末尾
            int d = 1;
            char ch1 = (char)(d+48);/*int转char型*/
            str[i++] = ch1;/*数组最后一个补1*/
        }
        else{/*输入为0的情况*/
            int e = 0;
            char ch2 = (char)(e+48);/*int转char型*/
            str[i++] = ch2;
        }
        for(int j=i-1;j>=0;j--){
            String str2 = String.valueOf(str[j]);/*char类型转String类型*/
            Integer a = Integer.parseInt(str2);/*String类型转Integer输出*/
            System.out.print(a);
        }     
    }
}

很麻烦,小白没学几天的暴力算法,请大佬指正!

后附上同款C算法

#include<stdio.h>

int main()

{

    int num;

    scanf("%d",&num);

    int b=num;

    int c;

    int i;

    int str[20];

    while(b/2)

    {

        str[i++]=b%2;

        b=b/2;

    }

    str[i++]=b%2;

    for(int j=i-1;j>=0;j--)

    {

        printf("%d ",str[j]);

    }

    return 0;

}

#2022牛客时光##我的2022年终复盘#
全部评论

相关推荐

joecii:如果没有工资,那可能没有工资是这家公司最小的问题了
找实习记录
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务