程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-05(1)

Java实验一 Java语言基础(12题)

发布于2021-06-12 15:40     阅读(825)     评论(0)     点赞(11)     收藏(4)


文章目录:

1、我国历法中的天干、地支和生肖的排列是有规律的。天干的顺序是“甲乙丙丁戊己庚辛壬癸”,地支的顺序是“子丑寅卯辰巳午未申酉戌亥”,生肖的顺序是“鼠牛虎兔龙蛇马羊猴鸡狗猪”。天干、地支、生肖的计算方法非常简单:将年份减去3后除以10得到余数是几,就对应于天干中的第几位;将年份减去3后除以12得到余数是几,则对应于地支中的第几位;生肖的计算方法和地支完全一致。例如,对2006年而言,将数字2006减去3后是2003,除以10后的余数是3,对应于天干中的第三位“丙”;将2003除以12的余数是11,所以对应地支中的倒数第二位“戌”。由此可知,2006年是“丙戌”年,生肖是“狗”。根据以上思路,用Java写一个程序。程序提供一个声明形式为“public void getInfo(int year)”的方法,此方法接收一个int类型的代表年份的数字,然后计算并打印出相关信息

2、1980年,我国制定了“信息交换汉字编码字符集及其交换码标准GB2312—1980”。GB2312将汉字表分为94个区,每个区94个位,这种编码称为区位码。GB2312收录的汉字分成两级:第一级是常用汉字,共3755个,置于16~55区;第二级是次常用汉字,共3008个,置于56~87区。一、二级的所有汉字从16区~87区,总共有72个区。每个区可编码94个汉字,故72个区理论上能编码的汉字总量是72×94=6768个。但因为一级汉字的编码到5589截止,5590、5591、5592、5593、5594这5个编码没有使用,所以72个区实际编码的汉字总数是72×94-5=6763个

3、报数游戏。A、B、C、D、E、F、G、H共8人站成一排,按图2.3所示的方法从1开始报数。编写一个Java程序,找出谁先报到19 431 0057?

4、用迭代法求正数n的平方根x,a由命令行参数给出。求平方根的迭代公式为xn+1=0.5×(xn+a/xn),要求前后两次求出的x的差的绝对值小于10-5。 x的迭代初始值为a/2

5、两个羽毛球队进行比赛,各出3人。甲队为A、B、C 3人,乙队为x、y、z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单。A说他不和x比,C说他不和x、z比。请编写一个Java程序找出3对赛手的名单

6、奇妙的算式。有人用字母代替十进制数字写出下面的算式。请编写一个Java程序,找出这些字母代表的数字

7、猴子吃桃问题。一天,一只小猴子摘下一堆桃子,当即吃去一半,还觉得不过瘾,又多吃了一个。第二天接着吃了前一天剩下的一半,馋不忍罢又多吃了一个。以后每天如此。到第10天小猴子去吃时,只剩下一个桃子了。问小猴子共摘了多少个桃子?

8、编写并测试以下递归方法,递归公式为

9、某火车站规定:在旅游旺季7~9月份,如果订票20张及其以上者,优惠票价的10%;20张以下,优惠5%;在旅游淡季1~6月份、10~12月份,订票20张及其以上者,优惠20%,20张以下,优惠10%。编写一个Java程序能够根据月份和旅客订票张数决定优惠率

10、编写一Java程序,计算cosx=1-+- +…,精确到第n项,误差小于0.000 1,x的值由键盘输入

11、编写一个通用方法,在给出的一维数组中查找一个数,找到时输出已找到某数,未找到时输出未找到某数

12、定义一个4行4列的double型二维数组。创建一个方法显示数组并计算任意给定的行、给定的列、主对角线和副对角线的和以及数组中的最大值


