Java基础习题(一)

一、数据类型和运算符

1.编程计数1/2+1/3+1/5的结果。

public class Text1 {	
	public static void main(String[] args) {
		double a = 1.0/2+1.0/3+1.0/5;
		System.out.println("1/2+1/3+1/5="+a);
	}
}

2.输入2个变量的值,交换这2个变量的值后输出。
Input(x,y):2 3
Output(x,y):3 2

import java.util.Scanner;
public class Text2 {
	public static void main(String[] args) {
		int x,y,temp;
		System.out.print("Input(x,y):");
		Scanner in = new Scanner(System.in);
		x = in.nextInt();
		y = in.nextInt();

		temp = x;
		x = y;
		y = temp;
		System.out.print("Output(x,y):"+x+" "+y);
	}
}

3.输入圆的半径,求球的体积v=4/3πr3(结果保留两位小数)。

import java.util.Scanner;
public class Text3 {
	public static void main(String[] args) {
		double v,r,temp;
		Scanner in = new Scanner(System.in);
		r = in.nextInt();
		temp = 4.0/3;
		v = temp*3.14*r*r*r;
		System.out.println(String.format("%.2f", v));
		System.out.printf("%.2f", v);
	}
}

4.输入华氏温度,转换为摄氏温度并输出。

import java.util.Scanner;
public class Text4 {
	public static void main(String[] args) {
		int c,f;
		Scanner in = new Scanner(System.in);
		f = in.nextInt();
		c = 5 * (f - 32) / 9;
		System.out.println(c);
	}
}

5.输入两个整数,求两个整数的和、差、积、商。

import java.util.Scanner;
public class Text5 {
	public static void main(String[] args) {
		int a,b,h,c,j,s;
		System.out.println("输入两个整数:");
		Scanner in = new Scanner(System.in);
		a = in.nextInt();
		b = in.nextInt();
		h = a + b;
		c = a - b;
		if(c<0)		c = -c;
		j = a * b;
		if(a<b)		s = b / a;
		else	s = a / b;
		System.out.println("两个数的和是"+h+" 差是"+c+" 积是"+j+" 商是"+s+"。");
	}
}

6.编写一个程序,要求用户输入一个美元数量,然后显示出如何用最少张数的20美元、10美元、5美元和1美元来付款。
运行结果:
Ener a dollar amount:93
Result:
$20 bills:4
$10 bills:1
$5 bills:0
$1 bills:3

import java.util.Scanner;
public class Text6 {
	public static void main(String[] args) {
		int m,a,b,c,d;
		System.out.println("Ener a dollar amount:");
		Scanner in = new Scanner(System.in);
		m= in.nextInt();
		a = m / 20;
		b = m % 20 / 10;
		c = m % 10 / 5;
		d = m % 5;
		System.out.println("Result:");
		System.out.println("$20 bills:"+a);
		System.out.println("$10 bills:"+b);
		System.out.println("$5 bills:"+c);
		System.out.println("$1 bills:"+d);
	}
}

7.输入从午夜开始的秒数totalSeconds,请计算出等价的时间,用小时(0 ~23)、分钟(0 ~59)和秒(0 ~59)表示。
Enter total seconds:2590
Time:0:43:10

import java.util.Scanner;
public class Text7 {
	public static void main(String[] args) {
		int time,hour,min,s;
		System.out.println("Enter total seconds:");
		Scanner in = new Scanner(System.in);
		time = in.nextInt();
		hour = time / 3600;
		min = time % 3600 / 60;
		s = time % 60;
		System.out.println("Time:"+hour+":"+min+":"+s);
	}
}

8.编写一个程序,对用户录入的产品信息进行格式化。
Enter item number:583
Enter unit price:13.5
Ente sales profit:25.3
Enter purchase date(yyyy mm dd): 2011 10 11
输出结果为:
Item Unit Price Sales profit Purchase date
583 $13.50 25.3% 10/11/2011

import java.util.Scanner;
public class Text8 {
	public static void main(String[] args) {
		float num,price,profit;
		int y,m,d;
		System.out.print("Enter item number:");
		Scanner in = new Scanner(System.in);
		num = in.nextFloat();
		System.out.print("Enter unit price:");
		Scanner in1 = new Scanner(System.in);
		price = in1.nextFloat();
		System.out.print("Ente sales profit:");
		Scanner in2 = new Scanner(System.in);
		profit = in2.nextFloat();
		System.out.print("Enter purchase date(yyyy mm dd):");
		Scanner in3 = new Scanner(System.in);
		y = in3.nextInt();
		m = in3.nextInt();
		d = in3.nextInt();
		System.out.println("Item\tUnit Price\tSales profit\tPurchase date\t");
		System.out.println(num+"\t"+"$"+String.format("%.2f", price)+"\t\t"+profit+"%\t\t"+m+"/"+d+"/"+y+"\t");
	}
}
二、选择结构

