|
一、顺序算法
public static void main(String args[]){
//钱>50万
int money=30;
if(money>50){
System.out.println("买宝马");
}
System.out.println("上班");
}
if语句注意点分析:

if--else语句
import java.util.Scanner;//包的导入
//import java.lang.*;默认导入包
Scanner in=new Scanner(System.in);
System.out.print("请输入成绩:");
int score=in.nextInt();
String d=in.next();
if(score<=60){
System.out.println("下次上课买好吃的");
}else{
System.out.println("你很棒!");
}
注意点:控制台输入,需导入一个相关的包
import java.util.Scanner;//包的导入
//import java.lang.*;默认导入包
Scanner in=new Scanner(System.in);
System.out.print("请输入成绩:");
int score=in.nextInt();
for语句、while语句关系
for语句是while语句的简化,把初始化、条件比较、迭代语句规划在一个括号里面
有下面几种情况,一般用while语句不用for语句
(1)条件表达式复杂:用while提高可读性;
(2)循环次数不明确用while。
算法题目
1.控制台输入三个整数a、b、c比较大小并按从小到大的顺序输出。
package javalearn.qwe;
import java.util.Scanner;
public class Learn {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("请输入第一个数:");
int a=in.nextInt();
System.out.println("请输入第二个数:");
int b=in.nextInt();
System.out.println("请输入第三个数:");
int c=in.nextInt();
int temp=0;
if(a>b){
temp=a;
a=b;
b=temp;
}
if(a>c){
temp=a;
a=c;
c=temp;
}
if(b>c){
temp=b;
b=c;
c=temp;
}
System.out.println("从小到大顺序输出:"+a+"<"+b+"<"+c);
}
}
2.控制台输入一个三位数判断是否是水仙花数(num=百位数字三次方+十位数字三次方+个位数字三次方)。
import java.util.Scanner;
public class PanShu {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("请输入三位整数:");
int sum=in.nextInt();
int one, two, three,temp;
one=sum/100;//百位数
two=(sum/10)%10;//十位数
three=(sum%100)%10;//个位数
temp=one*one*one+two*two*two+three*three*three;
if(sum==temp){
System.out.println(sum+"是水仙花数!");
}else{
System.out.println(sum+"不是水仙花数!");
}
}
}
public class ShuiXianHua {
/**
* 水仙花数分两步:1.水仙花数判断条件;2.循环内的水仙花数以及统计个数
* 1.水仙花数的判断:
* (1)获取三位数的个个位数上面的具体数字
* 百位数:num/100 十位数:num%100/10或(num/10)%10 个位数:num%10或num%100%10
* (2)水仙花数等于每位上的数字三次方再相加,判断是否与原数相等
* 2.统计个数:
* 在判断语句中加迭代语句
* @param args
*/
public static void main(String args[]){
int one,two,three;
int sum=0,i=0;
for(int num=100;num<1000;num++){
one=num/100;
two=(num/10)%10;
three=num%10;
sum=one*one*one+two*two*two+three*three*three;
if(sum==num){
i++;
System.out.println("输出水仙花数:"+num);
}
}
System.out.println("统计100--1000的水仙花数共计:"+i+"个");
}
}
3.控制台输入一个整数判断是否被3、5、7整除。
import java.util.Scanner;
public class TestDemo {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("请输入整数:");
int number=in.nextInt();
if(number%3==0&&number%5==0&&number%7==0){
System.out.println(number+"可以被3、5、7整除");
}else{
System.err.println(number+"不能被3、5、7整除");
}
4.控制台输入一个上限数进行累加用do-while、while、for语句分别进行运算。
(1)do-while语句
import java.util.Scanner;
public class TestDemo {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("请输入整数:");
int number=in.nextInt();
int sum=0,i=0;
do{
sum+=i;
i++;
}while(i<number);
System.out.println("累加结果:"+sum);
}
}
(2)for语句
import java.util.Scanner;
public class TestDemo {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("请输入整数:");
int number=in.nextInt();
int sum=0;
for(int i=0;i<=number;i++){
sum+=i;
}
System.out.println("累加结果:"+sum);
}
}
(3)while语句
import java.util.Scanner;
public class TestDemo {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("请输入整数:");
int number=in.nextInt();
int sum=0,i=0;
while(i<number){
sum+=i;
i++;
}
5.控制台输入两个数判断它们的最大公约数与最小公倍数。
(1)一个程序运用辗转相除法求最大公约数以及最小公倍数=num1*num2/最大公约数。
import java.util.Scanner;
public class MaxMin {
public static void main(String args[]){
/**
* 最大公约数:辗转相除法;
* 即:num1、num2,num1%num2求余,为0,则num2为最大公约数
* 否则:把num2给num1,把余数给num2继续求余,直到余数为0,输出num2为最大公约数
* 最小公倍数:minnum=num1*num2/maxnum;
*/
Scanner in=new Scanner(System.in);
System.out.println("请输入第一个整数:");
int num1=in.nextInt();
int temp1=num1;
System.out.println("请输入第二个整数:");
int num2=in.nextInt();
int temp2=num2;
int i=num1%num2;
if(i==0){
System.out.println(num2+"是两数最大公约数!");
System.out.println(num1+"是两数最小公倍数!");
}else{
do{
num1=num2;
num2=i;
i=num1%num2;
}while(i!=0);
System.out.println(num2+"是两数最大公约数!");
int sum=(temp1*temp2)/num2;
System.out.println(sum+"是两数最小公倍数!");
}
}
}
(2)分开用传统的方法求最大公约数
import java.util.Scanner;
public class MaxShu {
public static void main(String args[]){
/**
* 最大公约数:传统算法
* 1.输入两个整数;
* 2.运用三目运算找出两数中最小的那个数;
* 3.最大公约数最大为最小的那个数;
* 4.从最小的数往前找,第一个能被两数 整除的数即为最大公约数。
*/
Scanner in=new Scanner(System.in);
System.out.println("请输入两个数:");
int num1=in.nextInt();
int num2=in.nextInt();
int min=num1<num2?num1:num2;
for(int i=min;i>=1;i--){
if(num1%i==0&&num2%i==0){
System.out.println(i+"是"+num1+"、"+num2+"的最大公约数!");break;
}
}
}
}
(3)传统方法求最小公倍数
import java.util.Scanner;
public class MinShu {
public static void main(String args[]){
/**
* 最小公倍数:传统算法
* 1.找到两个数中最大的,从最大的数往后循环找能整除两个数的数,故此该数为他俩的倍数;
* 2.找到的第一个数为最小公倍数,跳出循环
*/
Scanner in=new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1=in.nextInt();
System.out.println("请输入第二个数:");
int num2=in.nextInt();
int i=num1>num2?num1:num2;
for(int j=i;j<num1*num2;j++){
if(j%num1==0&&j%num2==0){
System.out.println(j+"是num1,num2的最小公倍数!");break;
}
}
}
}
6.控制台输入一个数判断该数是否为质数。
import java.util.Scanner;
public class Primer {
/**
* 判断是否为质数
* 1.只能被1和自身整除的数,为质数/素数
* 2.循环:大于2小于自身(2<=i<num)
* 3.条件语句有两种:
* (1)num%i==0&&num==i;
* (2)num%i!=0(2<=i<num)
* @param args
*/
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("请输入一个整数:");
int num=in.nextInt();
for(int i=2;i<=num;i++){
if(num%i==0&&num==i){
System.out.println(num+"是一个质数!");
}else if(num%i==0&&num!=i){
System.out.println(num+"不是一个质数!");
break;
}
}
}
}
7.兔子繁殖问题
import java.util.Scanner;
public class TuZi {
public static void main(String args[]){
/**
* 兔子问题相当于分波契数列:1、1、2、3、5、8、13、21.....
* 前两个数之后,每一个数均是前两个数之和
*/
Scanner in=new Scanner(System.in);
System.out.println("请输入月份:");
int month=in.nextInt();
int temp1=1;
int temp2=1;
int num=0;
for(int i=1;i<=month;i++){
if (i<=2){
num=1;
}else{
num=temp1+temp2;
temp1=temp2;
temp2=num;
}
System.out.print(num+" ");
}
System.out.println();
System.out.println("兔子当月总数:"+num);
}
}
8.百钱买百鸡问题:公元前五世纪,我国古代数学家张丘建在《算经》一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
package javalearn5.three;
/**
* 百钱买百鸡问题
* 叙述:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
* 分析:
* 1.全部买公鸡:最多20只;
* 2.全部买母鸡:最多33只;
* 3.买小鸡:上限100只鸡,小鸡最多100只。
* 4.条件语句:公鸡+母鸡+小鸡=100只鸡;公鸡*5+母鸡*3+小鸡/3=100钱
* @author Dick
*
*/
public class Chicken {
public static void main(String args[]){
for(int x=0;x<20;x++){
for(int y=0;y<33;y++){
for(int z=0;z<100;z++){
if(x+y+z==100&&5*x+3*y+z/3==100){
System.out.println("公鸡有:"+x+"、母鸡有:"+y+"、小鸡有:"+z);
}
}
}
}
}
}
9. 9X9乘法口诀打印输出。
public static void main(String args[]){
/**
* 9X9乘法口诀
* 1X1=1
1X2=2 2X2=4
1X3=3 2X3=6 3X3=9
1X4=4 2X4=8 3X4=12 4X4=16
1X5=5 2X5=10 3X5=15 4X5=20 5X5=25
1X6=6 2X6=12 3X6=18 4X6=24 5X6=30 6X6=36
1X7=7 2X7=14 3X7=21 4X7=28 5X7=35 6X7=42 7X7=49
1X8=8 2X8=16 3X8=24 4X8=32 5X8=40 6X8=48 7X8=56 8X8=64
1X9=9 2X9=18 3X9=27 4X9=36 5X9=45 6X9=54 7X9=63 8X9=72 9X9=81
观察行:每行表达式个数和行数相等
观察列:每列表达式个数递减
总结:嵌套循环
for(int i=1;i<10;i++){
for(int j=1;j<=i;j++){
int sum=i*j;
System.out.print(j+"X"+i+"="+sum+" ");
if(i==j){
System.out.println();
}
}
}
10.打印菱形图案用星号。
import java.util.Scanner;
public class ChengFaBiao {
public static void main(String args[]){
/**
* 打印菱形
* 分析:
* *
***
*****
*******
*********
***********
*********
*******
*****
***
*
*1.考虑空格、星号与行数之间的关系;
*2.前六行:(以第六行为基准)
*(1)星号:1、3、5、7、9、11依次递增;2*row-1
*(2)空格:10、8、6、4、2、0依次递减;第六行星号数-row
*3.后五行:(以第一行为基准)
*(1)星号:9、7、5、3、1依次递减;2*(输入行数(6)-1)-1
*(2)空格:0、2、4、6、8依次递增;
*/
Scanner in=new Scanner(System.in);
System.out.println("请输入整数:");
int n=in.nextInt();
for(int row1=1;row1<=n;row1++){
for(int konge=n-row1;konge>0;konge--){
System.out.print(" ");
}
for(int i=1;i<=2*row1-1;i++){
System.out.print("*");
}
System.out.println();
}
for(int row2=n-1;row2>0;row2--){
for(int k=row2-1;k<n-1;k++){
System.out.print(" ");
}
for(int i=1;i<=2*row2-1;i++){
System.out.print("*");
}
System.out.println();
}
}
}
11.自动取款机支付密码设置
import java.util.Scanner;
public class Pwd {
public static void main(String args[]){
Scanner in= new Scanner(System.in);
int pwd;
int num=1;
do{
System.out.println("请输入您的密码:");
pwd=in.nextInt();
System.out.println("请再次输入您的密码:");
pwd=in.nextInt();
num++;
if(num>3){
System.out.println("次数已达上限!");
break;
}
}while(pwd!=123456);
System.out.println("请选择业务,祝您愉快!");
}
}
12.控制台输入一个年月日判断是该年的第几天。
import java.util.Scanner;
public class Date {
public static void main(String args[]){
Scanner in=new Scanner(System.in);
System.out.println("请输入年份:");
int year=in.nextInt();
System.out.println("请输入月份:");
int month=in.nextInt();
System.out.println("请输入日期:");
int day=in.nextInt();
System.out.println("输入日期为:"+year+"年"+month+"月"+day+"日");
switch(month-1){
case 11:day+=30;
case 10:day+=31;
case 9:day+=30;
case 8:day+=31;
case 7:day+=31;
case 6:day+=30;
case 5:day+=31;
case 4:day+=30;
case 3:day+=31;
case 2:day+=28;
case 1:day+=31;break;
default :
System.out.println("您输入的数据有误!请核实后,再次输入!");break;
//case 12:day+=31;
}
if((year%4==0&&year%100!=0)||year%400==0){
day+=1;
System.out.println(year+"是瑞年!");
System.out.println("您输入的是"+year+"中的第"+day+"天!");
}else{
System.out.println(year+"是平年!");
System.out.println("您输入的是"+year+"中的第"+day+"天!");
}
}
}
|