文章目录:
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与z
B与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);
}
}