Guess Number

Guess Number

交互题 提交数: 3116, 通过率: 90.92%, 平均分: 91.16

题目描述:

这是一道交互题。

交互题指南

你需要猜出正确的数字是什么。

你需要实现一个函数guess_number。

int guess_number();

你可以借助函数:

int try_number(int num);

num为你猜的数字。

返回1表示你猜的数字大于答案;

返回2表示你猜的数字小于答案;

返回3表示你可以退出了(猜对了或者超出了次数限制)。

你可以调用函数try_number至多100次。

猜测次数在(30,100]得10分。

猜测次数小于等于30次得满分。

#include "interact.h"
int try_number(int);
int guess_number(){
        int l=0,r=1000000000;

        while(l<=r){
                int m = l+((r-l)/2);
                int s = try_number(m);

                if(s==1){
                        r=m-1;
                }else if(s==2){
                        l=m+1;
                }else{
                        return 0;
                }
        }

        return 0;
}
以下代码只用awt不用swing表示出来package chap03; import javax.swing.*; import java.awt.*; import java.awt.event.*; public class GuessNumber extends JFrame implements ActionListener { private JLabel promptLabel, resultLabel; private JTextField inputField; private JButton guessButton; private int targetNumber, guessCount, maxTryTime; public GuessNumber () { targetNumber = (int)(Math.random()*10)+1; guessCount = 0; maxTryTime = 5; promptLabel = new JLabel("请输入一个0~10之间的数字:"); inputField = new JTextField(10); guessButton = new JButton("猜!"); guessButton.addActionListener(this); resultLabel = new JLabel(""); JPanel panel = new JPanel(); panel.add(promptLabel); panel.add(inputField); panel.add(guessButton); panel.add(resultLabel); this.add(panel); this.setTitle("猜数字游戏界面"); this.setSize(300, 150); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public void actionPerformed(ActionEvent e) { String inputText = inputField.getText(); try { int guessNumber = Integer.parseInt(inputText); guessCount++; if (guessCount < maxTryTime) { int c = maxTryTime - guessCount; if (guessNumber > targetNumber) { resultLabel.setText("输入的过大,您还有" + c + "次机会"); } else if (guessNumber < targetNumber) { resultLabel.setText("输入的过小,您还有" + c + "次机会"); } else { resultLabel.setText("恭喜你,猜对了!你一共猜了" + guessCount + "次"); guessButton.setEnabled(false); } } else { resultLabel.setText("抱歉游戏失败"); guessButton.setEnabled(false); } } catch (NumberFormatException ex) { resultLabel.setText("输入异常,请重新输入!!!"); } } public static void main(String[] args) { new GuessNumber(); } }
05-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值