一、数据类型和运算符
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));
}
}