/*
数据: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 Home3_1{
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("无实数解!");
}
}
}
/*
数据:a,b,c,d,e,f
步骤:
1.提示用户输入四个系数 a,b,c,d, 和两个常数 e,f
2.计算判别式delta的值
3.delta就行判断
3.1如果delta不等于0 则方程组有解
分别计算两个解并输出
3.2如果delta等于0 则方程组无解
输出无解
*/
import java.util.*;
class Home03_02
{
public static void main(String[] args)
{
//1.
Scanner scanner = new Scanner(System.in);
System.out.print("请用户输入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 delt=a*d-b*c;
//3.
if(delt!=0)
{
//3.1
double x=(e*d-b*f)/delt;
double y=(a*f-e*c)/delt;
System.out.println("x is "+x+" , and y is "+y);
}
else
{
//3.2
System.out.println("has no solution");
}
}
}
/*
数据:今天的周几 未来的天数 未来的周几
(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;
class Home3_3{
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);
}
}
/*
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;
class Demo03_04{
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("不是回文");
}
}
}
import java.util.Scanner;class Home03_05
{
public static void main(String[] args)
{
//1.
Scanner scanner = new Scanner(System.in);
int a = (int)(Math.random() * 90 + 10);
System.out.println("本次中奖号码为"+a);
int r = scanner.nextInt();
System.out.println("请输入您的彩票数字"+r);
//2.
int sw = a / 10;//随机数十位
int se = a % 10;//随机数各位
int y = r / 10;//输入数十位
int u = r % 10;//输入数各位
if (r < 10 || r >= 100)
{
System.out.println("请输入一个两位整数");
}
//3.
else
{
if (r == a)
{
System.out.println("奖金10000$");
}else if(y == se && u == sw)
{
System.out.println("奖金为3000$");
}
else if(y == sw || u == se)
{
System.out.println("奖金为1000$");
}
}
}
}
/*
数据:电脑随机产生的一个数字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.*;
class Demo03_06{
public static void main(String[] args){
//1.
Scanner scanner=new Scanner(System.in);
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);
}
}
}
/*
数据:
步骤:年 月 日 星期几
1.提示用户输入 年 月 日
2.通过克里斯汀-泽勒计算某天是星期几的算法公式
h=(day+(26*(month+1)/10)+year%100+(year%100/4)+year/100/4+5*year/100)%7;
*/
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;
}
}
}
/*
数据:圆的圆心 圆的半径 点的坐标 距离
步骤:
1.提示用户输入点的坐标
2.计算点到圆心之间的距离
3.判断距离和半径之间的关系
距离>半径 点在圆外
距离==半径 点在圆上
距离<半径 点在圆内
*/
import java.util.Scanner;
class Demo03_08{
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("点在圆内");
}
}
}
/*
步骤:
1.提示用户输入 X Y的值
2.通过单if语句进行判断
*/
import java.util.Scanner;
class Demo03_09{
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("点再三角形外");
}
}
}
import java.util.Scanner;
class Demo03_10{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//1.输入两个矩形的中心坐标以及宽和高
//1.1先输入大矩形的中心坐标,宽和高
System.out.print("请输入第1个矩形的信息:");
double x1=scanner.nextDouble();
double y1=scanner.nextDouble();
double w1=scanner.nextDouble();
double h1=scanner.nextDouble();
//1.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("小矩形和大矩形相交!");
}
}
}
/*
输入一个数字
再判断数字是否为0
如果为0则退出
不是则继续
*/
import java.util.Scanner;
class Demo03_11{
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;
class Demo03_12{
/*
21 42
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16~21
3 7
*/
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);
}
}
/*
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;
class Demo03_13{
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;
}
}
}
}
import java.util.Scanner;
class Demo03_14{
public static void main(String[] args)
{
//1.提示用户输入一个1~15之间的整数
Scanner scanner=new Scanner(System.in);
System.out.print("请输入行数:");
int line=scanner.nextInt();
//2.
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();
}
}
}
/*
1.第一行: ?i = 1; i < 7; j = 0; ? j <=1; ? ? ?
第二行: ? i = 2; i < 7; j = 0; ? j <= 2; ? ?
第三行: ? i = 3; ?i < 7; j = 0; ? j <= 3; ? ?
? ? ? ? ? ? ? ? ? ? ? ?……
列数 j <= i;
*/
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();
}
}
}
/*
两层for循环,外层控制行数,内层控制列
第一行乘0次2,输出一次
第二行乘以1次2,输出两次
就是先乘以2,然后再除以2
第4行
1 2 4 8 4 2 1
0 1 2 3 2 1 0
x -3 -2 -1 0 1 2 3
第5行
1 2 4 8 16 8 4 2 1
0 1 2 3 4 3 2 1 0
x -4-3-2-1 0 1 2 3 4
*/
import java.util.Scanner;
class Home03_16
{
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++)
{
System.out.print(" ");
}
for(int j=-(i-1);j<=i-1;j++)
{
if(j<=0)
{
System.out.printf("%-4d",(int)Math.pow(2, j+i-1));
}else
{
System.out.printf("%-4d",(int)Math.pow(2, -j+i-1));
}
}
System.out.println();
}
}
}
/*
何为素数 就是除了1和其本身之外 没有其他的数字可以整除的
num
2 ~ m ~ num-1 找到一个数字 如果这个数字m num%m==0 num不是素数
如果一个都没有找到的话 这个数字是素数
*/
class Home3_17{
public static void main(String[] args){
int count=0; //当前素数的个数
boolean flag=true;//默认这个数字是素数
for(int num=2;num<=1000;num++)
{
for(int m=2;m<=num-1;m++)
{
if(num%m==0)//说明num不是素数
{
flag=false;//此时不是素数
break;
}
}
//如果for正常执行完毕 都没有找到 是素数
if(flag)
{
count++;
System.out.print(num+" ");
if(count%8==0)
{
//8 16 24 32
System.out.println();
}
}
flag=true;//flag的初始值为true
}
}
}
import java.util.Scanner;
class Demo03_18{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int imax=scanner.nextInt();
double sum=0;
double flag=1;
for(int i=1;i<=imax;i++){
//sum+=Math.pow(-1.0,i+1);/(2*i-1);
sum+=flag/(2*i-1);
flag=-flag;
}
double pi=sum*4;
System.out.println(pi);
// Math.pow(-1,10) 累乘 for -1*-1*-1....
}
}
import java.util.Scanner;
class Demo03_19{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int imax=scanner.nextInt();
double e=1;
double item=1.0;
for(int i=1;i<=imax;i++){
item=item*i; //n!=(n-1)*n;
e+=1/item;
}
System.out.println(e);
}
}
/*
闰年: 能够被4整除 不能被100整除 或者可以被400整除
*/
class Demo03_20{
public static void main(String[] args){
int count=0;
for(int i=101;i<=2100;i++){
if(i%4==0&&i%100!=0 || i%400==0){
count++;
System.out.print(i+" ");
if(count%10==0){
System.out.println();
}
}
}
System.out.println("\n闰年一共"+count+"个");
}
}
class Demo03_21{
public static void main(String[] args){
//6 : 1 2 3 4 5 6
//28: 1 2 4 7 14
//n : 1 ~ n/2
int sum=0;
for(int n=2;n<=10000;n++){
for(int i=1;i<=n/2;i++){
if(n%i==0){
sum+=i;
}
}
if(n==sum){
System.out.println("完全数"+n);
}
sum=0;
}
}
}
import java.util.*;
class Demo03_22{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
Random random=new Random();
int usrWin=0;
int comWin=0;
while(true){
System.out.print("请输入 剪刀0 石头1 布2:");
int usr=scanner.nextInt();
int com=random.nextInt(3);
String usrStr = "";
String comStr = "";
switch(usr){
case 0:
usrStr = "剪刀";
break;
case 1:
usrStr = "石头";
break;
case 2:
usrStr = "布";
break;
}
switch(com){
case 0:
comStr = "剪刀";
break;
case 1:
comStr = "石头";
break;
case 2:
comStr = "布";
break;
}
if(usr==com){
System.out.printf("电脑是%s,用户是%,此局为平局\n",comStr,usrStr);
}else if(usr==0&&com==2 || usr==1&&com==0 || usr==2&&com==1){
System.out.printf("电脑是%s,用户是%,恭喜您赢了\n",comStr,usrStr);
usrWin++;
}else{
System.out.printf("电脑是%s,用户是%,很遗憾您输了\n",comStr,usrStr);
comWin++;
}
if(usrWin==2||comWin==2){
break;
}
}
if(usrWin==2){
System.out.println("最终玩家赢!");
}else{
System.out.println("最终电脑赢!");
}
}
}
/*
12/2 6 ~ 0
6/2 3 ~ 0
3/2 1 ~ 1
1/2 0 ~ 1
1100
*/
import java.util.Scanner;
class Demo03_23{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("请输入一个数字:");
int num=scanner.nextInt();
String binStr="";
while(true){
binStr=num%2+binStr;//"1100"
num/=2;
if(num==0){
break;
}
}
System.out.println(binStr);
}
}
import java.util.Scanner;
class Demo03_24{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
int num=0;
int max=0;
int count=0;
System.out.print("请输入数字:");
while(true){
num=scanner.nextInt();
if(num==0){
break;
}else if(num>max){
max=num;
count=1;
}else if(num==max){
count++;
}
}
System.out.println("max="+max+",count="+count);
}
}