程序逻辑(分支和循环)的练习和数组的一些练习

程序逻辑(分支和循环)

练习----猜数字

计算机出一个1-100之间的随机数,玩家输入猜测的数字,计算机会给出相应的提示:如果玩家猜测的数字大于计算机出的数字,则提示"小一点";如果玩家猜测的数字小于计算机出的数字,则提示"大一点";如果猜对了就给出恭喜信息和猜的次数,游戏结束。

package mt;

import java.util.Scanner;

/**
 * 猜1-100的數
 * @author Administrator
 *
 */
public class CaiShuZi {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int correctAnswer=(int) (Math.random()*100+1);
		int counter=0;
		int thyAnswer;
		do {
			System.out.println("请输入你猜的数字:");
			thyAnswer = sc.nextInt();
			counter++;
			if (thyAnswer == correctAnswer) {
				System.out.println("恭喜你猜对了,你共猜了" + counter + "次");
			} else if (thyAnswer > correctAnswer) {
				System.out.println("你猜的数大了");
			} else {
				System.out.println("你猜的数小了");
			}
		} while (thyAnswer != correctAnswer);
		sc.close();		
	}
}

练习-----人机猜拳

package mt;

import java.util.Scanner;

public class CaiQuan {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);		
		int money=1000;
		System.out.println("*****猜拳游戏*****\n"
		          + "1.剪刀2.石头3.布");
		do {
			System.out.println("你的余额:"+money);			
			System.out.println("请下注:");
			int nmb=sc.nextInt();
			System.out.println("小子出招吧!");
			int person=sc.nextInt();
			int computer=(int) (Math.random()*3+1);
		String a="",b="";
		switch (person){
		case 1:a=("你出剪刀");break;
		case 2:a=("你出石头");break;
		case 3:a=("你出布");break;
		}
		switch (computer){
		case 1:b=(",电脑出剪刀");break;
		case 2:b=(",电脑出石头");break;
		case 3:b=(",电脑出布");break;
		}
		if (person>=3) {
			money=0;
			System.out.println("小子不按套路出牌,电脑一招如来神掌秒了你");
		}
			else if (person == computer) {
				System.out.println(a + b + "\n  平局");
			} else if ((person == 1 && computer == 3) || person == 2
					&& computer == 1 || person == 3 && computer == 2) {
				money +=nmb;
				System.out.println(a + b + "\n  你赢了!");
			} else {
				money -=nmb;
				System.out.println(a + b + "\n  电脑胜!");
			}
		} while (money>0);
		System.out.println("钱输完了!!");
		sc.close();
	}
}

练习---Craps赌博游戏。

玩家摇两颗色子,如果第一次摇出了7点和11点,则玩家胜;如果第一次摇出了2点、3点、12点,则庄家胜;如果摇出其他点数,游戏继续,在继续的过程中,如果玩家摇出了第一次摇的点数,则玩家胜;如果摇出了7点,则庄家胜;否则游戏继续,直到分出胜负。

package mt;

import java.util.Scanner;

/**
 * Graps 赌博游戏
 * @author mt
 *
 */
public class Game {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int money=1000;
		do{
			int chip=0;
			System.out.println("玩家余額:"+money);
			do{
				System.out.println("請下注:");
				chip=sc.nextInt();
			}while(chip<=0 || chip>money);
		int nmb1=(int)(Math.random()*6+1);//模拟仍色子
		int nmb2=(int)(Math.random()*6+1);
		int sum=nmb1+nmb2;//求出色子点数
		System.out.println("玩家摇出了"+sum+"点");
		boolean gameOver=true; //表示游戏是否结束的布尔值
		switch (sum) {     //判断胜负
		case 7:
		case 11:
			money +=chip;
			System.out.println("玩家胜!");
			break;
		case 2:
		case 3:
		case 12:
			money -=chip;
			System.out.println("庄家胜!");
			break;
		default:
			
		 	gameOver=false; //第一次游戏还没完
		}
		while (!gameOver) {    //只有没完就一直继续
			nmb1=(int)(Math.random()*6+1);
			nmb2=(int)(Math.random()*6+1);
			int sum2=nmb1+nmb2;
			System.out.println("玩家摇出了"+sum2+"点");
			if (sum2==7) {
				money -=chip;
				System.out.println("庄家胜!");
				gameOver=true;
			}
			else if (sum2==sum) {
				money +=chip;
				System.out.println("玩家胜!");
				gameOver=true;
			}
		}
		}while(money>0);
		System.out.println("輸完了,你可以借錢再來,下個百萬富翁就是你!");
		sc.close();
	}
}

练习----21根火柴游戏。

桌上有21根火柴,人和计算机轮流拿火柴,每次最少1根,最多4根,谁拿到最后一根火柴谁就输了。编程模拟此游戏,每次都由人先拿,并保证计算机一定能够获得胜利。

package mt;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int max=21;
			do{
				System.out.println("剩余火柴的数量:"+max);
			int person;
			do {
				System.out.print("请输入你拿火柴数(1~4):");
				person = sc.nextInt();
			} while (person<1||person>4 );
			int computer=5-person;
			System.out.println("你拿的火柴数是:"+person);
			System.out.println("电脑拿的火柴数是:"+computer);
			max=max-5;
			}while(max!=1);
		System.out.println("剩余火柴的数量是"+max+",你只能拿最后一根了,电脑赢了!");
		sc.close();
	}
}

练习---录入5名学生的成绩,计算平均分,找出最高分和最低分。

package mt;
/**
 * 二维数组的应用
 */
import java.util.Scanner;

public class ErWei {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String[] names = {"德玛","关羽","赵信","吕布","赵云"};
		String[] keMu = {"语文","数学","英语"};
		int[][] score = new int[names.length][keMu.length];
		for (int i = 0; i < score.length; i++) {	
			System.out.println("请录入"+names[i]+"的成绩");
			for (int j = 0; j < score[i].length; j++) {
			System.out.print("\t"+keMu[j]+":");
			score[i][j]=sc.nextInt();
			}
		}      //保持行不变,对应的列累加再除就是每个人的平均分
		for (int i = 0; i < names.length; i++) {
			int sum=0;            //这里用double更好,平均数可能是小数,但我看到小数不爽,所以就没换
			for (int j = 0; j < keMu.length; j++) {
				sum += score[i][j];				
			}System.out.println(names[i]+"的平均分是:"+(sum/3));
		}  //算的是每个人的平均成绩
	for (int j = 0; j < keMu.length; j++) {  //	保持列不变,对应的行累加再除就是每科平均分
			int sum=0;      //同上
			for (int i = 0; i < names.length; i++) {
				sum += score[i][j];				
			}System.out.println(keMu[j]+"的平均分是:"+(sum/5));//算的是每科的平均分
		}
		sc.close();		
	}
	
}

posted @ 2015-04-28 20:38  乜天  阅读(209)  评论(0)    收藏  举报