华南农业大学2015农科Java上机实验【精选文档】
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验1 创建、编译和运行Java程序
17268 计算两个整数的和
从键盘输入两个整数,计算并输出两个整数的和。
import java。
util.Scanner;
public class Main {
public static void main(String[]args){
int a,b;
Scanner input = new Scanner(System.in);
a=input.nextInt();
b=input。
nextInt();
int c = a + b;
System.out。
println(c);
}
}
17269 输出两个整数中的较大的值
从键盘输入两个整数,判断并输出两个整数中较大的值.
import java.util。
Scanner;
public class Main {
public static void main(String[]args) {
int a,b;
Scanner input = new Scanner(System。
in);
a=input.nextInt();
b=input。
nextInt();
if(a〉b)
System。
out.println(a);
else
System.out.println(b);
}
}
实验2 基本数据类型、运算和表达式
18135 在显示屏上显示指定字符
要求编写一个程序,在显示屏上显示如下内容.注:类名必须为Main(大写M) C:\ABC.TXT is "file”
public class Main {
public static void main(String[]args){
System。
out。
print(”C:\\ABC.TXT is \”file\"");
}}
18136 计算圆的面积
由键盘输入圆的半径,计算并输出圆的面积,结果保留2位小数。
注:类名必须为Main(大写M)
import java.util。
Scanner;
import java.text.DecimalFormat;
public class Main {
public static void main(String[]args) {
double a,b,c;
Scanner input = new Scanner(System。
in);
a = input.nextDouble();
b = 3。
14159;
c = a*a*b;
System.out.println(new DecimalFormat("#.##”).format(c));
}
}
18138 输出三位整数的各位数字
从键盘输入一个3位的整数,要求按照:个位、十位和百位的顺序输出三个数字。
输出时,每个数字占单独的一行。
注:类名必须为Main(M大写)
i mport java。
util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System。
in);
int cr = input。
nextInt();
int b, c, d;
b = cr / 100;
c = cr /10 %10;
d = cr % 10;
System。
out。
println("”+ d);
System.out。
println(""+ c);
System.out。
println(””+ b);
}
}
实验3 选择结构程序设计
18139 判断点是否在圆上
由键盘输入一个点的坐标, 要求编程判断这个点是否在单位圆上,点在圆上输出Y,不在圆上输出N。
使用小数点后3位精度进行判断。
注:类名必须用Main(大写M)
import java。
util.Scanner;
public class Main {
public static void main(String[]args){
Scanner input = new Scanner(System.in);
double x = input.nextDouble();
double y = input.nextDouble();
double distance = Math.sqrt(x * x + y *y);
if (Math.abs(distance — 1。
0)< 0。
001){
System.out。
println("Y");
}else {
System。
out。
println(”N”);
} } }
18140 求数的位数
由键盘输入一个不多于9位的正整数,判断并输出它是几位数。
注:类名必须是Main(大写M)import java。
util。
Scanner;
public class Main {
public static void main(String[]args) {
Scanner input = new Scanner(System.in);
int a,place;
a = input。
nextInt();
if(a>99999999){
place=9;
}else if(a>9999999){
place=8;
}else if(a>999999){
place=7;
}else if(a〉99999){
place=6;
}else if(a>9999){
place=5;
}else if(a>999){
place=4;
}else if(a>99){
place=3;
}else if(a〉9){
place=2;
}else{
place=1;
}
System。
out.println(place);
}
}
18141 数的排序
由键盘输入三个整数a、b、c,按从小到大的顺序输出这三个数。
注:类名必须是Main(M 大写)
import java.util。
Scanner;
public class Main {
public static void main(String[] args){
int a,b,c,temp;
Scanner input = new Scanner(System.in);
a = input。
nextInt();
b = input.nextInt();
c = input。
nextInt();
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);
}
}
18142 数的整除
由键盘输入5个整数,逐个判断它们能否被27整除,能的输出“YES",不能的输出“NO"(注意,输出时,一个判断结果占一行,5个数的判断共占5行)。
注:类名必须是Main(大写M)
import java。
util.Scanner;
public class Main {
public static void main(String[] args) {
int a,b,c,d,e;
Scanner input = new Scanner(System.in);
a = input。
nextInt();
b = input。
nextInt();
c = input.nextInt();
d = input。
nextInt();
e = input。
nextInt();
if(a % 27 == 0){
System.out.println("YES”);
}else {
System.out。
println("NO");
}if(b % 27 == 0){
System。
out。
pr intln(”YES”);
}else{
System。
out。
println(”NO");
}if(c % 27 == 0){
System.out。
println("YES”);
}else{
System。
out.println(”NO");
}if(d %27 == 0){
System.out.println(”YES");
}else{
System.out。
println(”NO");
}if(e % 27 == 0){
System.out。
println("YES");
}else{
System.out.println(”NO");
}
}
}
18143 正负奇偶判断
由键盘输入非零整数x,判断该数正负,正数输出positive,负数输出negative,接着判断该数的奇偶性,奇数输出odd,偶数输出even。
注:类名必须是Main(大写M)
import java。
util。
Scanner;
public class Main {
public static void main(String[] args){
int x;
Scanner input = new Scanner(System。
in);
x = input。
nextInt();
if(x>0){
System。
out.println("positive");
}else {
System。
out。
println(”negative");
}if(x % 2 == 0){
System。
out。
println("even”);
}else{
System。
out.println(”odd”);
}
}
}
18144 简单四则运算器
下面程序是实现一个简单的四则运算器(输出结果保留2位小数)。
输入时依次输入:第1个实数、运算符、第2个实数,程序根据运算符进行运算并输出结果。
在程序中的空白处填写恰当的代码,运行通过后在评判系统中提交. import java.util。
Scanner;
public class Main {
public static void main(String[] args){
float a, b, result;
char operator;
Scanner input = new Scanner(System.in);
a = input。
nextFloat();
operator = input.next()。
charAt(0);
b = input。
nextFloat();
switch (operator) {
case '+':result=a + b;break;
case '—': result=a - b;break;
case ’*': result=a * b;break;
case ’/’: result=a / b;break;
default:
System.out.println(”error”);
return;
}
System.out。
printf(”%.2f\n", result);
}
}
实验4 循环结构程序设计
18145 计算阶乘
输入正整数n,计算n!,结果用长整型数表示(注n!=1*2*3*。
*n)注:类名必须是Main(大写M)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
int num = 1;
int x;
x = input.nextInt();
for(int i = x;i > 0;i——){
num = num *i;
}
System。
out.println(num);
}
}
18146 计算数列和
有数列1,3,5,7,9,11,…… ,现要求由键盘输入n,计算输出该数列的前n项和. 注:类名必须是Main(大写M)
import java。
util.Scanner;
public class Main {
public static void main(String[]args){
Scanner input= new Scanner(System。
in);
int sum = 0;
int n;
n = input。
nextInt();
for(int i = 1;i <= n;i++){
sum = sum + i * 2 - 1;
}
System。
out.println(sum);
}
}
18147 求最大公约数
由键盘输入两个正整数m、n(m、n用长整数表示),计算它们的最大公约数。
注:类名必须是Main(大写M
import java.util。
Scanner;
public class Main {
public static void main(String[] args) {
Scanner input= new Scanner(System。
in);
int m = input.nextInt();
int n = input.nextInt();
int max , min;
if(m 〉n){
max = m;
min = n;
}else{
min = m;
max = n;
}
int gcd;
for(gcd= min;gcd 〉= 1;gcd-—){
if(max %gcd == 0 && min % gcd == 0){
break;
}
}
System.out.println(gcd);
}
}
18148 输出最小值
从键盘输入十个整数,输出最小值。
注:类名必须是Main(大写M)
import java.util。
Scanner;
public class Main {
public static void main(String[]args) {
Scanner input = new Scanner(System.in);
int[]a = new int[10];
for(int i = 0;i<a.length;i++){
a[i]= input.nextInt();
}
int min = a[0];
for(int i = 0;i<a.length;i++){
if(a[i]〈min)
min=a[i];
}
System。
out.print(min);
}
}
18149 求素数
输出2到200之间(包括2、200)的所有素数。
注:要求1行1个素数,按由小到大的顺序输出.
提示:采用双重循环,外层循环产生2到200之间的数,内层循环对数进行判断是否为素数。
注:类名必须是Main(大写M)
import java.util.Scanner;
public class Main {
public static void main(String[]args) {
Scanner input= new Scanner(System。
in);
int n = 0;
for (int i = 2;i 〈200;i++){
int squareRoot = (int)Math。
sqrt(i);
int k;
for (k = 2;k 〈= squareRoot;k++){
if (i % k == 0){
break;
}
}
if (k > squareRoot){
n++;
System.out.printf("%d”, i);
System。
out.println(); }}}}
18150 打印菱形
由键盘输入正数n,要求输出2*n+1行的菱形图案.要求菱形顶部无空行,菱形左边紧靠屏幕左侧。
注:类名必须是Main(大写M)
import java.util.Scanner;
public class Main {
public static void main(String[]args) {
Scanner input = new Scanner(System.in);
int i,j,m,k,n;
n = input.nextInt();
for(i = 1;i<=n+1;i++){
for(j = 1;j〈=n-i+1;j++){
System.out.print(” ”);
}
for(j = 1;j〈=2*i-1;j++){
System。
out。
print("*”);
}
System。
out.println();
}
for(m = 1;m<=n;m++){
for(k = 1;k〈=m;k++){
System。
out。
print(" ”);
}
for(k = 1;k〈=2*(n-m)+1;k++){
System。
out。
print("*");
}
System。
out。
println();
}
}
}
实验5 数组与字符串
18152 数组的逆序输出
写一个程序,首先从键盘输入一个正整数n表示个数,然后输入n个整数,存放到数组中,最后把这些整数逆序输出。
输出时,两个整数之间用一个空格隔开.注:类名必须是Main(大写M)
import java.util。
Scanner;
public class Main {
public static void main(String[]args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int []a;
a = new int[n];
for(int i = 0;i〈a。
length;i++){
a[i]=input。
nextInt();
}
for(int i = n-1;i〉=0;i——){
System。
out。
print(a[i]+” ");
}
}
}
18153 冒泡排序
编写一个程序,首先从键盘输入一个正整数n表示个数,然后输入n个整数,存放到数组中。
使用冒泡排序算法对该数组进行从大到小的排序,并输出排序之后的结果。
输出时,两个整数之间用一个空格隔开。
注:类名必须是Main(大写M)
import java。
util.Scanner;
public class Main {
public static void main(String[] args){
Scanner input = new Scanner(System。
in);
int length = input。
nextInt();
int[]array = new int[length];
for(int i = 0;i〈array。
length;i++){
array[i]= input.nextInt();
}
for(int i = 0;i〈array.length—1;i++){
for(int j = 0;j〈array.length-1;j++){
if (array[j]〈array[j + 1]){
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
} }}
for (int v :array){
System。
out。
print(v + " ”);
} } }
18154 字符串中数字字符个数统计
编写程序,从键盘输入一行字符串,统计其中数字字符出现的次数。
说明:数字字符是指0-9这10个字符.输入的字符串可能包含空格。
注:类名必须是Main(大写M)
import java.util。
Scanner;
public class Main {
public static void main(String[] args){
Scanner input = new Scanner(System。
in);
String[]list = new String[3];
int sum = 0;
for(int i = 0;i<3;i++){
list[i]=input.next();
}
for(int i = 0;i<3;i++){
for(int k = 0;k<list[i]。
length();k++){
char ch = list[i]。
charAt(k);
if(ch>=’0’&&ch〈='9')
sum = sum+1;
}
}
System.out。
print(sum);
}
}
18155 输出矩阵
编写程序,首先从键盘输入两个正整数m和n.m表示二维整型数组的行数,n代表二维整型数组的列数。
然后输入整个二维数组,并输出它的转置数组.注:类名必须是Main(大写M)
import java。
util。
Scanner;
public class Main {
public static void main(String[] args){
Scanner input = new Scanner(System。
in);
int m,n;
m = input。
nextInt();
n = input.nextInt();
int[][]list;
list = new int[m][n];
for(int i = 0;i<list.length;i++){
for(int k = 0;k<list[i].length;k++){
list[i][k]= input.nextInt();
}
}
for(int k = 0;k〈n;k++){
for(int i = 0;i<list.length;i++){
System.out。
print(list[i][k]+" ”);
}
System。
out.println();
}
}}
18156 二维数组的最大值
编写程序,首先从键盘输入两个正整数m和n。
m表示二维整型数组的行数,n代表二维整型数组的列数.
然后输入整个二维数组,然后找出数组中的最大值,输出该值及其行下标和列下标。
提示:如果最大值有多个,则输出第1个.
import java。
util.Scanner;
public class Main {
public static void main(String[]args){
Scanner input = new Scanner(System。
in);
int m,n;
m = input.nextInt();
n = input。
nextInt();
int[][]array = new int[m][n];
int max = array[0][0];
int x = 0,y=0;
for (int i = 0;i<array.length;i++) {
for (int j = 0; j < array.length; j++) {
array[i][j] = input.nextInt();
if (array[i][j] > max){
max = array[i][j];
x = i;
y = j; }} }
System.out。
println(”array” + ”[” + x + ”]" + "[” + y +”]” + "=” +max);
} }
18157 投票程序
现在有三个候选人竞选班长,他们的姓名分别是“Alan"、“Mike"和“Tom".
编写一个程序.首先输入一个整数n代表总票数,然后输出n个姓名,每行输入一个姓名。
程序根据输入的姓名为候选人统计得票数,如果有非候选人姓名的选票,则计为废票。
输出投票结果,每行一个候选人。
import java。
util。
Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();
int a = 0,b = 0,c = 0,d = 0;
String name1 = ”Alan";
String name2 = "Mike”;
String name3 = "Tom";
String[] list = new String[n];
for(int i = 0;i<list.length;i++)
list[i]=input。
next();
for(int i = 0;i〈list。
length;i++){
if(list[i].equals(name1))
a = a+1;
else if(list[i].equals(name2))
b = b+1;
else if(list[i]。
equals(name3))
c = c+1;
else
d = d+1;
}
System。
out。
println("Alan:”+a);
System。
out。
println(”Mike:"+b);
System。
out.println(”Tom:”+c);
System。
out。
println("invalid:"+d);
}
}
18158 不相同的整数问题
编写程序,输入若干个整数,统计其中互不相同的整数的个数.要求如下:
首先输入一个整数n代表要输入的整数个数;然后输入n个整数,统计并输出这n个整数中互不相同的整数的个数。
注:类名必须是Main(大写M)
import java.util。
Scanner;
public class Main {
public static void main(String[]args) {
Scanner input = new Scanner(System。
in);
int n = input.nextInt();
int sum = 0;
int[]list = new int[n];
for(int i = 0;i〈list.length;i++)
list[i]=input。
nextInt();
for(int i = 0;i<list。
length;i++){
int j;
for(j = 0;j〈i;j++){
if (list[i]== list[j]){
break;
}
}
if(j == i){
sum = sum + 1;
}
}
System.out。
print(sum);
}
}
实验6 方法
18159 求两个正整数的最大公约数
下面程序实现由键盘输入两个正整数x,y,计算并输出两个整数的最大公约数。
请在空白处补充填写计算最大公约数的方法.
import java。
util。
Scanner;
public class Main {
public static int gcd(int a,int b){
int gcd;
for(gcd = a;gcd>=1;gcd——){
if (a %gcd== 0 &&b %gcd == 0)
break;
}
return gcd;
}
public static void main(String[] args) {
Scanner input = new Scanner(System。
in);
int x = input.nextInt();
int y = input.nextInt();
System.out。
println(gcd(x, y));
} }
18160 使用方法重载求最大值
下面程序实现计算2个整数和3个整数中大值.
请使用方法重载编写max方法,填写在程序空白处,使程序能够正确运行. import java。
util。
Scanner;
public class Main {
public static int max(int a, int b){
return a〉b ? a : b;
}
public static int max(int a,int b,int c){
return max(max(a,b),c);
}
public static void main(String[] args) {
Scanner input = new Scanner(System。
in);
int x = input。
nextInt();
int y = input.nextInt();
int z = input。
nextInt();
System。
out。
println(max(x, y));
System.out.println(max(x, y, z));
} }
18161 判断闰年的方法
下面程序实现了判断并输出1990年到2010年之间所有闰年。
其中判断一个年份是否是闰年的功能是通过一个方法实现的。
请在程序中的空白处填写恰当的代码,使程序能够正确地运行。
public class Main {
public static boolean isLeapYear(int y)
{ return (y % 4 == 0 && y % 100 != 0) || (y % 400 == 0); }
public static void main(String[] args){
for(int year=1990; year〈=2010; year++){
if(isLeapYear(year)){
System.out.println(year+”");
} }} }
18162 递归实现十进制数转换为二进制数
下面程序实现了从键盘输入一个正整数(不会大于100000000),然后输出其对应的二进制数的原码形式。
请填写程序中的空白之处,使程序能够正确地运行。
import java。
util。
Scanner;
public class Main {
public static String d2b(int n) {
String result = ”";
if (n > 1) {
result = result + d2b(n / 2);
}
return result + (n % 2);
}
public static void main(String[] args) {
Scanner input = new Scanner(System。
in);
int num = input。
nextInt();
System.out.println(d2b(num)); }
}。