编写代码,要求:输入参数是一个正整数,输出该整数所对应的二进制数对应的字符串。
输入格式:
正整数
输出格式:
输入的正整数对应的二进制字符串“1001”
输入样例:
在这里给出一组输入。例如:
9
输出样例:
在这里给出相应的输出。例如:
1001
这个是我写的一个的代码,比较容易理解吧
import java.util.Scanner;
public class Main{
public static void main(String args[]){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] a=new int[1000];//随便的一个大小,越大越好吧
int i=0;
for(;i<a.length;i++){
a[i]=n%2;//取余2,得到0或1
n=n/2;//除2后接着在for循环里取余
if(n==0){
break;//直到没得取了,就跳出循环
}
}
for(;i>=0;i--){
System.out.print(a[i]);//逆序输出就是转化完的二进制数
}
}
}
用2整除的方式。
用2整除十进制整数,得到一个商和余数;再用2去除商,又会得到一个商和余数,如此重复,直到商为小于1时为止,然后把先得到余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,以此排列起来。
注1:当一个整数除另一个整数得到整数商而没有余数时,叫做整除。如2除6得3,就说2能整除6或6能被2整除。
注2:除以是被除数在前,除数在后;除是除数在前,被除数在后。如32÷8=4可描述为:8除32等于4,或者32除以8等于4。
以十进制100转换为二进制为例:
100/2=50余0;50/2=25余0;25/2=12余1;12/2=6余0;6/2=3余0;3/2=1余1。以此排列十进制的100转换成二进制是:1100100。
然后还有一个比较高级一点的
import java.util.Scanner;
public class 公约数和公倍数 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n=in.nextInt();
int m=in.nextInt();
int a=m;
int b=n;
int t;
int ys;
if(m<n){
t=m;
m=n;
n=t;
}
ys=m%n;
if(ys==0){
System.out.print(n+" "+m);
}else{
do{
m=n;
n=ys;
ys=m%n;
}while(ys!=0);
System.out.print(n+" "+a*b/n);
}
}
}
自行理解,和上一个思路方法其实差不多
第一次写可能有些不完善,有人听懂我说的咩?