训练题
题目1
import java.util.Scanner;
/*
数据:a b c d e f x y
步骤:1.提示用户输入数字
2.计算结果
3.输出
*/
class D04_1{
public static void main(String[]args){
//1
Scanner scanner = new Scanner(System.in);
System.out.print("请输入a b c d e f:");//提示输入a b c d e f
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
double d = scanner.nextDouble();
double e = scanner.nextDouble();
double f = scanner.nextDouble();
//2.计算
double x=(e*d-b*f)/(a*d-b*c);
double y=(a*f-e*c)/(a*d-b*c);
//判断及输出
if((a*d-b*c)==0){
System.out.println("方程式无解");
}else{
System.out.println("x is"+x+",and y is"+y);
}
}
}
题目2
import java.util.Random;
import java.util.Scanner;
/*
数据:随机数 用户输入的 比较
步骤:
1.提示用户输入一个两位数
2.系统生成两位随机数
3.比较系统生成的数与用户输入的
*/
class D04_2{
public static void main(String[]args){
//1
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个两位数:");//提示用户输入一个两位数
int num = scanner.nextInt();
int F = num;
Random random = new Random();
int sum = random.nextInt(100);//产生一个随机的二位数
int temp =sum;
int a = sum%10;
int b =sum;
int c = num%10;
int d = num;
//判断 及输出
if(F==temp){
System.out.print("恭喜中奖10000美元");
}else if(a==c&&b==d){
System.out.print("恭喜中奖3000美元");
}else if(a==d||a==c||b==c||c==d){
System.out.print("恭喜中奖1000美元");
}else{
System.out.print("对不起,您未中奖");
}
}
}
题目3
本题的关键在于一月与二月用13、14表示,同时年数减一。
import java.util.Scanner;
/*
数据:输入的数 公式
步骤:
1.提示用户输入
2.判断是否为一、二月
3.依据公式计算
*/
class D04_3{
public static void main(String[]args){
//1
Scanner scanner = new Scanner(System.in);
System.out.println("请输入年份:"); //提示输入年份
int year=scanner.nextInt();
System.out.println("请输入月份:"); //提示输入月份
int month=scanner.nextInt();
System.out.println("请输入日期:"); //提示输入日期
int day =scanner.nextInt();
//2.判断是否为一月或者二月
if(month==1){
year =year-1;
month=13;
}else if(month==2){
year =year-1;
month=14;
}else{
year=year;
month=month;
}
int j=Math.abs(year/100);
int k=year%100;
int today=(day+ (26*(month+1))/10+k+k/4+j/4+5*j)%7;//带入公式计算
System.out.println("today is"+today);
String todayStr="";
//每个数字所代表的星期几
switch(today){
case 0:
todayStr="星期六";
break;
case 1:
todayStr="星期天";
break;
case 2:
todayStr="星期一";
break;
case 3:
todayStr="星期二";
break;
case 4:
todayStr="星期三";
break;
case 5:
todayStr="星期四";
break;
case 6:
todayStr="星期五";
break;
}
System.out.printf("今天是%s",todayStr);//输出
}
}
题目4
此题主要判断点在三角形内的极限条件
依据图形先判断出x,y 的大致取值范围,再由线性代数判断y的精确范围。
import java.util.Scanner;
class D04_4{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("请输入坐标x y:");//请输入坐标
double x =scanner.nextDouble();
double y =scanner.nextDouble();
//确定大致范围
if(x<=200&&x>=0){
//确定精确范围
if(y<=-0.5*x+100){
System.out.print("点在三角内!") ;
}
}else{
System.out.print("点在三角外!");
}
}
}
题目5
此题首先要判断出在大矩形内与外的极限情况。如下图
import java.util.Scanner;
class D04_5{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
System.out.print("请输入r1的中心x1,y1,h1和w1:");//提示输入r1的数据
double x1 =scanner.nextDouble();
double y1 =scanner.nextDouble();
double h1 =scanner.nextDouble();
double w1 =scanner.nextDouble();
System.out.print("请输入r2的中心x2,y2,h2和w2:");//提示输入r2的数据
double x2 =scanner.nextDouble();
double y2 =scanner.nextDouble();
double h2 =scanner.nextDouble();
double w2 =scanner.nextDouble();
double a=Math.abs(x1-x2);
double b=Math.abs(y1-y2);
//判断及输出
if(a+h2/2.0<=h1/2.0&&b+w2/2.0<=w1/2.0){
System.out.print("第二个矩形在第一个矩形内!");
}else if(a>=(h1+h2)*(1.0/2)||b>=(w1+w2)*(1.0/2)){
System.out.print("第二个矩形在第一个矩形外!");
}else{
System.out.print("第二个矩形和第一个矩形重叠!");
}
}
}
题目6
import java.util.Scanner;
/* k j i
1 6 1 1
2 1 2 4 2 2
3 2 1 2 3 2 3 3
4 3 2 1 2 3 4 0 4 4
*/
class D04_6{
public static void main(String[] args){
Scanner scanner =new Scanner(System.in);
System.out.print("请输入一个数字:");//提示用户输入
int num = scanner.nextInt();
for(int i=1;i<=num;i++){//定义行数小于输入的数字
for(int k=1;k<=num-i;k++){//定义输入的空格,占三位,空格数随行数增加而依次减少
System.out.print(" ");
}
for(int j=-(i-1);j<=i-1;j++){ //定义数字j,j随着行数的增加而逐行增加
System.out.printf("%3d",Math.abs(j)+1);//输出j的绝对值加一,并规定每个数字占三位
}
System.out.println();
}
}
}