1、我国历法中的天干、地支和生肖的排列是有规律的。天干的顺序是“甲乙丙丁戊己庚辛壬癸”,地支的顺序是“子丑寅卯辰巳午未申酉戌亥”,生肖的顺序是“鼠牛虎兔龙蛇马羊猴鸡狗猪”。天干、地支、生肖的计算方法非常简单:将年份减去3后除以10得到余数是几,就对应于天干中的第几位;将年份减去3后除以12得到余数是几,则对应于地支中的第几位;生肖的计算方法和地支完全一致。例如,对2006年而言,将数字2006减去3后是2003,除以10后的余数是3,对应于天干中的第三位“丙”;将2003除以12的余数是11,所以对应地支中的倒数第二位“戌”。由此可知,2006年是“丙戌”年,生肖是“狗”。根据以上思路,用Java写一个程序。程序提供一个声明形式为“public void getInfo(int year)”的方法,此方法接收一个int类型的代表年份的数字,然后计算并打印出相关信息

  1. package com;
  2. import java.util.Scanner;
  3. public class day1
  4. {
  5. public static void main(String[] args)
  6. {
  7. char []天干 = {'甲','乙','丙','丁','戊','己','庚','辛','壬','癸'};
  8. char []地支 = {'子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥'};
  9. char []生肖 = {'鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪'};
  10. int year;
  11. Scanner scanner = new Scanner(System.in);
  12. System.out.print("请输入年份:");
  13. year = scanner.nextInt();
  14. System.out.println("你输入的年份为:"+year);
  15. System.out.println("当年的天干地支为:"+天干[((year-3)%10)-1]+地支[((year-3)%12)-1]);
  16. System.out.println("当年所对应的生肖为:"+生肖[((year-3)%12)-1]);
  17. }
  18. }

2、1980年,我国制定了“信息交换汉字编码字符集及其交换码标准GB2312—1980”。GB2312将汉字表分为94个区,每个区94个位,这种编码称为区位码。GB2312收录的汉字分成两级:第一级是常用汉字,共3755个,置于16~55区;第二级是次常用汉字,共3008个,置于56~87区。一、二级的所有汉字从16区~87区,总共有72个区。每个区可编码94个汉字,故72个区理论上能编码的汉字总量是72×94=6768个。但因为一级汉字的编码到5589截止,5590、5591、5592、5593、5594这5个编码没有使用,所以72个区实际编码的汉字总数是72×94-5=6763个

  编写程序,实现的功能是:将所有的一级汉字的区位码打印来,并在区位码后面跟上其汉字本身。每打印8个汉字的相关信息后换行。

  操作提示:使用for循环嵌套,外层循环从16~55,内层循环从l~94。注意在适当时使用break退出循环。定义一个拥有两个元素的byte类型数组,将区码加上十进制数160并赋给数组下标为0的元素;将位码加上十进制数160并赋给数组下标为1的元素。赋值时注意类型的强制转换。当byte数组的两个元素都取得值后,使用java.1ang.String类的“public String(byte[]bytes)”构造形式即可得到一个特定汉字。

  1. package com;
  2. import java.util.Scanner;
  3. import java.lang.String;
  4. public class day1
  5. {
  6. public static void main(String[] args)
  7. {
  8. int k=0;
  9. byte bytes[]=new byte[2];//定义一个拥有两个元素的byte类型数组
  10. String word="";
  11. for (int i=16;i<=55;i++)
  12. {
  13. for (int j=1;j<=94;j++)
  14. {
  15. //将区码加上十进制数160并赋给数组下标为0的元素
  16. bytes[0]=(byte)(i+160);
  17. //将位码加上十进制数160并赋给数组下标为1的元素
  18. bytes[1]=(byte)(j+160);
  19. word=new String(bytes);//赋值时注意类型的强制转换
  20. System.out.print(i+""+String.format("%02d",j));//当byte数组的两个元素都取得值后
  21. System.out.print(word);
  22. //5590、5591、5592、5593、5594这5个编码没有使用
  23. if (i==55 && j>=89)
  24. {
  25. break;
  26. }
  27. k++;
  28. if (k%10==0)
  29. {
  30. System.out.println();
  31. }
  32. }
  33. }
  34. }
  35. }

