控制语句

Java语言中有三种程序结构,分别是顺序结构、选择结构和循环结构。

顺序结构的程序按照语句在程序中的物理位置顺序执行,这是一种最基本的结构。

选择结构可以用if 、if-else 和 switch 语句来实现。if 和 if-else 语句都是根据给定的条件决定哪些语句执行,哪些语句不执行。if 语句只能判断一种情况, if-else 可以判断两种情况,如果有更多种情况可以用嵌套的 if 语句,嵌套的 if 语句可以写成 if-else-if 形式,提高程序的清晰性和易读性。

switch 语句也可以实现多种选择判断,但灵活性不如 if 。switch 与 if 的区别在于 if 可以判断无数种情况,而 switch 只可以判断有限种情况。

循环结构有三种程序,分别是 while 、do-while 和 for 。实际编写程序过程中,三中循环可以互相代替,但是有些问题可能用其中的某个循环更合适。for 循环是三种循环中最常用的循环。

循环是根据循环条件来执行的,当给定的条件不成立时,则循环结束。在有些情况下,虽然满足循环条件,但也不想让循环继续执行,这时可以用 break 语句或 continue 语句提前结束循环。break 语句和 continue 语句还可以带标号,可以对程序进行更灵活的控制(在C语言中有 goto 语句,可以实现程序的灵活转向,但随意使用 goto 语句使程序结构混乱,所以在Java语言中摒弃了 goto 语句。但没有 goto 的语言是不完整的语言,有些程序不好实现,所以Java 用带标号的 break 和 continue 替代)。

一、顺序结构

求一元二次方程 ax²+bx=c=0 的根,其中 a≠0 , b²-4ac≥0 .

import java.util.*;
public class Main {
	public static void main(String args[])
	{
		double a,b,c;
		double p,q;
		double x1,x2;
		
		Scanner reader=new Scanner(System.in);
		System.out.println("请输入一元二次方程的三个系数:");
		a=reader.nextDouble();
		b=reader.nextDouble();
		c=reader.nextDouble();
		
		p=-b/(2*a);
		q=Math.sqrt(b*b-4*a*c)/(2*a);
		
		x1=p+q;
		x2=p-q;
		
		System.out.println("一元二次方程的根是:");
		System.out.printf("x1=%.2f,x2=%.2f\n",x1,x2);
	}

}



二、选择结构

1. 将三个整数按由小到大的顺序排列并输出。

import java.util.*;
public class Mainn {
	public static void main(String args[])
	{
		int a,b,c,t;
		Scanner reader=new Scanner(System.in);
		
		System.out.println("请输入三个整数:");
		a=reader.nextInt();
		b=reader.nextInt();
		c=reader.nextInt();
		
		if(a>b)
		{
			t=a;
			a=b;
			b=t;
		}
		if(a>c)
		{
			t=a;
			a=c;
			c=t;
		}
		if(b>c)
		{
			t=b;
			b=c;
			c=t;
		}
		
		System.out.println("三个数的由小到大顺序是:");
		System.out.printf("%d %d %d\n",a,b,c);
	}

}

2. 改写求一元二次方程根的程序,使得程序能够求解出任何一个一元二次方程的根。

import java.util.*;
public class Main {
	public static void main(String args[])
	{
		double a,b,c;
		double p,q,disc;
		double x1,x2;
		
		Scanner reader=new Scanner(System.in);
		System.out.println("请输入一元二次方程的三个系数:");
		a=reader.nextDouble();
		b=reader.nextDouble();
		c=reader.nextDouble();
		
		disc=b*b-4*a*c;
		p=-b/(2*a);
		q=Math.sqrt(Math.abs(disc))/(2*a);
		
		if(a==0.0)
		{
			System.out.println("二次方的系数为零,不是一个二次方程");
			return ;
		}
		else if(disc>0.0)
		{
			x1=p+q;
			x2=p-q;
			System.out.println("方程有两个不等的实根:");
			System.out.printf("x1=%.2f,x2=%.2f\n",x1,x2);
		}
		else if(disc==0.0)
		{
			x1=x2=p;
			System.out.println("方程有两个相等的实根:");
			System.out.printf("x1=x2=%.2f\n",x1);
		}
		else
		{
			System.out.println("方程有两个复根:");
			System.out.printf("x1=%.2f%+.2fi",p,q);
			System.out.println("");
			System.out.printf("x2=%.2f%+.2fi",p,-q);
			System.out.println("");
		}
	}
}

3.将学生的成绩等级转换成对应的百分制成绩。成绩对应关系:A——85~100,B——70~84,C——60~69,D——不合格。编写程序,输入学生的成绩等级,输出对应的百分制成绩。

import java.util.*;
public class Main {
	public static void main(String args[])
	{
		String grade;
		Scanner reader=new Scanner(System.in);
		
		System.out.println("输入学生的成绩等级(A、B、C或D):");
		grade=reader.next();
		
		switch(grade.charAt(0))
		{
		case 'A':System.out.println("百分成绩为:85~100.");break;
		case 'B':System.out.println("百分成绩为:70~84.");break;
		case 'C':System.out.println("百分成绩为:60~69.");break;
		case 'D':System.out.println("成绩不合格。");break;
		default:System.out.println("输入错误。");
		}
	}
}

4.给出年月,输出该月天数。

import java.util.*;
public class Main {
	public static void main(String args[])
	{
		int year,month,days;
		Scanner reader=new Scanner(System.in);
		
		System.out.print("请输入年月:");
		year=reader.nextInt();
		month=reader.nextInt();
		
		switch(month)
		{
		case 1:
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:days=31;System.out.printf("%d年%d月有%d天。",year,month,days);break;
		case 2:days=28;
		if((year%4==0 && year%100!=0)||(year%400==0))
			days=29;
		System.out.printf("%d年%d月有%d天。",year,month,days);break;
		case 4:
		case 6:
		case 9:
		case 11:days=30;System.out.printf("%d年%d月有%d天。",year,month,days);break;
		default:System.out.println("月份输入错误!");
		}
	}
}

三、循环结构

1. 用下面的多项式计算圆周率的近似值,知道其中某一项的绝对值小于或等于1E-6。

π/4=1-1/3+1/5-1/7+……

import java.util.*;
public class Mainn {
	public static void main(String args[])
	{
		int i=1,sign=1;
		double item,pi=0;
		
		do
		{
			item=sign*1.0/i;
			pi+=item;
			i+=2;
			sign*=-1;
		}while(Math.abs(item)>1.0E-6);
		pi*=4;
		System.out.printf("PI=%.6f\n",pi);
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值