文章目录:
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类型的代表年份的数字,然后计算并打印出相关信息
package com;import java.util.Scanner;public class day1
{public static void main(String[] args){char []天干 = {'甲','乙','丙','丁','戊','己','庚','辛','壬','癸'};char []地支 = {'子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥'};char []生肖 = {'鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪'};int year;Scanner scanner = new Scanner(System.in);System.out.print("请输入年份:");year = scanner.nextInt();System.out.println("你输入的年份为:"+year);System.out.println("当年的天干地支为:"+天干[((year-3)%10)-1]+地支[((year-3)%12)-1]);System.out.println("当年所对应的生肖为:"+生肖[((year-3)%12)-1]);}}
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)”构造形式即可得到一个特定汉字。
package com;import java.util.Scanner;
import java.lang.String;
public class day1
{public static void main(String[] args){int k=0;byte bytes[]=new byte[2];//定义一个拥有两个元素的byte类型数组String word="";for (int i=16;i<=55;i++){for (int j=1;j<=94;j++){//将区码加上十进制数160并赋给数组下标为0的元素bytes[0]=(byte)(i+160);//将位码加上十进制数160并赋给数组下标为1的元素bytes[1]=(byte)(j+160);word=new String(bytes);//赋值时注意类型的强制转换System.out.print(i+""+String.format("%02d",j));//当byte数组的两个元素都取得值后System.out.print(word);//5590、5591、5592、5593、5594这5个编码没有使用if (i==55 && j>=89){break;}k++;if (k%10==0){System.out.println();}}}}}
3、报数游戏。A、B、C、D、E、F、G、H共8人站成一排,按图2.3所示的方法从1开始报数。编写一个Java程序,找出谁先报到19 431 0057?
package com;import java.util.Scanner;
import java.lang.String;
public class day1
{public static void main(String[] args){char []AH={'A','B','C','D','E','F','G','H'};Scanner scanner = new Scanner(System.in);System.out.print("请输入一个数:");int sc = scanner.nextInt();int a = sc/7;int b = sc%7;if (a%2==0){System.out.println("现报道的是:"+AH[b-1]);}else {System.out.println("现报道的是:"+AH[8-b]);}}}
4、用迭代法求正数n的平方根x,a由命令行参数给出。求平方根的迭代公式为xn+1=0.5×(xn+a/xn),要求前后两次求出的x的差的绝对值小于10-5。 x的迭代初始值为a/2
package com;import java.util.Scanner;
import java.lang.String;
public class day1
{public static void main(String[] args){double sum;Scanner scanner = new Scanner(System.in);System.out.print("请输入a的值:");double a = scanner.nextDouble();double x=a/2,h1=0,h2=0;do{h1=0.5*(x+a/x);x=h1;h2=0.5*(x+a/x);x=h2;sum=Math.abs(h1-h2);}while (sum>0.000001);System.out.println("h1:"+h1+" "+"h2:"+h2);System.out.println("差值k="+sum);}}
5、两个羽毛球队进行比赛,各出3人。甲队为A、B、C 3人,乙队为x、y、z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单。A说他不和x比,C说他不和x、z比。请编写一个Java程序找出3对赛手的名单
package com;import java.util.Scanner;
import java.lang.String;
// A!=X C!=X C!Z 找出3对赛手的名单
//C-Y A-Z B-X
public class day1
{public static void main(String[] args){char i,j,k;for (i='x';i<='z';i++){for (j='x';j<='z';j++){if (i!=j){for (k='x';k<='z';k++){if (i!=k && j!=k){if (i!='x' && k!='x' && k!='z'){System.out.println("A--"+i+"\n"+"B--"+j+"\n"+"C--"+k);}}}}}}/* char []ch1={'A','B','C'};char []ch2={'x','y','z'};*//*A与x[舍] A与zB与x B与y[舍] B与z[舍]C与y*//*for (int i=0;i<=2;i++){for (int j=0;j<=2;j++){if ((i==0 && j==1) || (i==2&&j==0) || (i==2&&j==2)){}else{System.out.println(ch1[i]+"与"+ch2[j]);}}}*/}}
6、奇妙的算式。有人用字母代替十进制数字写出下面的算式。请编写一个Java程序,找出这些字母代表的数字
提示:每个字母代表值为0, 1, 2, 3, 4, 5, …, 9中的一个。使用四重穷举。
package com;import java.util.Scanner;
import java.lang.String;
public class day1
{public static void main(String[] args){int []A={0,1,2,3,4,5,6,7,8,9};int []E={0,1,2,3,4,5,6,7,8,9};int []G={0,1,2,3,4,5,6,7,8,9};int []L={0,1,2,3,4,5,6,7,8,9};int count=0;for (int e=0;e<E.length;e++){for (int g=0;g<G.length;g++){for (int a=0;a<A.length;a++){for (int l=0;l<L.length;l++){int x1=E[e]*1000;int x2=G[g]*100;int x3=A[a]*10;int x4=L[l]*1;int sum=x1+x2+x3+x4;int y1=L[l]*1000;int y2=G[g]*100;int y3=A[a]*10;int y4=E[e]*1;int end=y1+y2+y3+y4;if (end==sum*L[l]){System.out.print(E[e]+""+G[g]+""+A[a]+""+L[l]+"\t");count++;if (count%17==0) System.out.println();}}}}}}}
7、猴子吃桃问题。一天,一只小猴子摘下一堆桃子,当即吃去一半,还觉得不过瘾,又多吃了一个。第二天接着吃了前一天剩下的一半,馋不忍罢又多吃了一个。以后每天如此。到第10天小猴子去吃时,只剩下一个桃子了。问小猴子共摘了多少个桃子?
package com;import java.util.Scanner;
import java.lang.String;
public class day1
{public static void main(String[] args){int count=1;System.out.print("每一天的桃子数为:");for (int i=9;i>0;i--){count=(count+1)*2;System.out.print(count+"个"+" ");}}}
8、编写并测试以下递归方法,递归公式为
package com;import java.util.Scanner;public class day1 {static float p(int n,int x){float sum;if (n == 0){sum = 1;} else{if (n == 1){sum = x;} else{sum = ((2 * n - 1) * x * p(n - 1, x) - (n - 1) * p(n - 2, x)) / n;}}return sum;}public static void main(String[] args) {float sum;Scanner sc = new Scanner(System.in);System.out.println("请输入n:");int n = sc.nextInt();System.out.println("请输入x:");int x = sc.nextInt();sum = p(n,x);System.out.println("结果为:"+sum);}}
9、某火车站规定:在旅游旺季7~9月份,如果订票20张及其以上者,优惠票价的10%;20张以下,优惠5%;在旅游淡季1~6月份、10~12月份,订票20张及其以上者,优惠20%,20张以下,优惠10%。编写一个Java程序能够根据月份和旅客订票张数决定优惠率
package com;import java.util.Scanner;
import java.lang.String;
public class day1
{public static void main(String[] args){Scanner scanner = new Scanner(System.in);System.out.print("请输入月份:");int mth = scanner.nextInt();System.out.print("亲输入票数:");int count = scanner.nextInt();if (mth>=7 && mth<=9){if (count>=20){System.out.println(" "+"优惠票价10%");}else {System.out.println(" "+"优惠票价5%");}}else {if (count>=20){System.out.println(" "+"优惠票价20%");}else {System.out.println(" "+"优惠票价优惠10%");}}}}
10、编写一Java程序,计算cosx=1-+- +…,精确到第n项,误差小于0.000 1,x的值由键盘输入
package com;import java.util.Scanner;
import java.lang.String;
public class day1
{public static void main(String[] args){System.out.print("请输入x的值:");Scanner scanner = new Scanner(System.in);double sc = scanner.nextDouble();double cosx=1;double m=1;do{for (int i=2;;i++){m=(2*i)*(2*i-1);cosx+=-((sc*sc)/m);if (cosx<0.00001){break;}}}while(cosx>0.00001);System.out.println("cosx="+cosx);}}
11、编写一个通用方法,在给出的一维数组中查找一个数,找到时输出已找到某数,未找到时输出未找到某数
package com;import java.util.Scanner;
import java.lang.String;
public class day1
{public static void main(String[] args){int []arr=new int[10];Scanner scanner = new Scanner(System.in);System.out.println("输入10个数!");for (int i=0;i<arr.length;i++){arr[i]=scanner.nextInt();}System.out.println("清输入要查找的数字:");int m = scanner.nextInt();for (int i=0;i<arr.length;i++){if (arr[i]==m){System.out.println("该数在数组中下标为"+i);}else System.out.println("err");}}}
12、定义一个4行4列的double型二维数组。创建一个方法显示数组并计算任意给定的行、给定的列、主对角线和副对角线的和以及数组中的最大值
package com;import java.util.Scanner;
import java.lang.String;
public class day1
{public static void main(String[] args){int arr[][]=new int[4][4];Scanner scanner = new Scanner(System.in);System.out.println("请从键盘输入16个数:");for (int i=0;i< arr.length;i++){for (int j=0;j<arr[i].length;j++){arr[i][j]=scanner.nextInt();}}System.out.println("你输入的数组为:");for (int i=0;i<arr.length;i++){for (int j=0;j<arr[i].length;j++){System.out.print(arr[i][j]+"\t");}System.out.println();}System.out.println("请输入要计算的行号:");int rw = (scanner.nextInt()-1);int RWcount=0;for (int i=0;i<arr[rw].length;i++){RWcount+=arr[rw][i];}System.out.println(RWcount);System.out.println("请输入要计算的列号:");int cl = (scanner.nextInt()-1);int CLcount=0;for (int i=0;i<arr[cl].length;i++){CLcount+=arr[i][cl];}System.out.println(CLcount);System.out.println("主对角线和为:");int Ccount=0;Ccount=arr[0][0]+arr[1][1]+arr[2][2]+arr[3][3];System.out.println(Ccount);System.out.println("副对角线和为:");int Rount=0;Rount=arr[0][3]+arr[1][2]+arr[2][1]+arr[3][0];System.out.println(Rount);}}