Java习题总结 - 课外习题总结
第一题
可以使用编程练习题1.13 中给出的 Cramer 规则解线性方程组:
编写程序,提示用户输入a,b,c,d,e和f, 然后显示结果。如果ad - bc 为 0, 报告消息 “方程式无解”
下面是一些运行示例:
Enter a, b, c, d, e, f: 9.0 4.0 3.0 -5.0 -6.0 -21.0
x is -2.0 and y is 3.0
Enter a, b, c, d, e, f: 1.0 2.0 2.0 4.0 4.0 5. 0
The equation has no solution
解题思路:
题中的数据——方程组的系数,公式的分母
题目要求——先判断公式的分母是否为零,不为零时根据公式计算方程组的解,为零时提示无解
步骤:
1.提示用户输入方程组的系数:a,b,c,d,e,f
2.计算公式的分母
3.判断分母是否为零,为零提示方程无解
4.不为零,根据公式计算方程组的解
5.输出方程组的解
代码:
import java.util.Scanner;
class Test01
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
double[] a1=new double[6];//定义存储两个二元一次方程系数的变量
double x,y;//定义存储x,y的解的变量
System.out.print("Enter the a, b, c, d, e, f:");//提示输入方程组的系数
for(int i = 0; i < 6; i++)
{
a1[i] = input.nextDouble();//存储方程组系数
}
if((a1[0]*a1[3]-a1[1]*a1[2])==0)//判断公式的分母是否为零
{
System.out.println("The equation has no solution");//是,输出无解的提示
}
else//否,按步骤求解
{
x=(a1[4]*a1[3]-a1[1]*a1[5])/(a1[0]*a1[3]-a1[1]*a1[2]);//计算x的解
y=(a1[0]*a1[5]-a1[2]*a1[3])/(a1[0]*a1[3]-a1[1]*a1[2]);//计算y的解
System.out.printf("x:%f\ny:%f\n",x,y);//算出x,y的解
}
}
}
第二题
假设你想开发一个玩彩票的游戏,程序随机的产生一个两位数的彩票,提示用户输入一个两位数,然后根据下面规则判断用户是否能赢:
1.如果用户输人的所有数匹配彩票的确切顺序,奖金是10 000美元。
2. 如果用户输人的所有数匹配彩票的所有数字,奖金是 3 000 美元。
3.如果用户输人的其中一个数匹配彩票号码中的一个数,奖金是 1 000美元
解题思路:
题中的数据——用户输入的两位数,计算机随机生成的两位数
题目要求——根据规则判断用户是否能赢
步骤:
1.提示用户输入一个两位数
2.计算机随机生成一个两位数
3.根据用户输入的数,计算机随机产生的数以及游戏规则,判断用户的中奖金额
代码:
import java.util.Scanner;
import java.util.Random;
class Test02
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
Random r = new Random(1);//定义产生随机数的类
System.out.printf("输入一个二位数字:");//提示输入
int n = input.nextInt();//存储二位的整数
int s = n / 10;//取十位
int g = n % 10;//取个位
int mRand = r.nextInt(90) + 10;
mRand = 10;
if((s == mRand / 10) && (g == mRand % 10))
{
System.out.println("奖金是10 000元。");
}
else if((g == mRand / 10) && (s == mRand % 10))
{
System.ou