《java实战经典》第三章习题
1.打印出所有的水仙花数,所谓的水仙花数就是指一个三位数,其各位数字立方和等于本身,比如153=1的立方+5的立方+3的立方
分析:这道题就是为了考你的运算符,只要知道怎么取每一位的数字,这道题就简单了
代码:
public void test(){
for(int i=100;i<=999;i++){
int y=i/100;
int z=i/10%10;
int a=i%10;
if(a*a*a+z*z*z+y*y*y==i){
System.out.println(i);
System.out.println("百位的立方"+a*a*a+"十位的立方"+z*z*z+"个位的立方"+y*y*y);
}
}
}
答案:
153
百位的立方27十位的立方125个位的立方1
370
百位的立方0十位的立方343个位的立方27
371
百位的立方1十位的立方343个位的立方27
407
百位的立方343十位的立方0个位的立方64
2.通过代码完成两个整数的交换
代码:
public void test1(){
int x=2;
int y=3;
System.out.println("x的原值"+x+"---"+"y的原值:"+y);
int z=0;
if(x>y){
z=x;
x=y;
y=z;
}else{
z=x;
x=y;
y=z;
}
System.out.println("x的值"+x+"----"+"y的值"+y);
}
结果:
x的原值2---y的原值:3
x的值3----y的值2
3.给定三个数,求出这三个数的最大值,并输出
public void test2(){
int x=100,y=50,z=300;
int a=x>y?x:y;
int b=a>z?a:z;
System.out.println("最大的数:"+b);
int c=x<y?x:y;
int d=c<z?c:z;
System.out.println("最小的数:"+d);
}
结果:
最大的数:300
最小的数:50
4.判断某数能否被3,5,7同时整除
public void test3(){
int x=105;
if(x%3==0&&x%5==0&&x%7==0){
System.out.println("这个数能被3,5,7同时整除"+x);
}else{
System.out.println("不能");
}
}
答案:
这个数能被3,5,7同时整除105
5.编写程序,分别利用while,do...while,for来求出100~200的累加和
public void test4(){
int num=0;
for(int i=100;i<=200;i++){
num=num+i;
}
System.out.println(num);
}
public void test4(){
int num=0;
int x=100;
while(x<=200){
num=num+x;
x++;
}
System.out.println(num);
}
public void test4(){
int num=0;
int x=100;
do {
num=num+x;
x++;
} while (x<=200);
System.out.println(num);
}
6.编写java程序,求13-23+33-43+53-63+...+973-983+993-1003
public void test5(){
double sum=0;
for(int i=1;i<=100;i++){
sum=(i*10+3)*Math.pow(-1, i-1);
}
System.out.println(sum);
}
其中math.pow(double,double)是计算一个数的几次方
7.7和2一样
8.8和3一样
9.9和5一样
10.10和4一样
11.编程求1!+2!+3!+..20!
public void test6(){
int sum=0;
for(int i=1;i<=20;i++){
int temp=1;
for(int j=1;j<=i;j++){
temp=temp*j;
}
sum=sum+temp;
}
System.out.println(sum);
}
结果:
268040729
12.前面已经做过了,刚学的朋友可以在做做
1.打印出所有的水仙花数,所谓的水仙花数就是指一个三位数,其各位数字立方和等于本身,比如153=1的立方+5的立方+3的立方
分析:这道题就是为了考你的运算符,只要知道怎么取每一位的数字,这道题就简单了
代码:
public void test(){
for(int i=100;i<=999;i++){
int y=i/100;
int z=i/10%10;
int a=i%10;
if(a*a*a+z*z*z+y*y*y==i){
System.out.println(i);
System.out.println("百位的立方"+a*a*a+"十位的立方"+z*z*z+"个位的立方"+y*y*y);
}
}
}
答案:
153
百位的立方27十位的立方125个位的立方1
370
百位的立方0十位的立方343个位的立方27
371
百位的立方1十位的立方343个位的立方27
407
百位的立方343十位的立方0个位的立方64
2.通过代码完成两个整数的交换
代码:
public void test1(){
int x=2;
int y=3;
System.out.println("x的原值"+x+"---"+"y的原值:"+y);
int z=0;
if(x>y){
z=x;
x=y;
y=z;
}else{
z=x;
x=y;
y=z;
}
System.out.println("x的值"+x+"----"+"y的值"+y);
}
结果:
x的原值2---y的原值:3
x的值3----y的值2
3.给定三个数,求出这三个数的最大值,并输出
public void test2(){
int x=100,y=50,z=300;
int a=x>y?x:y;
int b=a>z?a:z;
System.out.println("最大的数:"+b);
int c=x<y?x:y;
int d=c<z?c:z;
System.out.println("最小的数:"+d);
}
结果:
最大的数:300
最小的数:50
4.判断某数能否被3,5,7同时整除
public void test3(){
int x=105;
if(x%3==0&&x%5==0&&x%7==0){
System.out.println("这个数能被3,5,7同时整除"+x);
}else{
System.out.println("不能");
}
}
答案:
这个数能被3,5,7同时整除105
5.编写程序,分别利用while,do...while,for来求出100~200的累加和
public void test4(){
int num=0;
for(int i=100;i<=200;i++){
num=num+i;
}
System.out.println(num);
}
public void test4(){
int num=0;
int x=100;
while(x<=200){
num=num+x;
x++;
}
System.out.println(num);
}
public void test4(){
int num=0;
int x=100;
do {
num=num+x;
x++;
} while (x<=200);
System.out.println(num);
}
6.编写java程序,求13-23+33-43+53-63+...+973-983+993-1003
public void test5(){
double sum=0;
for(int i=1;i<=100;i++){
sum=(i*10+3)*Math.pow(-1, i-1);
}
System.out.println(sum);
}
其中math.pow(double,double)是计算一个数的几次方
7.7和2一样
8.8和3一样
9.9和5一样
10.10和4一样
11.编程求1!+2!+3!+..20!
public void test6(){
int sum=0;
for(int i=1;i<=20;i++){
int temp=1;
for(int j=1;j<=i;j++){
temp=temp*j;
}
sum=sum+temp;
}
System.out.println(sum);
}
结果:
268040729
12.前面已经做过了,刚学的朋友可以在做做