1.输入两个学生a和b的成绩,输出其中较高的成绩。

import java.util.Scanner;
public class Text1 {
	public static void main(String[] args) {
		int a,b,max;
		Scanner in = new Scanner(System.in);
		a = in.nextInt();
		b = in.nextInt();
		max = a>b?a:b;
		System.out.println(max);
	}
}

2.编写一个程序,从用户输入一个数值,判断此数值是不是只能被3整除,同时不能被7整除。
Enter number:21 Print:NO
Enter number: 3 Print:YES

import java.util.Scanner;
public class Text2 {
	public static void main(String[] args) {
		int x;
		System.out.print("Enter number:");
		Scanner in = new Scanner(System.in);
		x = in.nextInt();
		if(x%3==0&&x%7!=0) 	
System.out.println("Print:YES");
		else	
System.out.println("Print:NO");
	}
}

3.某幼儿园只收2—6岁的小孩 ,2~3岁编入小班(small class),4岁编入中班(middle class),5—6岁编入大班(top class),编写程序实现每输入一个年龄。输出应编入什么班。

import java.util.Scanner;
public class Text3 {
	public static void main(String[] args) {
		int x;
		System.out.print("输入一个年龄:");
		Scanner in = new Scanner(System.in);
		x = in.nextInt();
		switch(x) {
			case 2:
			case 3:
				System.out.println("small class");break;
			case 4:
				System.out.println("middle class");break;
			case 5:
			case 6:
				System.out.println("top class");break;
		}
	}
}

4.编写一个程序,从用户输入一个字符,判断此字符是不是字母。例如:
Enter a character: 1 Print:NO
Enter a character: a Print:YES
Enter a character: N Print:YES

import java.util.Scanner;
public class Text4 {
	public static void main(String[] args) {
		char c;
		System.out.print("Enter a character:");
		Scanner in = new Scanner(System.in);
		c = in.next().charAt(0);
		if((c>'A'&&c<'Z')|| (c>'a'&&c<'z')){
			System.out.println("Print:YES");
		}
		else 
System.out.println("Print:NO");
	}
}

5.猜数游戏,假如设定一个要猜的整数是123,然后让其他人从键盘输入所猜的数字,如果猜对,输出“Right”,如果猜错,则输出“Wrong”,并且指出输入的数字比设定的数字大(Too high)还是小(Too low)。

import java.util.Scanner;
public class Text5 {
	public static void main(String[] args) {
		int a,b;
		System.out.print("输入要猜的数字:");
		Scanner in1 = new Scanner(System.in);
		a = in1.nextInt();
		System.out.print("输入所猜数字:");
		Scanner in2 = new Scanner(System.in);
		b = in2.nextInt();

		if(a==b)	System.out.println("Right");
		else if(a>b)	System.out.println("Wrong,Too low");
		else if(a<b)	System.out.println("Wrong,Too high");
	}
}

6.编写一个程序,确定一个数的位数。
Enter a number:374
The number 374 has 3 digits
假设输入的数最多不超过4位。提示:利用if语句进行数的判定。例如,如果数
在0到9之间,那么位数为1;如果数在10到99之间,那么位数为2。

import java.util.Scanner;
public class Text6 {
	public static void main(String[] args) {
		int x;
		System.out.print("Enter a number:");
		Scanner in = new Scanner(System.in);
		x = in.nextInt();
		if(x>0&&x<10) {
			System.out.println("The number "+x+" has 1 digits");
		}
		else if(x>9&&x<100) {
			System.out.println("The number "+x+" has 2 digits");
		}
		else if(x>99&&x<1000){
			System.out.println("The number "+x+" has 3 digits");
		}
	}
}
三、循环结构

1.编写程序,求1+3+5+7+…+195+197+199的和。

public class Text01 {
	public static void main(String[] args) {
		int sum = 0;
		for(int i=1;i<200;i++){
			if(i%2!=0)
				sum += i;
		}
		System.out.println(sum);
	}
}

2.编写程序,输出100-200间,能被3整除,但是不能被7整除的数,并逐个输出。

public class Text02 {
	public static void main(String[] args) {
		int x;
		for(int i=100;i<200;i++) {
			if(i%3==0&&i%7!=0) {
				System.out.println(i);
			}
		}
	}
}

3.求1!+2!+3!+…+n!

