3.1(代数:解一元二次方程)可 以 使 用 下 面 的 公 式 求 一 元 二 次 方 程 的 两 个 根:
b*b-4*a*c 称作一元二次方程的判别式。如果它是正值,那么一元二次方程就有两个实数根。如果它为0, 方程式就只有一个根。如果它是负值,方程式无实根。 编写程序,提示用户输入a,b,c的值,并且显示基于判别式的结果。如果这个判别式为正,显示两个根。如果判别式为 0, 显示一个根。否则,显示 “ The equation has no real roots”(该 方程式无实数根)。
注意:可以使用 Math.pow(x,0.5)来计算
提示用用户输入,计算判别式的大小正负,然后根据判别式的的大小,和根的计算公式去计算方程的解
/*
数据: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;
class Ds3_01{
public static void main(String[] args){
//1.
Scanner scanner=new Scanner(System.in);
System.out.print("请输入a,b,c:");
double a=scanner.nextDouble();
double b=scanner.nextDouble();
double c=scanner.nextDouble();
//2.
double delt=b*b-4*a*c;
//3.
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("无实数解!");
}
}
}
3.3写一个程序,提示用户输入代表今天日期的数字(周 H 为 0, 周一为 1,…… , 周六为 6 )。同时,提示用户输入一个今天之后的天数,作为代表将来某天的数字,然后显示这 天是星期几。
运行事例:
import java.util.Scanner;
public class Ds3_03{
public static void main(String[] srgs){
//提示输入
Scanner scanner = new Scanner(System.in);
System.out.print("今天是周几:");
int today = scanner.nextInt();
System.out.print("未来的几天:");
int future = scanner.nextInt();
//计算未来几天后是周几
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);
}
}
(回文数字)编写一个程序,提示用户输人一个三位的整数,然后确定它是否回文数字。当从左 到右,以及从右到左都是一样的话,这个数字称为回文数。下面是程序的一个运行示例:
import java.util.Scanner;
public class Ds3_04{
public static void main(String[] args){
//请输入一个数字
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个数字:");
int num = scanner.nextInt();
int temp = num;
//拼接出该数字的反序
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("该数字不是回文数字!");
}
}
}
(游戏:剪刀、石头、布)编写可以玩流行的剪刀 - 石头 - 布游戏的程序。(剪刀可以剪布,石头 可以砸剪刀,而布可以包石头。)程序提示用户随机产生一个数,这个数为 0、1或者 2, 分别表 示石头、剪刀和布。程序提示用户输入值 0、1或者 2, 然后显示一条消息,表明用户和计算机 谁贏了游戏,谁输了游戏,或是打成平手。下面是运行示例:
import java.util.Scanner;
import java.util.Random;
class Ds3_06{
public static void main(String[] args){
//提示用户输入
Scanner scanner = new Scanner(System.in);
System.out.print("请输入剪刀0石头1布2:");
int usr=scanner.nextInt();
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;
}
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);
}
}
}
(科学:某天是星期几)泽勒一致性是由克里斯汀 泽勒开发的用于计算某天是星期几的算法。 这个公式是:
其中:h 是一个星期中的某一天(0 为星期六;1 为星期天;2 为星期一;3 为星期二;4 为星期三; 5 为星期四;6 为星期五)。 q 是某月的第几天。 m 是月份(3 为三月,4 为四月,..丨.,2 为十二月)。一月和二月分别记为上一年的 13 和14 月。
j 是世纪数(即year/100)k 是 该 世 纪 的 第 几 年.
注意,公式中的除法执行一个整数相除。编写程序,提示用户输入年、月和该月的哪一天, 然后显示它是一周中的星期几。
下面是一些运行示例:
import java.util.Scanner;
class Demo03_07{
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;
}
}
}
(点是否在圆内?)编写程序,提示用户输人一个点(x, y),然后检査这个点是否在以原 点(0, 0) 为圆心、半径为 10 的圆内。例如:(4, 5)是圆内的一点,而(9, 9) 是圆外的一点.
〆提示:如果一个点到(0, 0) 的距离小于或等于10, 那么该点就在圆内,计算距离的公式是 :
import java.util.Scanner;
class Ds3_08{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
//提示用户输入坐标
System.out.print("请输入一个坐标点:");
double x = scanner.nextDouble();
double y = scanner.nextDouble();
//定义坐标点
double xo=0;
double yo=0;
double radius=10;
//计算圆心到坐标点的距离
double distance=Math.pow(Math.pow(x-xo, 2)+Math.pow(y-yo, 2),0.5);
if(distance>radius){
System.out.println("坐标点在圆外");
}else if(radius==distance){
System.out.println("坐标点在圆上");
}else{
System.out.println("坐标点在圆内");
}
}
}
(几何:两个矩形)编写一个程序,提示用户输入两个矩形中点的 x 坐标和:v 坐标以及它们的宽 度和高度,然后判定第二个矩形是在第一个矩形内,还是和第一个矩形重叠,如图 3-9 所示。
import java.util.Scanner;
class Demo03_10{
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("小矩形和大矩形相交!");
}
}
}
import java.util.Scanner;//导包
public class Ds3_12{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
//提示输入两个数字
System.out.print("请输入两个数字:");
//分别定义两个整型变量
int n1 = scanner.nextInt();
int n2 = scanner.nextInt();
//gcd表示公约数
int gcd = 1;// 1是每个数字的最小公约数
for(int i=n1<n2?n1:n2;i>=1;i--){//i=n1<n2?n1:n2这个是三目运算,n1是否小于n2小于的话就为n1
if(n1%i==0&&n2%i==0){
gcd = i;
break;
}
}
System.out.println("两个数字的最大公约数是:"+gcd);
}
}
/*
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;
class Demo03_14{
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();
}
}
}
class Demo03_15{
public static void main(String[] args){
for(int i=1;i<=6;i++){
for(int j=1;j<=i;j++){
System.out.print(j+" ");
}
System.out.println();
}
System.out.println("==========");
for(int i=1;i<=6;i++){
for(int j=1;j<=7-i;j++){
System.out.print(j+" ");
}
System.out.println();
}
System.out.println("==========");
for(int i=1;i<=6;i++){
for(int k=1;k<=6-i;k++){
System.out.print(" ");
}
for(int j=i;j>=1;j--){
System.out.print(j+" ");
}
System.out.println();
}
System.out.println("==========");
for(int i=1;i<=6;i++){
for(int k=1;k<=i-1;k++){
System.out.print(" ");
}
for(int j=1;j<=7-i;j++){
System.out.print(j+" ");
}
System.out.println();
}
}
}