1、编写程序,显示以下公式的结果
(9.5 x 4.5 - 2.5 x 3)/(45.5 - 3.5)
/*
软件:数据 指令
写软件的目的,无非就是想让我们的计算机帮助我们解决一些问题
首先,我们必须得直到整个问题的一个求解步骤
其次,将这个步骤用相应的编程语言来体现出来
最终,交给计算机去执行即可
当我们在做题的时候 先找问题当中的 数据 指令 分清解决步骤
建议类名和源代码文件名一致
想要执行一个程序 那么就得告诉计算机从这个程序的哪个部分先开始
程序的开始 指的就是 主函数 程序入口
代码可读性——压缩代码 为了节省源代文件的大小 在Web上比较常见 js文件
关键字
class 表示的是一个类
public 表示的是公开的权限
static 表示的是函数的类型
void 表示的是函数的返回值类型
特点:在我们VSCode中 关键字都是全小写的
String System 严格来说它们不是关键字 是Java自带类的名称 也不能随意使用
特点:首字母大写的单词
public class XT1 {
public static void main(String[] args) {
System.out.println((9.5 * 4.5 - 2.5 * 3) / (45.5 - 3.5));
}
}
0.8392857142857143
2、(以英里计的平均速度)假设一个跑步者45分钟30秒内跑了14公里。便携仪个程序显示以每小时多少英里为单位的平均速度值。(注意,1英里等于1.6公里)
public class XT2 {
public static void main(String[] args) {
System.out.println("平均速度值为" + (14.0 / 1.6) / ((45.0 * 60 + 30) / (60 * 60)) + "英里每小时");
}
}
3.(人口估算)美国人口调查局基于以下假设进行人口估算:
每7秒有一个人诞生
每13秒有一个人死亡
每45秒有一个移民迁入
编写一个程序,显示未来5年的每年的人口数。假设当前的人口是312032486,每年有365天。提示:java中,两个证书相除,结果还是整数,小树部分被去掉。例如,5/4等于1(而不是1.25),10/4等于2(而不是2.5)。如果想得到有小树部分的精确结果,进行处罚运算的两个值之一必须是一个具有小数点的数值。例如,5.0/4等于1.25,10/4.0等于2.5。
public class XT3{
public static void main(String[] args) {
System.out.println(312032486 + (5 * 365 * 24 * 60 * 60 / 7) - (5 * 365 * 24 * 60 * 60 / 13) + (5 * 365 * 24 * 60 * 60 / 45));
}
}
4.(以公里计的平均速度)假设一个跑步者1小时40分钟35秒内跑了24英里。编写一个程序显示以每小时多少公里为单位的平均速度值。(注意,1英里等于1.6公里)
public class XT4 {
public static void main(String[] args) {
System.out.println("平均速度值为" + (24 * 1.6) * (60 * 60) / (60 * 60 + 40 * 60 + 35) + "公里每小时");
}
}
5.代数:求解2 x 2线性方程)可以使用Cramer规则解下面的2 x 2线性方程组:
`public class Training1_13 {
public static void main(String[] args) {
double a = 3.4;
double b = 50.2;
double e = 44.5;
double c = 2.1;
double d = 0.55;
double f = 5.9;
System.out.println("x = " + (e * d - b * f) / (a * d - b * c));
System.out.println("y = " + (a * f - e * c) / (a * d - b * c));
}
}`
6.(将摄氏温度转换为华氏温度)编写程序,从控制台读入double型的摄氏温度,然后将其转换成为华氏温度,并且显示结果。转换公式: 华氏温度 = (9/5) * 摄氏温度 + 32
*
/*数据:摄氏温度 华氏温度
指令:输入 按照公式计算 输出
步骤:
1.提示用户输入摄氏温度
2.利用已知公式将摄氏温度转换为华氏温度
3.将摄氏温度和华氏温度输出
Scanner 扫描仪扫描器
是一个Java自带的一个类 主要负责的就是数据输入的问题
对于内存而言 数据的输入来源有很多
1.可以是从硬盘上读取数据
2.可以是从互联网上读取数据
3.可以是从输入设备(键盘)读取数据
nextByte()
nextShort()
nextInt() 常用
nextFloat()
nextDouble() 常用
String/System -> 开学学校给你们发的书
Scanner -> 图书馆里面的书*/
import java.util.Scanner;
public class XT6{
public static void main(String[] args){
//类名 变量名=new 类名();
System.out.print("请输入摄氏温度:");//提示用户输入摄氏温度
Scanner scanner=new Scanner(System.in);
double cel=scanner.nextDouble();
//2.利用已知公式将摄氏温度转换为华氏温度
double fah=cel * 9 / 5 + 32;
//3.将摄氏温度和华氏温度输出
System.out.println("摄氏温度" + cel + ",是华氏温度" + fah);
}
}
7.(计算圆柱体的体积)编写程序,读入圆柱体的半径和高,并使用下列公式计算圆柱的体积:
面积=半径* 半径 * p
体积= 面积*高
*
/*数据:半径 高 圆周率 面积 体积
指令:输入 计算 输出
步骤:
1.提示用户输入半径和高
2.按照公式计算底面积
3.按照公式计算体积
4.输出
*/
import java.util.Scanner;
public class XT7{
public static void main(String[] args){
System.out.print("请输入半径和高:");//1.提示用户输入半径和高
Scanner scanner = new Scanner(System.in);
double radius = scanner.nextDouble();
double length = scanner.nextDouble();
//2.按照公式计算底面积
double area = radius * radius * 3.1415926;
//3.按照公式计算体积
double volume = area * length;
//4.
System.out.println("圆柱体的体积为"+volume);
}
}
/*数据:输入的一个数字 个位 十位 百位
指令:取余 自除过滤数字
步骤:
1.提示用户输入一个数字(3位数之内)
2.分解数字 统一按照3位数的长度分解
123%10 ~ 3 a
123/10 ~ 12
12%10 ~ 2 b
12/10 ~ 1
1%10 ~ 1 c
3.将分解数来的数字相加即可
*/
import java.util.Scanner;
public class XT8{
public static void main(String[] args){
System.out.print("请输入一个数字:");//提示用户输入一个数字(3位数之内)
Scanner scanner = new Scanner(System.in);
int number = scanner.nextInt();
//2.分解数字 统一按照3位数的长度分解
int a=number%10; //得到的是个位
number/=10;
int b=number%10; //得到的是十位
number/=10;
int c=number%10; //得到的是百位
//3.将分解数来的数字相加
int sum=a+b+c;
System.out.println(sum);
}
}
9.System类中的方法 currentTimeMillis 返回从 GMT 1970 年 1 月 1 日 00:00:00 开始到当前时刻的毫秒数.可以使用这个方法获取当前时间,然后按照如下步骤计算出当前的秒数、分钟数和小时数:
1 ) 调用 System.currentTimeMillisO 方法获取 1970 年丨月 1 日午夜到现在的毫秒数(例 如:1203183086328 毫秒),并存放在变童 totalMilliseconds 中。
2 ) 通过将总毫秒数 totalMilliseconds 除以 1000 得到总秒数 totalSeconds (例如:120B183086328 毫秒 /1000=1203183068 秒)。
3 ) 通过 totalSecondsX60 得到当前的秒数(例如:lMSlHO68 秒%60=8,这个值就是当前秒数)。
4 ) 通过将 totalSeconds 除以 M得到总的分钟数 totalMinutes (例如:lWU83。68秒 /60=20053051分钟)。
5 ) 通过 totalMinutesX60 得到当前分钟数(例如:20053051分钟%60=31, 这个值就是
当前分钟数)。
6 ) 通过将总分钟数 totalMinutes 除以 60 获得总的小时数 totalHours (例如:MOSSOSl分钟 /60=334217 小时)。
7 ) 通过 t0talH0UrSX24 得到当前的小时数(例如:33«17 小时%24=17, 该值就是当前小时数)
public class XT9 {
public static void main(String[] args) {
// 开发一个一GMT(格林威治标准时间)来显示当前时间的程序
// 1:调用System.currentTimeMillis()方法获取1970年1月1日午夜到现在的毫秒数,
// 并存放在变量totalMilliseconds中。
// 2:通过将总毫秒数totalMilliseconds/1000得到总秒数toalSteconds。
// 3:通过totalSeconds%60得到当前的秒数currentSecond。
// 4:通过totalSeconds/60得到总分钟数totalMinutes。
// 5:通过totalMinutes%60得到当前的分钟数currentMinute。
// 6:通过totalMinutes/60得到总小时数totalHours。
// 7:通过totalHours%24得到当前的小时数currentHour
// 获取从GMT1970年1月1日00:00:00开始到现在的总毫秒数
long totalMilliseconds = System.currentTimeMillis();
// 获取从GMT1970年1月1日00:00:00开始到现在的总秒数
long totalSeconds = totalMilliseconds / 1000;
// 获取当前秒数
long currentSecond = totalSeconds % 60;
// 获取总分钟数
long totalMinutes = totalSeconds / 60;
// 获取当前分钟数
long currentMinute = totalMinutes % 60;
// 获取总小时数
long totalHours = totalMinutes / 60;
// 获取当前小时数
long currentHour = totalHours % 24;
// 打印当前时间
System.out.println("当前时间是:" + currentHour + ":" + currentMinute + ":" + currentSecond + " GMT");
System.out.println(totalSeconds);
System.out.println(currentSecond);
System.out.println(totalMinutes);
System.out.println(currentMinute);
System.out.println(totalHours);
System.out.println(currentHour);
}
}
10.上述给出了显示当前格林威治时间的程序。修改这个程序,提示用户输入相 对于 GMT 的时区偏移量,然后显示在这个特定时区的时间。
/*数据:输入的一个偏移量
指令:显示、计算、输出
*/
import java.util.Scanner;
public class XT10{
public static void main(String[] args){
System.out.print("请输入时区:");
Scanner scanner=new Scanner(System.in);
int offset=scanner.nextInt();
//总毫秒数
long totalMillis=System.currentTimeMillis();
//总秒数
long totalSeconds=totalMillis/1000;
//总分钟数
long totalMinutes=totalSeconds/60;
//总小时数
long totalHours=totalMinutes/60;
//当前小时数
long currentHour=(totalHours+offset)%24;
//当前分钟数
long currentMinute=totalMinutes%60;
//当前秒数
long currentSecond=totalSeconds%60;
System.out.println(currentHour+":"+currentMinute+":"+currentSecond);
}
}
(财务应用程序:复利值)假设你每月向银行账户存100美元,年利率为5%,那么每月利率是 0.05/12=0.004 17。
第一个月之后,账户上的值就变成:
100 * (1 + 0.00417) = 100.417
第二个月之后,账户上的值就变成:
(100 + 100.417) * (1 + 0.00417) = 201.252
第三个月之后,账户上的值就变成:
(100 + 201.252) * (1 + 0.00417) = 302.507
依此类推。编写程序显示六个月后账户上的钱数。
/*数据:输入一个数字
指令:输入、计算、输出
*/
import java.util.Scanner;
public class XT11 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("请输入你的每月存款金额:");//输入数字
double amount = in.nextDouble();
double rateOfMonth = 1 + 0.00417;//利率
double totalOfMonth1 = amount * rateOfMonth;//第一个月后的钱数
double totalOfMonth2 = (amount + totalOfMonth1) * rateOfMonth;//第二个月后的钱数
double totalOfMonth3 = (amount + totalOfMonth2) * rateOfMonth;//第三个月后的钱数
double totalOfMonth4 = (amount + totalOfMonth3) * rateOfMonth;//第四个月后的钱数
double totalOfMonth5 = (amount + totalOfMonth4) * rateOfMonth;//第五个月后的钱数
double totalOfMonth6 = (amount + totalOfMonth5) * rateOfMonth;//第六个月后的钱数
System.out.println("6个月后账上余额为:" + totalOfMonth6);//输出
}
}
import java.util.Scanner;
public class XT 12{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
//1.提示用户输入第一个坐标 两个值
System.out.print("请输入第一个坐标:");
double x1=scanner.nextDouble();
double y1=scanner.nextDouble();
//2.提示用户输入第二个坐标 两个值
System.out.print("请输入第二个坐标:");
double x2=scanner.nextDouble();
double y2=scanner.nextDouble();
//3.计算两点之间的距离
//Math.pow(a,b) a^b
double distance=Math.pow(Math.pow(x2-x1,2)+Math.pow(y2-y1,2),0.5);
System.out.println(distance);
}
}
import java.util.Scanner;
public class XT13{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入三个点的坐标:");
double x1=scanner.nextDouble();
double y1=scanner.nextDouble();
double x2=scanner.nextDouble();
double y2=scanner.nextDouble();
double x3=scanner.nextDouble();
double y3=scanner.nextDouble();
double side1=Math.pow(Math.pow(x1-x2,2)+Math.pow(y1-y2,2),0.5);
double side2=Math.pow(Math.pow(x1-x3,2)+Math.pow(y1-y3,2),0.5);
double side3=Math.pow(Math.pow(x2-x3,2)+Math.pow(y2-y3,2),0.5);
double s=(side1+side2+side3)/2;
double area=Math.pow(s*(s-side1)*(s-side2)*(s-side3),0.5);
//System.out.println(area);
System.out.printf("area=%.2f\n",area);
}
}
/*
数据:a b c delt r1 r2
步骤:
1.提示用户输入abc三个参数
2.计算delt=b*b-4*a*c
3.判断delt的值
3.1 delt>0
输出两个解
3.2 delt==0
输出一个解
3.3 delt<0
无实数解
*/
import java.util.Scanner;
public class XT14{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in); //1.提示用户输入abc三个参数
System.out.print("请输入a,b,c:");
double a=scanner.nextDouble();
double b=scanner.nextDouble();
double c=scanner.nextDouble();
//2.计算delt=b*b-4*a*c
double delt=b*b-4*a*c;
//3.判断delt的值
if(delt>0){
double r1=(-b+Math.sqrt(delt))/(2*a);
double r2=(-b-Math.sqrt(delt))/(2*a);
System.out.printf("r1=%.2f,r2=%.2f",r1,r2);
}else if(delt==0){
double r=(-b-Math.sqrt(delt))/(2*a);
System.out.printf("r=%.2f",r);
}else{
System.out.println("无实数解!");
}
}
}
15.如题5,编写程序,提示用户输入a,b,c,d,e,f,然后显示结果,若ad-bc=0,则输出此方程无解
import java.util.*;
public class XT15 {
public static void main(String[] args) {
double a, b, c, d, e, f, x, y, discriminant;
System.out.print("Enter a, b, c, d, e, f:");
Scanner input = new Scanner(System.in);
a = input.nextDouble();
b = input.nextDouble();
c = input.nextDouble();
d = input.nextDouble();
e = input.nextDouble();
f = input.nextDouble();
discriminant = a * d - b * c;
if(discriminant != 0)
{
x = (e * d - b * f) / discriminant;
y = (a * f - e * c) / discriminant;
System.out.println("x is " + x +" and y is " + y);
}
else
{
System.out.println("The equation has no solution");
}
input.close();
}
}
16.(给出将来的日期)编写一个程序,提示用户输入代表今天日期的数字(周日为0,周一为1,……,周六为6)。同时,提示用户输入一个今天之后的天数,作为代表将来某天的数字,然后显示这天是星期几。
/*
数据:今天的周几 未来的天数 未来的周几
(0+12)%7=5
(4+4)%7=1
(今天的周几+未来的天数)%7=未来的周几
1月1日是周一 1%7=1
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20
1月20日 20%7=6
步骤:
1.输入今天是周几
2.输入未来的几天
3.打印未来的几天是周几
*/
import java.util.Scanner;
public class XT16{
public static void main(String[] args){
//1.
Scanner scanner=new Scanner(System.in);
System.out.print("今天是周几:");
int today=scanner.nextInt();
//2.
System.out.print("未来的几天:");
int future=scanner.nextInt();
//3.
int futureDay=(today+future)%7;
String todayStr="";
String futureDayStr="";
if(today==0){
todayStr="周日";
}else if(today==1){
todayStr="周一";
}else if(today==2){
todayStr="周二";
}else if(today==3){
todayStr="周三";
}else if(today==4){
todayStr="周四";
}else if(today==5){
todayStr="周五";
}else if(today==6){
todayStr="周六";
}
if(futureDay==0){
futureDayStr="周日";
}else if(futureDay==1){
futureDayStr="周一";
}else if(futureDay==2){
futureDayStr="周二";
}else if(futureDay==3){
futureDayStr="周三";
}else if(futureDay==4){
futureDayStr="周四";
}else if(futureDay==5){
futureDayStr="周五";
}else if(futureDay==6){
futureDayStr="周六";
}
System.out.println("今天是"+todayStr+",未来的日子是"+futureDayStr);
}
}
17.回文数字)编写一个程序,提示用户输入一个三位的整数,然后确定它是否是回文数。如果一个数字从左到右以及从右到左都是一样的,这个数字称为回文数。负数的处理和正数一样。
/*
12345
12345%10=5 12345/10=1234
1234%10=4 1234/10=123
123%10=3 123/10=12
12%10=2 12/10=1
1%10=1 1/10=0
54321
5*10000+4*1000+3*100+2*10+1
(5*1000+4*100+3*10+2)*10+1
((5*100+4*10+3)*10+2)*10+1
(((5*10+4)*10+3)*10+2)*10+1
((((0*10+5)*10+4)*10+3)*10+2)*10+1
sum=0
sum=sum*10+5; //5
sum=sum*10+4; //54
sum=sum*10+3; //543
sum=sum*10+2; //5432
sum=sum*10+1; //54321
*/
import java.util.Scanner;
public class XT17{
public static void main(String[] args){
//1.输入一个数字
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int num=scanner.nextInt();
int temp=num;
//2.拼接出该数字的反序
int sum=0;
sum=sum*10+num%10;
num/=10;
sum=sum*10+num%10;
num/=10;
sum=sum*10+num%10;
num/=10;
sum=sum*10+num%10;
num/=10;
sum=sum*10+num%10;
num/=10;
sum=sum*10+num%10;
num/=10;
if(sum==temp){
System.out.println("是回文");
}else{
System.out.println("不是回文");
}
}
}
18。(游戏:彩票)修改程序清单3-8,产生两位整数的彩票。程序提示用户输入一个两位整数,然后依照下面判定用户是否赢得奖金:
/*数据:随机产生三位数,随机数与用户输入的数进行比较
随机数
Math.random() *90+10
Random nextInt(90)+10
调用这个方法会返回一个双精度的随机值 d 且满足 0.0 <=d < 1.0。这样,(1nt)(Math.rando«()*l0) 会返回一个随机的一位整数 (即0到9之间的数)
指令:计算用户输入的数的十位和个位,,计算随机生成数的十位和个位,比较
*/
import java.util.*;
public class XT18{
public static void main (String[] args){
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个两位数:");//输入用户的两位数
int use = scanner.nextInt();
Random random =new Random();
int com =random.nextInt(90)+10;//产生随机数,范围10~99
int a,b,c,d;
a=use/10;//用户输入数的十位赋值给a
b=use%10;//用户输入数的个位赋值b
c=com/10;//随机数的十位赋值给c
d=com%10;//随机数的个位赋值d
if(use==com) {
System.out.print("中奖,奖金为10000美元");
}//输出结果1
else if (use==d*10+c) {
System.out.print("中奖,奖金为3000美元");
}//输出结果2
else if (a==c||a==d||b==c||b==d) {
System.out.print("中奖,奖金为1000美元");
}//输出结果3
}
}
19.(游戏:剪刀、石头、布)编写可以玩流行的剪刀-石头-布游戏的程序。(剪刀可以剪布,石头可以砸剪刀,而布可以包石头。)程序提示用户随机产生一个数,这个数为0、1或者2,分别表示石头、剪刀和布。程序提示用户输入值0、1或者2,然后显示一条消息,表明用户和计算机谁赢了游戏,谁输了游戏,或是打成平手。
/*
数据:电脑随机产生的一个数字com 用户输入的一个数字usr
0 1 2
剪刀 石头 布
步骤:
1.提示用户输入一个数字
2.计算机随机产生一个数字
3.将两个数字进行对比,分输赢
平局 com==usr
用户赢 usr=0 com=2 | usr=1 com=0 | usr=2 com=1
用户输 剩下的都是用户输
随机数
Math.random() [0,1.0)*3 -> [0,3.0)->(int)[0,3.0)
Random nextInt(n)
*/
import java.util.*;
public class XT19{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);//1.提示用户输入一个数字
System.out.print("请输入 剪刀0 石头1 布2:");
int usr=scanner.nextInt();
//2.计算机随机产生一个数字
Random random=new Random();
int com=random.nextInt(3);
String usrStr="";
String comStr="";
switch(usr){
case 0: //if usr==0
usrStr="剪刀";
break;
case 1:// if usr==1
usrStr="石头";
break;
case 2:// if usr==2
usrStr="布";
break;
}
switch(com){
case 0:
comStr="剪刀";
break;
case 1:
comStr="石头";
break;
case 2:
comStr="布";
break;
}
//3.将两个数字进行对比,分输赢
if(usr==com){
System.out.printf("用户是%s,电脑是%s,平局",usrStr,comStr);
}else if(usr==0&&com==2 || usr==1&&com==0 || usr==2&&com==1){
System.out.printf("用户是%s,电脑是%s,用户赢",usrStr,comStr);
}else{
System.out.printf("用户是%s,电脑是%s,用户输",usrStr,comStr);
}
}
}
20.(科学:某天是星期几)泽勒一致性是由克里斯汀\LARGE \cdot泽勒开发的用于计算某天是星期几的算法。这个公式是:
h = (q+(26(m+1)/10+k+k/4+j/4+5/j))%7
其中:
h是一个星期中的某一天(0为星期六;1为星期天;2为星期一;3为星期二;4为星期三;5为星期四;6为星期五)。
q是某月的第几天。
m是月份(3为三月,4为四月,……,12为十二月)。一月和二月分别记为上一年的13和14月。
j是year/100。
k是该世纪的第几年(即year%100)。
注意:公式中的除法执行一个整数相除。编写程序,提示用户输入年、月、和该月的哪一天,然后显示它是一周中的星期几。
import java.util.Scanner;
public class XT20{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.先输入年份
System.out.print("请输入年份:");
int year=scanner.nextInt();
//2.输入月份 1月 2月分别用13 14代替 同时year-1
System.out.print("请输入月份:");
int month=scanner.nextInt();
//3.输入日期
System.out.print("请输入日期:");
int day=scanner.nextInt();
//4.对特殊的1月和2月做处理
if(month==1||month==2){
month+=12;
year-=1;
}
//5.套公式
int h=(day+26*(month+1)/10+year%100+year%100/4+year/100/4+5*year/100)%7;
switch(h){
case 0:
System.out.println("是周六");
break;
case 1:
System.out.println("是周日");
break;
case 2:
System.out.println("是周一");
break;
case 3:
System.out.println("是周二");
break;
case 4:
System.out.println("是周三");
break;
case 5:
System.out.println("是周四");
break;
case 6:
System.out.println("是周五");
break;
}
}
}
21.几何:点是否在圆内?)编写程序,提示用户输入一个点(x, y),然后检查这个点是否在以原点(0,0)为圆心、半径为10的圆内。例如:(4,5)是圆内的一点,而(9,9)是圆外的一点
/*
数据:圆的圆心 圆的半径 点的坐标 距离
步骤:
1.提示用户输入点的坐标
2.计算点到圆心之间的距离
3.判断距离和半径之间的关系
距离>半径 点在圆外
距离==半径 点在圆上
距离<半径 点在圆内
*/
import java.util.Scanner;
public class XT21{
public static void main(String[] args){
//1.提示用户输入点的坐标
Scanner scanner=new Scanner(System.in);
System.out.print("请输入坐标点:");
double x=scanner.nextDouble();
double y=scanner.nextDouble();
//2.计算点到圆心之间的距离
double xo=0;
double yo=0;
double radius=10;
double distance=Math.sqrt(Math.pow(x-xo,2)+Math.pow(y-yo,2));
//3.判断距离和半径之间的关系
if(distance>radius){
System.out.println("点在圆外");
}else if(distance==radius){
System.out.println("点在圆上");
}else{
System.out.println("点在圆内");
}
}
}
22.(几何:点是否在三角形内?)假设一个平面上有一个直角三角形。编写程序,提示用户输入一个点的x坐标和y坐标,然后判断这个点是否在该三角形内
import java.util.Scanner;
public class XT22{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.提示用户输入一个点的坐标
System.out.print("请输入一个坐标:");
double x=scanner.nextDouble();
double y=scanner.nextDouble();
//2.先大致判断一下坐标的范围
//3.再精确的判断坐标的范围
if(x>=0&&x<=200&&y<=-0.5*x+100){
System.out.println("点再三角形内");
}else{
System.out.println("点再三角形外");
}
}
}
23.几何:点是否在矩形内?编写程序。提示用户输入点(x,y),然后检测该点是否在以原点(0,0)为中心、宽为10、高为5的矩形中。例如:(2,2)在矩形内,而(6,4)在矩形外
import java.util.Scanner;
public class XT23{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.先输入大矩形的中心,宽和高
System.out.print("请输入第1个矩形的信息:");
double x1=scanner.nextDouble();
double y1=scanner.nextDouble();
double w1=scanner.nextDouble();
double h1=scanner.nextDouble();
//2.再输入小矩形的中心,宽和高
System.out.print("请输入第2个矩形的信息:");
double x2=scanner.nextDouble();
double y2=scanner.nextDouble();
double w2=scanner.nextDouble();
double h2=scanner.nextDouble();
double inXMin=x1-(w1-w2)/2;
double inXMax=x1+(w1-w2)/2;
double inYMin=y1-(h1-h2)/2;
double inYMax=y1+(h1-h2)/2;
double outXMin=x1-(w1+w2)/2;
double outXMax=x1+(w1+w2)/2;
double outYMin=y1-(h1+h2)/2;
double outYMax=y1+(h1+h2)/2;
if(x2>=inXMin&&x2<=inXMax&&y2>=inYMin&&y2<=inYMax){
System.out.println("小矩形在大矩形里面!");
}else if(x2<=outXMin||x2>=outXMax||y2<=outYMin||y2>=outYMax){
System.out.println("小矩形在大矩形外面!");
}else{
System.out.println("小矩形和大矩形相交!");
}
}
}
24.(统计正教和负數的个教然后计算这些教的平均值)编写程序,读人未指定个数的整数,判断读人的正数有多少个,读入的负数有多少个,然后计算这些输人值的总和及其平均值(不对 0 计数)。当输人为 0时,表明程序结束。将平均值以浮点数显示。
import java.util.Scanner;
/*
输入一个数字
再判断数字是否为0
如果为0则退出
不是则继续
*/
public class XT24{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
double sum=0; //总和
int positives=0; //正数的个数
int negatives=0; //负数的个数
System.out.print("请输入若干数字:");
while(true){//进入循环
int num=scanner.nextInt();
if(num!=0){
sum+=num;
if(num>0){
positives++;
}else{
negatives++;
}
}else{
break; //跳出当前循环
}
}
if(positives+negatives==0){
System.out.println("没有其他数字的输入,除了0");
}else{
System.out.println("正数的个数"+positives);
System.out.println("负数的个数"+negatives);
System.out.println("总和"+sum);
System.out.println("平均值"+sum/(positives+negatives));
}
}
}
import java.util.Scanner;
public class XT25{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.输入两个数字
System.out.print("请输入两个数字:");
int n1=scanner.nextInt();
int n2=scanner.nextInt();
int gcd=1;
for(int i=n1<n2?n1:n2;i>=1;i--){
if(n1%i==0&&n2%i==0){
gcd=i;
break;
}
}
System.out.println(gcd);
}
}
26.(找出一个整数的因子)编写程序,读入一个整数,然后以升序显示它的所有最小因子。例如,若输人的整数是 120, 那么输出就应该是:2,2, 2, 3, 5。
/*
120 2~120 ->2
60 2~60 ->2
30 2~30 ->2
15 2~15 ->3
5 2~5 ->5
1
*/
import java.util.Scanner;
public class XT26{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int num=scanner.nextInt();
while(true){
for(int i=2;i<=num;i++){
if(num%i==0){
System.out.print(i+" ");
num=num/i;
break;
}
}
if(num==1){
break;
}
}
}
}
/*
4 3 2 1 2 3 4
-3 -2 -2 0 1 2 3
第4行 x∈[-3,3] y=|x|+1
第5行 x∈[-4,4] y=|x|+1
*/
import java.util.Scanner;
public class XT27{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入行数:");
int line=scanner.nextInt();
for(int i=1;i<=line;i++){
for(int k=1;k<=(line-i);k++){
if(line<10){
System.out.print(" ");
}else{
System.out.print(" ");
}
}
for(int x=-(i-1);x<=i-1;x++){
if(line<10){
System.out.printf("%-2d",Math.abs(x)+1);
}else{
System.out.printf("%-3d",Math.abs(x)+1);
}
}
System.out.println();
}
}
}
此题用到了for循环以及它的嵌套循环,最重要的是对数字金字塔如何从中间分开,然后左右两边打印数字。利用绝对值的特性对数字进行打印。第一个for循环是打印每行的数字,第二个for循环是打印每行的空格数,最后一个for循环比较难,打印的是数字。因为绝对值中,比如输入7,它的最后一行应该是-7到7,但是-7到7中间会有一个零,所以得想办法将零去掉,最简单的就是让它从-6到6打印,最后再加1,不仅将零去掉,而且不影响它第七行的数字。
利用绝对值
*/
public class XT28{
public static void main(String[] args){
for(int i=1;i<=8;i++){ //行
for(int j=1;j<=8-i;j++){
System.out.print(" ");
}
for(int k=-(i-1);k<=i-1;k++){ //列的次方输出
System.out.printf("%4.0f",Math.pow(2,i-1-Math.abs(k)));
}
System.out.println();
}
}
}
这道题和之前的题一样,最重要的还是在最后一个for循环的打印。从题中可以看出来每行数字都是2^(i-1),然后把中间看作是分割线,这样又会利用到绝对值。从第三个for循环来看,最大是2的7次方,但是有八行,所有我们可以将for循环里面的k定义为 -(i-1),比如,当i为8时,k=-7,所以下面的i-1-Math.abs(k)就可以控制幂了。