3、报数游戏。A、B、C、D、E、F、G、H共8人站成一排,按图2.3所示的方法从1开始报数。编写一个Java程序,找出谁先报到19 431 0057?

  1. package com;
  2. import java.util.Scanner;
  3. import java.lang.String;
  4. public class day1
  5. {
  6. public static void main(String[] args)
  7. {
  8. char []AH={'A','B','C','D','E','F','G','H'};
  9. Scanner scanner = new Scanner(System.in);
  10. System.out.print("请输入一个数:");
  11. int sc = scanner.nextInt();
  12. int a = sc/7;
  13. int b = sc%7;
  14. if (a%2==0){
  15. System.out.println("现报道的是:"+AH[b-1]);
  16. }else {
  17. System.out.println("现报道的是:"+AH[8-b]);
  18. }
  19. }
  20. }

4、用迭代法求正数n的平方根x,a由命令行参数给出。求平方根的迭代公式为xn+1=0.5×(xn+a/xn),要求前后两次求出的x的差的绝对值小于10-5。 x的迭代初始值为a/2

  1. package com;
  2. import java.util.Scanner;
  3. import java.lang.String;
  4. public class day1
  5. {
  6. public static void main(String[] args)
  7. {
  8. double sum;
  9. Scanner scanner = new Scanner(System.in);
  10. System.out.print("请输入a的值:");
  11. double a = scanner.nextDouble();
  12. double x=a/2,h1=0,h2=0;
  13. do{
  14. h1=0.5*(x+a/x);
  15. x=h1;
  16. h2=0.5*(x+a/x);
  17. x=h2;
  18. sum=Math.abs(h1-h2);
  19. }while (sum>0.000001);
  20. System.out.println("h1:"+h1+" "+"h2:"+h2);
  21. System.out.println("差值k="+sum);
  22. }
  23. }

5、两个羽毛球队进行比赛,各出3人。甲队为A、B、C 3人,乙队为x、y、z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单。A说他不和x比,C说他不和x、z比。请编写一个Java程序找出3对赛手的名单

  1. package com;
  2. import java.util.Scanner;
  3. import java.lang.String;
  4. // A!=X C!=X C!Z 找出3对赛手的名单
  5. //C-Y A-Z B-X
  6. public class day1
  7. {
  8. public static void main(String[] args)
  9. {
  10. char i,j,k;
  11. for (i='x';i<='z';i++)
  12. {
  13. for (j='x';j<='z';j++)
  14. {
  15. if (i!=j)
  16. {
  17. for (k='x';k<='z';k++)
  18. {
  19. if (i!=k && j!=k)
  20. {
  21. if (i!='x' && k!='x' && k!='z')
  22. {
  23. System.out.println("A--"+i+"\n"+"B--"+j+"\n"+"C--"+k);
  24. }
  25. }
  26. }
  27. }
  28. }
  29. }
  30. /* char []ch1={'A','B','C'};
  31. char []ch2={'x','y','z'};
  32. *//*
  33. A与x[舍] A与z
  34. B与x B与y[舍] B与z[舍]
  35. C与y*//*
  36. for (int i=0;i<=2;i++){
  37. for (int j=0;j<=2;j++)
  38. {
  39. if ((i==0 && j==1) || (i==2&&j==0) || (i==2&&j==2))
  40. {
  41. }
  42. else
  43. {
  44. System.out.println(ch1[i]+"与"+ch2[j]);
  45. }
  46. }
  47. }*/
  48. }
  49. }

6、奇妙的算式。有人用字母代替十进制数字写出下面的算式。请编写一个Java程序,找出这些字母代表的数字

