这是我第四次给大家分享题,如果想看看以前的例题,请点开我的博客,查看作业分栏。谢谢收看。
今天我们来看一些关于流程控制语句的例题,循环是我们经常能使用到的。下面就一起来看下题吧。
Demo03_07
这个题我们还是先找数据:h q m j k year。
大致这个题就分为这些步骤步骤:
1.提示用户输入日期;
2.对特殊的1月和2月做处理
3.计算;
那这个题主要考的就是计算,注意题中提示的1.2月就行,钉准就肯定错不了。
下面是代码演示:
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();
//输入月份 1月 2月分别用13 14代替 同时year-1
System.out.print("请输入月份:");
int month=scanner.nextInt();
//输入日期
System.out.print("请输入日期:");
int day=scanner.nextInt();
//2对特殊的1月和2月做处理
if(month==1||month==2){
month+=12;
year-=1;
}
//3.套公式
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;
}
}
}
Demo03_09
这个题就包含了一点点高中数学知识了,你要计算这个点的位置
具体步骤:
1.提示用户输入一个点的坐标
2.先大致判断一下坐标的范围
3.精确的判断坐标的范围
就这三步一下解决。写题嘛脑子要灵光点。
下面是代码演示:
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("点再三角形外");
}
}
}
Demo03_10
这个题跟上个题差不多也是算距离的
先找数据:中心xy坐标 width height
1.提示用户输入两个矩形的数据
2.判断矩形的空间分布
3.精确坐标的范围
4.得出结论
下面是代码演示:
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("小矩形和大矩形相交!");
}
}
}
Demo03_11
这个题就是让你统计数据并运算,不难,你要盯紧每个数据的分类,很好算的。
1.输入一个数字
2.再判断数字是否为0如果为0则退出不是则继续
3.分辨数据正负,并给相应数组加一。
4.计算总和,平均数
下面是代码演示:
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));
}
}
}
Demo03_12
还是先找数据:n1 n2 k gcd
先整一下思路最大公约数就等于:把两个最小的挑出来,一次减一,除于两个数都能整除,减到1为之,到一则为一。
步骤:
1.输入两数字
2.比较大小,依次递减,整除
3.得出数字,退出循环。
下面是代码演示:
import java.util.Scanner;
class Demo03_12{
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);
}
}
Demo03_16
看这个图先找规律:
第4行的数字1 2 4 8 4 2 1
分别对应二的次方为:0 1 2 3 2 1 0
按照等差数列近似表示为-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
这样我们就能得到循环公式,用绝对值很好算的。
记得要打印空格组成金字塔结构
对于打印一些对称性的三角形图案或者是类似的问题
尽量向绝对值考虑
下面为代码演示:
class Demo03_16{
public static void main(String[] args){
for(int i=1;i<=8;i++){
for(int k=1;k<=8-i;k++){
System.out.print(" ");
}
for(int x=-(i-1);x<=i-1;x++){
System.out.printf("%4d",(int)Math.pow(2,i-1-Math.abs(x)));
}
System.out.println();
}
}
}
Demo03_14
这个题相对于上面来说很简单
1.打印空格
2.打印数字(顺带找出规律)
这个题的规律就是
第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();
}
}
}
今天的分享就到这了,下次再见。