1.編寫一個(gè)程序散怖,幫助小學(xué)生學(xué)習(xí)乘法表,利用Math.random產(chǎn)生兩個(gè)一位正整數(shù)篮绰,該程序應(yīng)在控制臺(tái)中顯示一個(gè)如下的問題:
6*7等于多少后雷?
學(xué)生應(yīng)在文本字段中輸入答案,在程序中檢查文本答案吠各,如果答案正確臀突,則在控制臺(tái)中輸出字符串“非常好!”然后提問另一個(gè)乘法問題贾漏。如果答錯(cuò)了候学,則在控制臺(tái)中繪制字符串“錯(cuò),請(qǐng)重試”然后讓學(xué)生反復(fù)練習(xí)同樣的問題直到回答正確位置纵散,應(yīng)當(dāng)使用一個(gè)單獨(dú)方法來產(chǎn)生每個(gè)新問題梳码。當(dāng)程序開始運(yùn)行時(shí),如果每次用戶回答正確伍掀,則應(yīng)調(diào)用該方法一次掰茶。輸入-1代表退出.
public class Main {
public static int askQuestion()
{
int a=(int)(Math.random()*10);
Random random=new Random();
int b=random.nextInt(10);//與上面一行在一起執(zhí)行也是隨機(jī)數(shù)一種的寫法,其中10為0~10
System.out.println(a+"*"+b+"等于多少蜜笤?");
return a*b;//返回a*b的值
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int answer=askQuestion();//將askQuestion 賦值給 answer 也就是說answer是a*b的答案
while (true)//死循環(huán)的意思
{
System.out.println("輸入-1結(jié)束程序");
int user_answer=scanner.nextInt();//用戶輸入的答案 user_answer使用戶輸入的答案
if (user_answer==-1)//如果用戶輸入-1 則執(zhí)行break退出循環(huán)命令
{
break;
}
if (user_answer==answer)//如果答案等于用戶處輸入的答案
{
System.out.println("非常棒濒蒋!");
answer=askQuestion();//答案
}
else
{
System.out.println("錯(cuò),請(qǐng)重試");
}
}
System.out.println("退出程序");
}
}
2.計(jì)算機(jī)在教育中的應(yīng)用稱之為計(jì)算機(jī)輔助教學(xué)(CAI)把兔。在開發(fā)CAI環(huán)境中遇到一個(gè)問題就是學(xué)生容易疲勞沪伙,可通過變換計(jì)算機(jī)的對(duì)話來保持學(xué)生的
注意力,從而消除疲勞县好,修改練習(xí)1中的程序围橡,為每個(gè)正確和不正確的答案打印各種評(píng)語,對(duì)正確的答案的評(píng)語如下所示:
Very good聘惦!非常好
Excellent某饰!特別好
Nice work!做的好
Keep up the good work! 做的好善绎,繼續(xù)保持
對(duì)不正確的評(píng)語如下所以:
No.Please try again. 錯(cuò)黔漂,請(qǐng)重試
Wrong.Try once more. 錯(cuò),再試試
Don't give up! 別放棄
Nn.keep trying. 保持嘗試
利用隨機(jī)產(chǎn)生器來選擇1到4中的一個(gè)數(shù)禀酱,從而給出對(duì)于每個(gè)答案一個(gè)恰當(dāng)評(píng)語炬守。
public class Question {
static String[] good = {"非常好","特別好","做的好","做的好,繼續(xù)保持"};
static String[] error = {"錯(cuò)剂跟,請(qǐng)重試","錯(cuò)减途,再試試","別放棄","保持嘗試"};
public static int askQuestion()
{
//產(chǎn)生2個(gè)10以內(nèi)隨機(jī)整數(shù)(乘數(shù)和被乘數(shù))
int a = (int)(Math.random() * 9)+1;
Random random = new Random();
int b = random.nextInt(9)+1;
System.out.println(a+"*"+b+"等于多少酣藻?");
return a*b;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int answer = askQuestion();//答案
while (true)
{
System.out.println("輸入-1退出程序");
int user_answer = scanner.nextInt();
if(user_answer == -1)
{
break;
}
if(answer == user_answer)
{
Random random = new Random();
int index = random.nextInt(4);
System.out.println(good[index]);
answer = askQuestion();//答案
}
else//打錯(cuò)了,需要重新出剛才那道題
{
Random random = new Random();
int index = random.nextInt(4);
System.out.println(error[index]);
}
}
System.out.println("程序退出");
}
}
3.編寫一個(gè)程序鳍置,按照如下規(guī)則玩“猜數(shù)游戲”:在程序中辽剧,通過選擇一個(gè)1——1000的整數(shù)之間隨機(jī)數(shù)來確定要猜的數(shù)。程序在一個(gè)文本字段旁顯示提示:
猜一個(gè)1-1000之間的數(shù)
玩家在文本字段中輸入第一個(gè)數(shù)并按下回車鍵税产。如果玩家猜錯(cuò)了怕轿,程序應(yīng)當(dāng)在狀態(tài)欄中顯示“太大了,再試”或者“太小了再試”辟拷,幫助玩家“接近”正確答案并清除文本字段撞羽,以便用用戶能輸入下一個(gè)猜測(cè)的數(shù)。當(dāng)用戶輸入了正確答案后衫冻,就顯示“祝賀你诀紊,猜對(duì)了”,在控制臺(tái)中清除文本字段以便用戶可以再次進(jìn)行游戲。提示:這個(gè)問題種使用查找技術(shù)稱為二分查找(binary search)隅俘。
public class GuessNumber {
public static void main(String[] args) {
Random random = new Random();
int guessnum = random.nextInt(1000)+1;//生成一個(gè)隨機(jī)數(shù)邻奠,讓用戶猜
// System.out.println(guessnum);
int guessCount = 0;//記錄用戶猜了多少次
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)猜數(shù)");
int input = scanner.nextInt();//用戶第一次輸入答案
guessCount++;
while (input != guessnum)
{
if(input > guessnum)
{
System.out.println("太大了");
}
else
{
System.out.println("太小了");
}
guessCount++;
System.out.println("請(qǐng)猜數(shù)");
input = scanner.nextInt();//讓用戶再次輸入答案
}
System.out.println("程序退出,一共用了"+ guessCount + "次");
}
}
4.(航空訂票系統(tǒng))一家小型航空公司剛購買一臺(tái)計(jì)算機(jī)考赛,用于其最新的自動(dòng)訂票系統(tǒng)惕澎,要求編寫新的程序,為該公司唯一一架飛機(jī)(運(yùn)量:10
)的每次飛行安排座位颜骤,程序應(yīng)當(dāng)顯示下列選項(xiàng):
Please type 1 for "smoking"(吸煙區(qū)請(qǐng)安1)
Please type 2 for "nonsmoking"(無煙區(qū)請(qǐng)安2)
如果某人按下1唧喉,那么程序應(yīng)當(dāng)在吸煙艙(1——5)為其分配一個(gè)座位。如果某人按下2忍抽,那么程序應(yīng)當(dāng)在無煙艙為其分配一個(gè)座位(6——10)八孝。在
程序中應(yīng)打印出一張登記卡,以表明此人的座號(hào)以及他在飛機(jī)的吸煙艙還是無煙艙鸠项。用一個(gè)單下標(biāo)數(shù)組描述飛機(jī)的訂票情況干跛,將所有的數(shù)組元素初始
化為0,表明所有座位都是空的祟绊。在分配一個(gè)座位后楼入,設(shè)置數(shù)組的相應(yīng)元素為1,則該座位不能再分配牧抽,
程序中當(dāng)然不應(yīng)分配已分配的座位嘉熊。當(dāng)吸煙艙客滿后程序應(yīng)當(dāng)詢問此人是否接受安排的無煙區(qū),反之亦然扬舒。如果回答肯定阐肤,那么應(yīng)當(dāng)進(jìn)行適當(dāng)?shù)淖?/p>
安排。如果回答否定,那么打印消息“Next flight leaves in 3 hours.”(下次航班三小時(shí)后起飛)孕惜。
public class FlyOrderTicket {
public static void main(String[] args) {
int[] seats = new int[10];//代表10個(gè)空閑座位愧薛,其中1-5是吸煙區(qū),6-10是無煙區(qū)
Scanner scanner = new Scanner(System.in);
while (true)
{
System.out.println("吸煙區(qū)請(qǐng)安1,無煙區(qū)請(qǐng)安2,退出按-1");
int command = scanner.nextInt();
if(command == -1)
{
break;
}
else if(command == 1)//在吸煙區(qū)給用戶分配一個(gè)座位
{
int i;
for(i = 0; i < 5; i++)
{
//考察座位是否已經(jīng)被分配出去了
if(seats[i] == 0)//當(dāng)前座位可以分配
{
seats[i] = 1;//分配出去了該座位
System.out.println("你的座號(hào)是"+(i+1) + "在吸煙區(qū)");//打印登記卡
break;
}
}
if(i == 5)//沒有在吸煙區(qū)找到空余座位
{
System.out.println("吸煙區(qū)無座位了衫画,是否接受無煙區(qū)的座位毫炉?");
String answer = scanner.next();
if(answer.equals("是"))//在無煙區(qū)分配座位
{
int j;
for(j = 5; j < 10; j++)
{
//考察座位是否已經(jīng)被分配出去了
if(seats[j] == 0)//當(dāng)前座位可以分配
{
seats[j] = 1;//分配出去了該座位
System.out.println("你的座號(hào)是"+(j+1) + "在無煙區(qū)");//打印登記卡
break;
}
}
if(j==10)//無煙區(qū)也沒有座位了
{
System.out.println("下次航班三小時(shí)后起飛");
}
}
else
{
System.out.println("下次航班三小時(shí)后起飛");
}
}
}
else if(command == 2)//在無煙區(qū)分配座位
{
int j;
for(j = 5; j < 10; j++)
{
//考察座位是否已經(jīng)被分配出去了
if(seats[j] == 0)//當(dāng)前座位可以分配
{
seats[j] = 1;//分配出去了該座位
System.out.println("你的座號(hào)是"+(j+1) + "在無煙區(qū)");//打印登記卡
break;
}
}
if(j==10)//無煙區(qū)沒有座位了
{
System.out.println("無煙區(qū)無座位了,是否接受吸煙區(qū)的座位削罩?");
String answer = scanner.next();
if (answer.equals("是"))//在無煙區(qū)分配座位
{
int i;
for (i = 0; i < 5; i++) {
//考察座位是否已經(jīng)被分配出去了
if (seats[i] == 0)//當(dāng)前座位可以分配
{
seats[i] = 1;//分配出去了該座位
System.out.println("你的座號(hào)是" + (i + 1) + "在吸煙區(qū)");//打印登記卡
break;
}
}
if (i == 5)//吸煙區(qū)也沒有座位了
{
System.out.println("下次航班三小時(shí)后起飛");
}
}
}
}
}
System.out.println("謝謝使用");
}
}
方法提取版
public class FlyOrderTicket {
static int[] seats = new int[10];//代表10個(gè)空閑座位碘箍,其中1-5是吸煙區(qū),6-10是無煙區(qū)
public static int allocSeats(int start, int end)
{
String strArea = "吸煙區(qū)";
if(end == 10)
{
strArea = "無煙區(qū)";
}
int i;
for(i = start; i < end; i++)
{
//考察座位是否已經(jīng)被分配出去了
if(seats[i] == 0)//當(dāng)前座位可以分配
{
seats[i] = 1;//分配出去了該座位
System.out.println("你的座號(hào)是"+(i+1) + "在" + strArea);//打印登記卡
break;
}
}
return i;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true)
{
System.out.println("吸煙區(qū)請(qǐng)安1,無煙區(qū)請(qǐng)安2,退出按-1");
int command = scanner.nextInt();
if(command == -1)
{
break;
}
else if(command == 1)//在吸煙區(qū)給用戶分配一個(gè)座位
{
int i = allocSeats(0,5);
if(i == 5)//沒有在吸煙區(qū)找到空余座位
{
System.out.println("吸煙區(qū)無座位了鲸郊,是否接受無煙區(qū)的座位?");
String answer = scanner.next();
if(answer.equals("是"))//在無煙區(qū)分配座位
{
int j = allocSeats(5,10);
if(j==10)//無煙區(qū)也沒有座位了
{
System.out.println("下次航班三小時(shí)后起飛");
}
}
else
{
System.out.println("下次航班三小時(shí)后起飛");
}
}
}
else if(command == 2)//在無煙區(qū)分配座位
{
int j = allocSeats(5,10);
if(j==10)//無煙區(qū)沒有座位了
{
System.out.println("無煙區(qū)無座位了货邓,是否接受吸煙區(qū)的座位秆撮?");
String answer = scanner.next();
if (answer.equals("是"))//在無煙區(qū)分配座位
{
int i = allocSeats(0,5);
if (i == 5)//吸煙區(qū)也沒有座位了
{
System.out.println("下次航班三小時(shí)后起飛");
}
}
}
}
}
System.out.println("謝謝使用");
}
}
5.某個(gè)公司采用公用電話傳遞數(shù)據(jù)信息,數(shù)據(jù)是小于8位的整數(shù)换况,為了確保安全职辨,5698234 --》 4328965 ---》9873410 -- 》 0873419
在傳遞過程中需要加密,加密規(guī)則如下:
首先將數(shù)據(jù)倒序戈二,然后將每位數(shù)字都加上5舒裤,再用和除以10的余數(shù)代替該數(shù)字,
最后將第一位和最后一位數(shù)字交換觉吭。 請(qǐng)任意給定一個(gè)小于8位的整數(shù)腾供,
然后,把加密后的結(jié)果在控制臺(tái)打印出來鲜滩。
public class JiaMi {
public static void main(String[] args) {
int index = 0; //數(shù)組當(dāng)前的下標(biāo)
int[] array = new int[8];
Scanner scanner = new Scanner(System.in);
System.out.println("請(qǐng)輸入要加密的數(shù)");
int num = scanner.nextInt();//--》 4328965
//將數(shù)倒序伴鳖,保存到數(shù)組中
while (num != 0)
{
array[index] = num % 10;
index++;
num = num / 10;
}
for(int i = 0; i < index; i++)
{
array[i] = (array[i] + 5) % 10; //每位數(shù)字都加上5,再用和除以10的余數(shù)代替該數(shù)字
}
//最后將第一位和最后一位數(shù)字交換
int temp = array[0];
array[0] = array[index - 1];
array[index - 1] = temp;
for(int i = 0; i < index; i++)
{
System.out.print(array[i]);
}
return;
}
}