提示:每个字母代表值为0, 1, 2, 3, 4, 5, …, 9中的一个。使用四重穷举。

  1. package com;
  2. import java.util.Scanner;
  3. import java.lang.String;
  4. public class day1
  5. {
  6. public static void main(String[] args)
  7. {
  8. int []A={0,1,2,3,4,5,6,7,8,9};
  9. int []E={0,1,2,3,4,5,6,7,8,9};
  10. int []G={0,1,2,3,4,5,6,7,8,9};
  11. int []L={0,1,2,3,4,5,6,7,8,9};
  12. int count=0;
  13. for (int e=0;e<E.length;e++){
  14. for (int g=0;g<G.length;g++){
  15. for (int a=0;a<A.length;a++){
  16. for (int l=0;l<L.length;l++){
  17. int x1=E[e]*1000;
  18. int x2=G[g]*100;
  19. int x3=A[a]*10;
  20. int x4=L[l]*1;
  21. int sum=x1+x2+x3+x4;
  22. int y1=L[l]*1000;
  23. int y2=G[g]*100;
  24. int y3=A[a]*10;
  25. int y4=E[e]*1;
  26. int end=y1+y2+y3+y4;
  27. if (end==sum*L[l]){
  28. System.out.print(E[e]+""+G[g]+""+A[a]+""+L[l]+"\t");
  29. count++;
  30. if (count%17==0) System.out.println();
  31. }
  32. }
  33. }
  34. }
  35. }
  36. }
  37. }

7、猴子吃桃问题。一天,一只小猴子摘下一堆桃子,当即吃去一半,还觉得不过瘾,又多吃了一个。第二天接着吃了前一天剩下的一半,馋不忍罢又多吃了一个。以后每天如此。到第10天小猴子去吃时,只剩下一个桃子了。问小猴子共摘了多少个桃子?

  1. package com;
  2. import java.util.Scanner;
  3. import java.lang.String;
  4. public class day1
  5. {
  6. public static void main(String[] args)
  7. {
  8. int count=1;
  9. System.out.print("每一天的桃子数为:");
  10. for (int i=9;i>0;i--)
  11. {
  12. count=(count+1)*2;
  13. System.out.print(count+"个"+" ");
  14. }
  15. }
  16. }

8、编写并测试以下递归方法,递归公式为

  1. package com;
  2. import java.util.Scanner;
  3. public class day1 {
  4. static float p(int n,int x)
  5. {
  6. float sum;
  7. if (n == 0)
  8. {
  9. sum = 1;
  10. } else
  11. {
  12. if (n == 1)
  13. {
  14. sum = x;
  15. } else
  16. {
  17. sum = ((2 * n - 1) * x * p(n - 1, x) - (n - 1) * p(n - 2, x)) / n;
  18. }
  19. }
  20. return sum;
  21. }
  22. public static void main(String[] args) {
  23. float sum;
  24. Scanner sc = new Scanner(System.in);
  25. System.out.println("请输入n:");
  26. int n = sc.nextInt();
  27. System.out.println("请输入x:");
  28. int x = sc.nextInt();
  29. sum = p(n,x);
  30. System.out.println("结果为:"+sum);
  31. }
  32. }

9、某火车站规定:在旅游旺季7~9月份,如果订票20张及其以上者,优惠票价的10%;20张以下,优惠5%;在旅游淡季1~6月份、10~12月份,订票20张及其以上者,优惠20%,20张以下,优惠10%。编写一个Java程序能够根据月份和旅客订票张数决定优惠率

  1. package com;
  2. import java.util.Scanner;
  3. import java.lang.String;
  4. public class day1
  5. {
  6. public static void main(String[] args)
  7. {
  8. Scanner scanner = new Scanner(System.in);
  9. System.out.print("请输入月份:");
  10. int mth = scanner.nextInt();
  11. System.out.print("亲输入票数:");
  12. int count = scanner.nextInt();
  13. if (mth>=7 && mth<=9){
  14. if (count>=20){
  15. System.out.println(" "+"优惠票价10%");
  16. }else {
  17. System.out.println(" "+"优惠票价5%");
  18. }
  19. }else {
  20. if (count>=20){
  21. System.out.println(" "+"优惠票价20%");
  22. }else {
  23. System.out.println(" "+"优惠票价优惠10%");
  24. }
  25. }
  26. }
  27. }

