Java程序设计 实验报告
注释:题目中可能需要用到有些类和方法,大家还没有学过,请查阅相关资料,作为自学部分,比如随机输出整数等。
1 编写一个应用程序,给出汉字‘你’、‘我’、‘他’在Unicode表中的位置。
(1)思路
(2)代码实现
public class a
{
public static void main(String args[]) {
char ni='你';
char wo='我';
char ta='他';
System.out.println(ni+"的位置:"+(int)ni);
System.out.println(wo+"的位置:"+(int)wo);
System.out.println(ta+"的位置:"+(int)ta);
}
}
(3)运行结果截图
2编写一个Java应用程序,输出全部的希腊字母。
(1)思路
因为在Unicode表里希腊字母是按顺序排列的,只需要将第一个和最后一个希腊字母转换为int型位置进行之间的遍历char型输出即可
(2)代码实现
public class a
{
public static void main(String args[]) {
char first='α';
char last='ω';
System.out.println("全部希腊字母:");
for(int i=(int)first;i<=(int)last;i++)
System.out.print(" "+(char)i);
}
}
(3)运行结果截图
3编写一个Java应用程序,计算1!+2!+3!+…+10!。
(1)思路
两个循环,外循环为一到十个数相加,内循环为实现单个阶乘
(2)代码实现
public class a
{
public static void main(String args[]) {
int i;
int a=1;
int tem=1;
int sum=0;
System.out.print("1!+2!+3!+…+10!=");
for(i=1;i<=10;i++) {
for (a=1; a<=i; a++) {
tem = tem * a;
}
sum = sum + tem;
tem=1;//记得要更新tem值重新计算下一阶乘
}
System.out.print(sum);
}
}
(3)运行结果截图
4编写一个Java应用程序,计算1-50之间的所有素数的和。
(1)思路
两个循,外循环遍历1-50检验为素数的进行相加求和,内循环进行是否为素数的判断
(2)代码实现
public class a
{
public static void main(String args[]) {
int i;
int a;
int sum=0;
System.out.print("1-50之间的所有素数的和=");
for(i=1;i<=50;i++) {
for(a=2;a<i;a++)
{
if(i%a==0)
break;
}
if(a==i)
sum=sum+i;
}
System.out.print(sum);
}
}
(3)运行结果截图
5分别用do-while和for循环计算1+1/2!+1/3!+1/4!… … 的前20项和。
(1)思路
for:两个循环,外循环为一到20个数相加,内循环为实现单个阶乘分之一
do-while:一个循环,一到20个数相加,中间不断累乘新1/i进行阶乘计算进而求和
(2)代码实现
for:
public class a
{
public static void main(String args[]) {
int i;
int a=1;
double tem=1;
double sum=0;//要用double型,不然小数就不见了
System.out.print("1+1/2!+1/3!+1/4!… … 的前20项和=");
for(i=1;i<=20;i++) {
for (a=1; a<=i; a++) {
tem = tem * a;
}
sum = sum + 1/tem;
tem=1;//记得要更新tem值重新计算下一阶乘
}
System.out.print(sum);
}
}
do-while:
public class ex1{ public static void main(String args[]) { double sum = 0, number = 1, i = 1; do { number = number * (1.0 / i); sum += number; i++; } while (i <= 20); System.out.println(使用do-while循环计算的sum=" + sum); } }
(3)运行结果截图
6一个数如果恰好等于它的因子之和,这个数就称为“完数”。编写应用程序求1000之内的所有完数。
(1)思路
外循环遍历1-1000,内循环检测该数是否恰好等于对应数因子之和
(2)代码实现
public class a {
public static void main (String[] args) {
System.out.println("1000之内的所有完数:");
for(int i=1;i<=1000;i++)
{
int sum=0;
for(int j=1;j<i;j++)//因子不包括本身,1也是
{
if(i%j==0)
sum+=j;
}
if(i==sum)
{
System.out.println(i+" ");
}
}
}
}
(3)运行结果截图
7编写程序,求出几何形状(长方形、正方形、圆形)的周长和面积。
(1)思路
用switch语句进行输入选择类型,然后进入相关程序进行输入计算
(2)代码实现
import java.util.Scanner;
public class a {
public static void main (String[] args) {
System.out.println("请选择图形:");
Scanner r=new Scanner(System.in);
double s;
double l;
System.out.println("长方形:1 "+"正方形:2 "+"圆形:3 ");
int a=r.nextInt();
switch(a)
{
case 1:
{
System.out.println("请输入长和宽");
int x=r.nextInt();
int y=r.nextInt();
s=x*y;
l=2*(x+y);
System.out.println("s="+s+"l="+l);
}
break;
case 2:
{
System.out.println("请输入边长");
int x=r.nextInt();
s=x*x;
l=4*x;
System.out.println("s="+s+"l="+l);
}
break;
case 3:
{
System.out.println("请输入半径");
int x=r.nextInt();
s=3.14*x*x;
l=2*3.14*x;
System.out.println("s="+s+"l="+l);
}
break;
}
}
}
(3)运行结果截图
8编写一个Java应用程序,产生10个100之内的随机整数输出,并把这10个数从小到大的顺序输出。
(1)思路
引用Math.radom()进行随机整数输出,然后利用两个冒泡排序进行从小到大排序并输出
(2)代码实现
public class ex1 {
public static void main(String[] args) {
int[] a = new int[10];
int temp;
System.out.println("10个100之内的随机整数:");
for (int i = 0; i < 10; i++) {
int random = (int) (Math.random() * 100);//调用类Math中的random()方法,其本身范围是[0, 1),可以乘以一个数作为最大值。譬如:范围[0, 100)可以用Math.random() * 100来表示。
System.out.print(random+" ");
a[i] = random;
}
System.out.println("");
System.out.println("按从小到大的顺序输出:");
for (int i = 0; i < 10; i++) {
for (int j = i + 1; j < 10; j++)//与a[i]之后的值进行比较,j=i+1
{
if (a[i] > a[j]) {
temp = a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
for (int i = 0; i < 10; i++)
{
System.out.print(a[i]+" ");
}
}
}
(3)运行结果截图
9编写一个Java应用程序,产生20个50-100之内的整数,并输出这20个数并找出最大数及最小数输出。
(1)思路
引用Math.radom()进行随机整数输出,然后利用两个冒泡排序进行从小到大排序,输出最大、小数
(2)代码实现
public class ex1 {
public static void main(String[] args) {
int[] a = new int[20];
int temp;
System.out.println("20个50-100之内的随机整数:");
for (int i = 0; i < 20; i++) {
int random = (int) (50+Math.random() * 51);//调用类Math中的random()方法,其本身范围是[0, 1),int temp=m+(int)(Math.random()*(n+1-m)); //生成从m到n的随机整数[m,n]
System.out.print(random+" ");
a[i] = random;
}
for (int i = 0; i < 20; i++) {
for (int j = i + 1; j < 20; j++)//与a[i]之后的值进行比较,j=i+1
{
if (a[i] > a[j]) {
temp = a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
System.out.println("");
System.out.println("最小值:"+a[0]);
System.out.println("最大值:"+a[19]);
}
}
(3)运行结果截图
1.不知道如何得到随机数:
调用类Math中的random()方法,其本身范围是[0, 1),int temp=m+(int)(Math.random()*(n+1-m)); //生成从m到n的随机整数[m,n]
2.不太熟输入的代码编写
import java.util.Scanner;
Scanner r=new Scanner(System.in);
int a=r.nextInt();
3.计算1+1/2!+1/3!+1/4!… … 的前20项和时忘记了更新中间变量为零
for (a=1; a<=i; a++) {
tem = tem * a;
}
sum = sum + tem;
tem=1;//此步
}
4.不知道如何用do-while实现1+1/2!+1/3!+1/4!… … 的前20项和
后来发现除了每次从0开始逐次乘得阶乘还可以直接累乘更方便,少了个循环
do {
number = number * (1.0 / i);//此步
sum += number;
i++;
} while (i <= 20);
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务