吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 530|回复: 16
收起左侧

[已解决] 新手小白求教循环判断异常处理

[复制链接]
sundeam 发表于 2023-11-16 17:34
本帖最后由 sundeam 于 2023-11-17 09:52 编辑

各位大佬,我是c++菜鸟,今天遇到一个循环判断的问题,一直找不到原因,求指教。

[C++] 纯文本查看 复制代码
#include<iostream>
#include <limits>
#include<random>
#include<ctime>
#include<cstdlib>

using namespace std;
int main()
{
    int  num = 0; int a = 0; int b = 100; int c = 0; time_t t;
    srand((unsigned)time(&t));
    num = rand()%100;
   
   
        for (;;)
        {
            cout << "请输入" << a << "---" << b << "之间任意一个数值";
            cin >> c;
            if (num==c)
            {
                cout << "恭喜你答对了~!" << endl;
                a = 0; b = 100;
                num = rand() % 100;
            }
            if (num>c>a)
            {
                a = c;
            }
            if (b>c>num)
            {
                b = c;
               
            }



        }


每次循环到if (num>c>a)  可以正常判断,执行完一次后,后面输入的数据就不判断了?

经过大佬的分享,完美解决判断异常问题,谢谢~!
下面附上修改后的
using namespace std;
int main()
{
    int  num = 0; int a = 0; int b = 100; int c = 0; time_t t;
    srand((unsigned)time(&t));
    num = rand()%100;
   
   
        for (;;)
        {
            cout << "请输入" << a << "---" << b << "之间任意一个数值";
            cin >> c;
            if (num==c)
            {
                cout << "恭喜你答对了~!" << endl;
                a = 0; b = 100; c = 0;
                num = rand() % 100;
            }
            if (c < 0 && c>100)
            {
                cout << "你输入的数值超出范围,请重新输入:" << endl;
                c = 0;
            }
            if (num>c && c>a)
            {
                a = c;
            }
            if (b>c && c>num)
            {
                b = c;
               
            }



        }

演示图

演示图

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

无问且问 发表于 2023-11-16 18:14
c/c++语言没有连续大于这种写法,正确写法应该是num > c && c > a,b > c && c > num,在 c/c++ 中,符号 “>” 是一种用于比较两个值的运算符,它的含义是“大于”。该运算符用于比较两个操作数的大小关系,如果左操作数大于右操作数,则返回真(1),否则返回假(0)。

免费评分

参与人数 2吾爱币 +2 热心值 +1 收起 理由
sundeam + 1 谢谢@Thanks!
niuyufeng + 1 + 1 我很赞同!

查看全部评分

jishufanzi 发表于 2023-11-16 18:15
The given code snippet is a loop that continuously asks the user to enter a number between variables a and b. The loop will continue running until the user enters the correct number, indicated by if (num == c).

If the user guesses the correct number, a message "恭喜你答对了~!" will be displayed. Then, variables a and b are reset to 0 and 100 respectively, and a new random number is generated using num = rand() % 100.

If the user's guess is less than the correct number, the lower limit of the range, a, is updated to the guessed number using a = c.

If the user's guess is greater than the correct number, the upper limit of the range, b, is updated to the guessed number using b = c.

The loop will continue with the updated range until the correct number is guessed.
chao52 发表于 2023-11-16 18:19
Recalled123 发表于 2023-11-16 18:43

c/c++语言没有连续大于这种写法,,改成相应的写法即可
nyazhou 发表于 2023-11-16 18:50
无问且问 发表于 2023-11-16 18:14
c/c++语言没有连续大于这种写法,正确写法应该是num > c && c > a,b > c && c > num,在 c/c++ 中,符号 “ ...

这样的写法编译之后会怎么运行啊,lz的程序过编译了
kof888 发表于 2023-11-16 19:10
判断写错了,不能这样判断
sai609 发表于 2023-11-16 19:22
不能这样判断,应该是
2783384895 发表于 2023-11-16 20:13
判断有错误得修改一下
ashortname 发表于 2023-11-16 22:47
这种连续大于或小于我只在python里写过,c/c++是没有这种写法的。这样写实际上相当于(a>b)>c,可以看看下面的输出:
[C++] 纯文本查看 复制代码
std::cout << (4 > 3 > 2) << "  " << (4 > 3 > -1) << std::endl;
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 19:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表