必做题

1

输出1到100之间所有整数的和(分别用while、do_while、for三种循环实现)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
public static void main(String[] args) {
// TODO Auto-generated method stub
int s = 0;
for (int i=0;i<=100;i++){
s += i;
}
System.out.println("1到100之间所有整数的和为:"+s);
}
2
public static void main(String[] args) {
// TODO Auto-generated method stub
int s = 0;
int i = 0;
while (i <= 100){
s += i;
i++;
}
System.out.println("1到100之间所有整数的和为:"+s);
3
public static void main(String[] args) {
// TODO Auto-generated method stub
int s = 0;
int i = 0;
do{
s += i;
i++;
}while (i <= 100);
System.out.println("1到100之间所有整数的和为:"+s);

2

求n!(n为正整数),n在运行时从键盘输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.*;

public class gq {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
System.out.println("请输入一个正整数:");
int num=in.nextInt();
int sum=1;
for(int i=1;i<=num;i++){
sum=sum*i;
}
System.out.println("sum="+sum);
}

}

3

把100-200之间不能被3整出的数输出

1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
// TODO Auto-generated method stub

for (int i = 100;i<=200;i++){
if (i % 3 != 0 ){
System.out.println(i);
}
}
System.out.println("以上数值均不能整除3");
}

4

输出所有水仙花数,所谓水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
// TODO Auto-generated method stub

for (int i = 100;i<=999;i++){
int x = i / 100;
int y = (i%100)/10;
int z = (i%100)%10;
int s = x*x*x + y*y*y + z*z*z;
if ( s == i){
System.out.println(i + "为水仙花数");
}
}
}

5

在屏幕输出n行m列的如下图形,n和m在运行时从键盘输入

< img src=”https://ckcah.github.io/images/homework/java3/1.png">

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner in = new Scanner(System.in);
System.out.println("请输入n行:");
System.out.println("请输入m列:");
int n = in.nextInt();
int m = in.nextInt();
for (int i=1;i<=n;i++){
for (int q=1;q<=m;q++){
System.out.print("*");
}
System.out.println("\n");
}
}

6

在屏幕输出n行如下图形,n在运行时从键盘输入

< img src=”https://ckcah.github.io/images/homework/java3/2.png">

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner in = new Scanner(System.in);
System.out.println("请输入一个奇数:");
int n = in.nextInt();
int m = n / 2;
for(int i=1;i<m+2;i++){
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
for(int i=m;i>=1;i--){
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}

7

在屏幕输出n行如下图形,n在运行时从键盘输入

< img src=”https://ckcah.github.io/images/homework/java3/3.png">

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner in = new Scanner(System.in);
System.out.println("请输入一个奇数:");
int n = in.nextInt();
int m = n / 2;

for(int i=1;i<m+2;i++){
for (int k = m-i+1; k>0;k--) {
System.out.print(" ");
}
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
for(int i=m;i>=1;i--){
for (int k = m-i+1; k>0;k--) {
System.out.print(" ");
}
for(int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}

8

编写程序:猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩下一个桃子了。求第一天共摘了多少个桃子

1
2
3
4
5
6
7
8
public static void main(String[] args) {
// TODO Auto-generated method stub
int n = 1;
for (int i = 1;i < 10;i++){
n = (n+1)*2;
}
System.out.println(n);
}

思考题

1

求和s=1!+2!+3! +…+20!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public static void main(String[] args) {
// TODO Auto-generated method stub

long s = 0,m;
for (int i = 1;i <= 20;i++){
m = 1;
for(int j = 1;j <= i;j++){
m = m*j;
}
s = s+m;
}

System.out.println(s);

}

2

求s= 2+22+222+2222+…..,前n项的和,n在运行时从键盘输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args){
//求s= 2+22+222+2222+…..,前n项的和,n在运行时从键盘输入
Scanner x = new Scanner(System.in);
System.out.print("请输入想要求的n项和:");
double n = x.nextInt();
double s = 2;
double I = 0;
double sum = 2;
for(int i=1;i < n;i++){
double b = Math.pow(10, i);
I = b * 2;
s = s + I;
sum = sum + s;
//System.out.println(s);
}
System.out.printf("前%.0f的和为:%.1f" ,n,sum);
x.close();
}

3

有一数列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前10项之和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public static void main(String[] args) {
//有一数列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前10项之和
double n1 = 1;
double n2 = 1;
double n = 0;
double m = 0;
double m1 = 0;
double m2 = 1;
double sum = 0;
//System.out.print(sum);
for(int i=1;i < 11;i++){
n = n1+n2;
n1 = n2;
n2 = n;
m = m1+m2;
m1 = m2;
m2 = m;
sum = sum + n / m ;
System.out.println(i + "项为"+ n/m);
//System.out.print(i);
}
System.out.print("求出的10项和:"+sum);

}

4

编写程序:一个数如果恰好等于它的因子之和,这个数就称为完数,例如:6的因子为1,2,3,而6=1+2+3,因此6是完数。求1000之内的所有完数,并按以下规定格式输出

输出格式为:6:因子有:1,2,3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args){

for(int i=1;i<1000;i++){
int sum=0;
for(int j=1;j<i;j++) {
if (i % j == 0) {
sum += j;
}
}
if(i == sum){
System.out.println(i + "为完数");
}
}
}

5

编写程序:一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过了多少米?第10次反弹多高?

1
2
3
4
5
6
7
8
9
10
11
public static void main(String[] args){
double s = 10;
double sum = 0;
//编写程序:一个球从100m高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第10次落地时,共经过了多少米?第10次反弹多高?
for(int i=1;i<=10;i++){
s = s / 2;
sum += s *2;
}
System.out.println("共经过了:"+sum+"米");
System.out.println("第十次落地反弹为:"+s+"米");
}

6

编写程序:实现在程序运行后循环10次每次从键盘输入1个任意整数,共10个整数,最后输出10个整数中值最大的数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.Scanner;

public class test36 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a[] = new int[10];
for (int i=0;i<10;i++){
System.out.print("请输入第" + (i+1) + "个整数:");
a[i] = sc.nextInt();
//System.out.print(i);
}
int max = 0;
for(int i=0;i<9;i++){
for(int j=0;j<i;j++){
if (a[j+1] >= a[j]){
max = a[j+1];
}else{
max = a[j];
}
}
}

System.out.print("最大数为:"+max);

}
}