import java.util.Scanner;
public class Text03 {
	public static void main(String[] args) {
		int n,a=1,b=0;
		Scanner in = new Scanner(System.in);
		n = in.nextInt();
		for(int i=1;i<=n;i++) {
			a *= i;
			b += a;
		}
		System.out.println("1!+2!...+"+n+"!="+b);
	}
}

4.输出所有的“水仙花数”,所谓的”水仙花数”是指一个3位数,其个位数字立方和等于该数本身,例如,153是一”水仙花数”,因为153=111+555+333
水仙花数为:153 370 371 407

public class Text04 {
	public static void main(String[] args) {
		int a,b,c;
		for(int i=100;i<1000;i++) {
			a = i / 100;
			b = i % 100 / 10;
			c = i % 10;
			if(a*a*a+b*b*b+c*c*c==i)
				System.out.println(i);
		}
	}
}

5.给出一个不多于5位的正整数,要求:求其逆序数和位数。如:
Enter a number:6582
The reversal number:2856
The number has 4 digits.

import java.util.Scanner;
public class Text05 {
	public static void main(String[] args) {
		int mun,n,temp,i;
		System.out.print("Enter a number:");
		Scanner in = new Scanner(System.in);
		mun = in.nextInt();
		n = mun;
		if(n<10000&&n>0) {
			System.out.print("The reversal number:");
			for(i=0;;) {
				while(n!=0) {
				temp = n % 10;
				n = n / 10;
				System.out.print(temp);
				i++;
				}
				System.out.println("");
				System.out.println("The number has "+i+" digits. ");
				break;
			}
		}
		else {
			System.out.println("请输入不多于5位的正整数。");
		}
	}
}

6.编写程序,找出用户输入的一串数中的最大数。程序需要提示用户逐个输入数值。当用户输入0或负数时,程序必须显示出已输入的最大非负数。
Enter 1 number:20
Enter 2 number:36
Enter 3 number:21
Enter 4 number:5.6
Enter 5 number:69.2
Enter 6 number:0
The largest number is 69.2

import java.util.Scanner;
public class Text06 {
	public static void main(String[] args) {
		float x=1,max=0;
		for(int i=1;x!=0;i++) {
			System.out.print("Enter "+i+" number:");
			Scanner in = new Scanner(System.in);
			x = in.nextFloat();
			if(max<x) {
				max = x;
			}
		}
		System.out.println("The largest number is "+max);
	}
}

7.完数定义:如果一个数等于其所有真因子(不含自身)之和,则该数为完数。求2~1000中所有的完数,并输出。

public class Text07 {
	public static void main(String[] args) {
		int sum;
		for(int i=2;i<=1000;i++) {
			sum = 0;
			for(int j=2;j<i;j++) {
				if(i%j==0) {
					sum += j;
				}
			}
			if(sum+1==i) {
				System.out.println(i);
			}
		}
	}
}

8.求1-200间的全部素数

public class Text08 {
	public static void main(String[] args) {
		int n;
		for(int i=2;i<=200;i++) {
			for(int j=2;j<i;j++) {
				if(i%j==0) {
					break;
				}
				if(j+1==i) {
					System.out.println(i);
				}
			}
		}
	}
}

9.输出俄文的“字母表”。

public class Text9 {
	public static void main(String[]args){
		System.out.println("俄文字母表");
		char c='А';
		for(int i=(int)c;i<c+32;i++){
			System.out.println(" "+(char)i);
		}
	}
}

10.计算两个非零正整数的最大公约数和最小公倍数,两个非零正整数从键盘输入。

import java.util.Scanner;
public class Text10 {
public static void main(String[] args) {
		int r,x,y,num1,num2;    //r表示两个数的余数
		Scanner in = new Scanner(System.in);
		num1 = in.nextInt();
		num2 = in.nextInt();
		x = num1;
		y = num2;
		//如果两个数前者<后者,则互换两个数
		if(num1<num2) {
			r = num1;
			num1 = num2;
			num2 = r;
		}
		while(num2!=0) {   //逐次用后一个数去除前一个余数
			r = num1;
			num1 = num2;
			num2 = r % num2;
		}
		System.out.println("利用辗转相除法计算所得的最大公约数为:"+num1);
		System.out.println("利用辗转相除法计算所得的最小公倍数为:"+ x*y/num1);
	}
}

11.求满足1+2!+3!+…+n!≤9999的最大整数n。

import java.util.Scanner;
public class Text11 {
	public static void main(String[] args) {
		int sum=0,a=1,i=1;
		while(sum<=9999) {
			a *= i;
			sum += a;
			i++;
		}
		System.out.println("n="+(i-1));
	}
}
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值