c++ 我的大学作业结果不准确[关闭]

ufj5ltwl  于 2023-04-08  发布在  其他
关注(0)|答案(2)|浏览(133)

**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。

这个问题似乎不是关于在help center定义的范围内编程。
2天前关闭。
Improve this question
我有一个生成一个程序,它是:
3-编写一个程序,设计一个程序,该程序通过嵌套的if-else语句在顶部显示交通路线决策图,该语句采用从住宅到大学的整数公里距离,并按以下格式检查条件:
·如果距离小于等于1 km,则打印“步行到大学”
·如果距离大于1公里但小于等于3公里,则打印“乘坐公共交通工具来大学”
·如果距离大于3公里小于5公里,则打印“按大学点来大学”
·改变大学。
·此外,将指示距离的负值的条件应用为无效输入。
我为我的大学作业创建了一个使用嵌套if语句的程序,但结果不正确。有人能帮我找出错误吗?
我试过这个:

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
    int distance;
    cout << "Enter your distance from home to university in km " << endl;
    cin >> distance;
    if (distance < 0) {
        cout << ("Invalid Number");
        if (distance <= 1) {
            cout << ("Come university by foot");
            if (distance <= 3) {
                cout << ("Come University by public transport");
                if (distance <= 5) {
                    cout << ("Come university by university point");
                }
                else {
                    cout << ("Change the university");
                }
            }
        }
    }
    return 0;
}

这是输出
Output

rqmkfv5c

rqmkfv5c1#

所有后续的if都嵌套在父if语句(if (distance < 0))中,除非输入值为负,否则将阻止其执行。
如果你必须通过嵌套if s来实现,你可以这样做:

#include <iostream>
using namespace std;
int main()
{
    int distance;
    cout << "Enter your distance from home to university in km " << endl;
    cin >> distance;
    if (distance < 0) 
    {
        cout << ("Invalid Number");
    }
    else
    {
        if (distance <= 5)
        {
            if (distance <= 3) 
            {
                    if (distance <= 1) 
                    {
                        cout << ("Come university by foot");
                    }
                    else
                    {
                        cout << ("Come University by public transport");
                    }
            }
            else
            {
                cout << ("Come university by university point");
            }
        }
        else
        {
            cout << ("Change the university");
        }
    }

    return 0;
}

我还建议一个更清晰的间距和正确的{}位置的方法,这样你甚至可以简单地通过它们的缩进来分辨错放/丢失/错误的括号(至少现在是这样)。

jgwigjjp

jgwigjjp2#

用嵌套的ifs回答

#include <iostream>
using namespace std;
int main()
{
    int distance{};
    cout << "Enter your distance from home to university in km: ";
    cin >> distance;
    if (distance >= 0)
        if (distance > 1)
            if (distance > 3)
                if (distance > 5)
                    cout << ("Change the university");
                else
                    cout << ("Come university by university point");
            else
                cout << ("Come University by public transport");
        else
            cout << ("Come university by foot");
    else
        cout << ("Invalid Number");
    return 0;
}

使用else if块代替嵌套块以提高可读性

#include <iostream>
using namespace std;
int main()
{
    int distance{};
    cout << "Enter your distance from home to university in km: ";
    cin >> distance;
    if (distance < 0)
        cout << ("Invalid Number");
    else if (distance <= 1)
        cout << ("Come university by foot");
    else if (distance <= 3)
        cout << ("Come University by public transport");
    else if (distance <= 5)
        cout << ("Come university by university point");
    else
        cout << ("Change the university");
    return 0;
}

相关问题