7

在屏幕输出n行如下图形,n在运行时从键盘输入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("请输入需要输出的n行数值:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i=1;i<=n*2;i += 2){
for (int x = 0;x<(n - ((i-1)/2));x++){
System.out.print(" ");
}
for (int j=1;j<=i;j++){
System.out.print("*");
}
System.out.println("");
}

for (int m=(n-1)*2-1;m>0;m -= 2){
for (int x = 0;x<(n - ((m-1)/2));x++){
System.out.print(" ");
}
for (int j=1;j<=m;j++){
System.out.print("*");
}
System.out.println("");
}


sc.close();
}

8

编写程序:求100至200间的全部素数,并进行输出。所谓素数(或称质数)是指除了1和它本身以外,不能被任何整数整除的数。因此判断一个整数m是否素数,只需把m被2到m/2(或m的平方根)之间的每一个整数去除,如果都不能被整除,那么m就是一个素数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args){
int primeNumber = 0;
for(int i = 100 ;i <= 200;i++)
{
boolean isPrime=true;

for(int j=i-1;j>1;j--)
{//n除以每个比n小比1大的自然数
if(i%j==0){//如果有能被整除的,则不是质数
isPrime=false;
}
}
if(isPrime)
{//如果是质数,则打印出来
System.out.print( i + " ");
}
}
}

9

编写程序,用循环实现在屏幕上输出九九乘法表,输出格式如下:

1=1*1

2=12 4=22

3=13 6=23 9=3*3

4=14 8=24 12=34 16=44

…………

9=19 18=29 27=39 36=49 45=59 ………81=99

1
2
3
4
5
6
7
8
9
10
public static void main(String[] args){
for(int i=1;i<10;i++){
for (int j=1;j<=i;j++){
System.out.print(j +"*" + i + "=" + i*j);
System.out.print(" ");
}
System.out.println("\r");
}
}

10

编写程序,使用循环输出如下图所示的图形:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("请输入需要输出的n行的数值:");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i=1;i<=n*2;i += 2){
for (int x = 0;x<(n - ((i-1)/2));x++){
System.out.print(" ");
}
for (int j=1;j<=i;j++){
if(i>1){
System.out.print((i+1)/2);
}else{
System.out.print(i);
}
}
System.out.println("");
}



for (int m=(n-1)*2-1;m>0;m -= 2){
for (int x = 0;x<(n - ((m-1)/2));x++){
System.out.print(" ");
}
for (int j=1;j<=m;j++){
System.out.print((m+1)/2);
}
System.out.println("");
}
}