3.19
分析:这里用到了数学里的阶层,1先提出来,后边的表达式就可以用item=item*i;e+=1/item来实现,最后输出e.
import java.util.Scanner
class Demo03_19{
public class void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int imax=scanner.nextInt();
double item=1.0;
double e=1;
for(i=1;i<=imax;i++){
item=item*i;
e+=1/item;
}
System.out.println(e);
}
}
输入2:i=1<2然后item=1*1.0=1.0然后e=1+1/1.0,然后i=2<=2然后e=1+1/1.0+1/2.0,2++=3>2所以退出循环,然后输出e.
3.21
分析:除数的个数等于正整数的一半,用内嵌for循环来实现。
class Demo03_21{
public static void main(String[] args){
int sum=0;
for(int n=2;n<=1000;n++){
for(int i=1;i<=n/2;i++){
if(n%i==0){
sum+=i;
}
}
if(sum==n){
System.out.println("完全数"+n);
}
}
}
}
比如输入一个6,i=1<=3所以执行6%1取余等于0所以sum=1;然后i++=2再执行6%2取余等于0所以sum=1+2;然后i++=3再执行6%3取余等于0所以sum=1+2+3=6;因为sum=6=n=6;所以6是完全数。
3.23
分析:
12/2 6 ~ 0 //12除以2等于6余0
6/2 3 ~ 0 //6除以2等于3余0
3/2 1 ~ 1 //3除以2等于1余1
1/2 0 ~ 1 //1除以2等于0余1
1100 //倒序输出就是12的二进制
import java.util.Scanner;
class Demo03_23{
public static void main(String[] args){
Scanner scanner=new scanner(System.in);
System.out.print("请输入一个整数:");
int n=scanner.nextInt();
String binstr=""; //binstr就是实现数字的倒序输出
while(ture){
binstr=n%2+binstr"";
n/2;
if(n==0){
break;
}
}
}
}
3.24
import java.util.Scanner;
class Demo03_24{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int num=0;
int max=0;
int count=0;
System.out.print("请输入数字:");
while(true){
num=scanner.nextInt();
if(num==0){
break;
}else if(num>max){
max=num;
count=1;
}else if(num==max){
count++;
}
}
System.out.println("max="+max+",count="+count);
}
}
输入3 5 2 5 5 5 0; 输出的结果是4.