一、实验目的
1.理解Java程序语法结构
2.掌握顺序结构、选择结构和循环结构语法的程序设计方法
3.熟悉数组等的定义和使用。
二、实验要求
1. 编写使用不同选择结构的程序
2. 编写使用不同循环结构的程序
三、实验步骤及结果
(一)使用选择语句
1.使用if...else 语句
(1)程序功能:使用if...else 语句构造多分支,判断某一年是否为闰年。键盘输入年份。闰年的条件是符合下面二者之一:能被4 整除,但不能被100 整除;能被100 整除,又能被400 整除。
(2)编写源程序文件,代码如下。
import java.util.Scanner;
public class Leap {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入年份:");
int year=sc.nextInt();
if((year%4==0&&year%100!=0)||year%400==0){
System.out.println("该年为闰年");
}
else
{
System.out.println("该年不是闰年");
}
}
}
(3)编译运行程序,其结果如图所示。
2.使用switch 语句
(1)程序功能:在不同温度t时显示不同的解释说明。键盘输入温度(-5℃~40℃)。
t<10℃: 有点冷。要多穿衣服;
10℃<= t <25℃:正合适。出去玩吧。
25℃<= t <35℃:有点热。
t >=35℃:太热了!开空调。
(2)程序源代码如下。
import java.util.Scanner;
class Temp{
public static void main(String args[]) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入温度:");
int c=sc.nextInt();
switch (c<10?1:c<25?2:c<35?3:4) {
case 1:
System.out.println(" "+c+"℃ 有点冷。要多穿衣服。");
case 2:
System.out.println(" "+c+"℃ 正合适。出去玩吧。");
case 3:
System.out.println(" "+c+"℃ 有点热。");
default:
System.out.println(" "+c+"℃ 太热了!开空调。");
}
}
}
(3)编译运行程序,其结果如图所示。
(4)增加 break; 语句,重新编译运行,对比下效果,思考原因。
import java.util.Scanner;
public class Test {
public static void main(String[] args) throws Exception {
Scanner sc=new Scanner(System.in);
System.out.println("请输入温度:");
int c = sc.nextInt();
switch (c<10?1:c<25?2:c<35?3:4){
case 1:
System.out.println(""+c+"℃ 有点冷。要多穿衣服!");
break;
case 2:
System.out.println(""+c+"℃ 正合适。出去玩吧!");
break;
case 3:
System.out.println(""+c+"℃ 有点热!");
break;
default:
System.out.println(""+c+"℃ 太热了!开空调!");
break;
}
}
}
(二)使用循环语句
1. for 循环语句练习
(1) 程序功能:将1至100之间所有的整数求和。
(2) 程序源代码如下。
public class Sum {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i < 101; i++) {
sum += i;
}
System.out.println("将1至100之间所有的整数求和:" + sum);
}
}
(3)编译运行程序,其结果如图所示。
2. while 循环语句练习
(2)程序源代码如下。
public class FindMinimalK {
public static void main(String []args){
int sum=0,k=1;
while (sum<=2000){
k++;
sum+=k;
}
System.out.println("the minimal k="+k);
}
}
(3)编译运行程序,其结果如图所示。
3.do…while 循环语句练习
(1) 程序功能:求8+88+888+…前10项之和,并将求和表达式与所求的和显示出来。
(2) 程序源代码如下。
public class Sum2 {
public static void main(String args[]) {
int sum=0;
int k=0;
int i=1;
do{
sum+=k;
k=k*10+8;
i++;
}
while (i<=10);
System.out.println("8+88+888+…前10项之和为:"+sum);
}
}
(3)编译并运行程序,结果如图所示。
(三)数组
(1)程序功能:定义一个int型的一维数组,数组的长度由键盘输入,为数组中的元素随机赋值。依次完成如下功能:
(a) 输出数组中的元素。每行输出最多5个数字,数字之间用空格键分隔;
(b) 计算数组中元素之和,并输出;
(c) 求出数组中元素的最大值及其位置(若有多个相同的最大值,仅输出第一个),并输出。
(2) 程序源代码如下。
import java.util.Random;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("数组的长度:");
int size=sc.nextInt();
int a[]=new int[size];
int sum=0,max=0,loc=0;
Random random=new Random();
for(int i=0;i<size;i++){
a[i]=random.nextInt(100);
if(i%5==0)
System.out.println();
System.out.printf("%-3d",a[i]);
sum=sum+a[i];
if(max<a[i]){
max=a[i];
loc=i;
}
}
System.out.println();
System.out.println("sum="+sum);
System.out.println("max="+max);
System.out.println("loc="+loc);
}
}
(3)编译并运行程序,结果如图所示。