10、编写一Java程序,计算cosx=1-+- +…,精确到第n项,误差小于0.000 1,x的值由键盘输入

  1. package com;
  2. import java.util.Scanner;
  3. import java.lang.String;
  4. public class day1
  5. {
  6. public static void main(String[] args)
  7. {
  8. System.out.print("请输入x的值:");
  9. Scanner scanner = new Scanner(System.in);
  10. double sc = scanner.nextDouble();
  11. double cosx=1;
  12. double m=1;
  13. do{
  14. for (int i=2;;i++)
  15. {
  16. m=(2*i)*(2*i-1);
  17. cosx+=-((sc*sc)/m);
  18. if (cosx<0.00001)
  19. {
  20. break;
  21. }
  22. }
  23. }while(cosx>0.00001);
  24. System.out.println("cosx="+cosx);
  25. }
  26. }

11、编写一个通用方法,在给出的一维数组中查找一个数,找到时输出已找到某数,未找到时输出未找到某数

  1. package com;
  2. import java.util.Scanner;
  3. import java.lang.String;
  4. public class day1
  5. {
  6. public static void main(String[] args)
  7. {
  8. int []arr=new int[10];
  9. Scanner scanner = new Scanner(System.in);
  10. System.out.println("输入10个数!");
  11. for (int i=0;i<arr.length;i++){
  12. arr[i]=scanner.nextInt();
  13. }
  14. System.out.println("清输入要查找的数字:");
  15. int m = scanner.nextInt();
  16. for (int i=0;i<arr.length;i++){
  17. if (arr[i]==m){
  18. System.out.println("该数在数组中下标为"+i);
  19. }else System.out.println("err");
  20. }
  21. }
  22. }

12、定义一个4行4列的double型二维数组。创建一个方法显示数组并计算任意给定的行、给定的列、主对角线和副对角线的和以及数组中的最大值

  1. package com;
  2. import java.util.Scanner;
  3. import java.lang.String;
  4. public class day1
  5. {
  6. public static void main(String[] args)
  7. {
  8. int arr[][]=new int[4][4];
  9. Scanner scanner = new Scanner(System.in);
  10. System.out.println("请从键盘输入16个数:");
  11. for (int i=0;i< arr.length;i++){
  12. for (int j=0;j<arr[i].length;j++){
  13. arr[i][j]=scanner.nextInt();
  14. }
  15. }
  16. System.out.println("你输入的数组为:");
  17. for (int i=0;i<arr.length;i++){
  18. for (int j=0;j<arr[i].length;j++){
  19. System.out.print(arr[i][j]+"\t");
  20. }
  21. System.out.println();
  22. }
  23. System.out.println("请输入要计算的行号:");
  24. int rw = (scanner.nextInt()-1);
  25. int RWcount=0;
  26. for (int i=0;i<arr[rw].length;i++){
  27. RWcount+=arr[rw][i];
  28. }
  29. System.out.println(RWcount);
  30. System.out.println("请输入要计算的列号:");
  31. int cl = (scanner.nextInt()-1);
  32. int CLcount=0;
  33. for (int i=0;i<arr[cl].length;i++){
  34. CLcount+=arr[i][cl];
  35. }
  36. System.out.println(CLcount);
  37. System.out.println("主对角线和为:");
  38. int Ccount=0;
  39. Ccount=arr[0][0]+arr[1][1]+arr[2][2]+arr[3][3];
  40. System.out.println(Ccount);
  41. System.out.println("副对角线和为:");
  42. int Rount=0;
  43. Rount=arr[0][3]+arr[1][2]+arr[2][1]+arr[3][0];
  44. System.out.println(Rount);
  45. }
  46. }

 

原文链接:https://blog.csdn.net/liu17234050/article/details/117687581



所属网站分类: 技术文章 > 博客

作者:小胖子爱java

链接:http://www.javaheidong.com/blog/article/222502/03e91c09df477c9ef1e4/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

11 0
收藏该文
已收藏

评论内容:(最多支持255个字符)