题解 | #十进制数转二进制数#
十进制数转二进制数
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年终复盘#
正浩创新EcoFlow公司福利 754人发布
