gpt4 book ai didi

c++ - 数百行来自else if语句的垃圾代码

转载 作者:行者123 更新时间:2023-12-01 15:03:43 31 4
gpt4 key购买 nike

我是一个第一学期的 C++ 学生,试图制作一个程序,在给定 3 个 int 值的情况下,它会找到总和。但是,如果其中一个值与另一个值相同,则不计入总和
问题出在我的代码的 if/else if 部分。

当我运行它时输入类似 1、1、2 的内容,它应该只添加 1 和 2,而是输出数百行垃圾代码。我不知道我做了什么或应该做什么,因为没有任何错误。输入 1, 1, 1 应该并且确实输出 1,但是该用例之外的任何内容都会失败。

我的代码是:

#include <iostream>
#include <stdlib.h>
using namespace std;

// Declare Function:
string loneSum(int num1, int num2, int num3);

int main()
{
//Declaring vars
int num1;
int num2;
int num3;

//Obtaining user input
cout << "Please enter number one: ";
cin >> num1;
cout << "Please enter number two: ";
cin >> num2;
cout << "Please enter number two: ";
cin >> num3;

cout << loneSum(num1, num2, num3);
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Sends user input to function
}
string loneSum(int num1, int num2, int num3) {

if(num1 != num2 || num3) {
cout << num1 + num2 + num3;
}
else if ((num1 == num2) && (num2 != num3)) {
cout << num2 + num3;
}
else if ((num2 == num3) && (num3 != num1)) {
cout << num1 + num3;
}
else if (num1 == num2 && num3) {
cout << "None";
}
}

最佳答案

标题中提示的问题,大量的“垃圾”输出,是由 loneSum 引起的。声明返回 string , 但它不包含任何 return陈述。所以它没有返回它所 promise 的,然后行为不是由 C++ 标准定义的。至少在您的情况下,实践中发生的情况是,当 cout << loneSum(num1, num2, num3);执行时,它会接收某种不受控制的数据来代替字符串,并尝试将其作为字符串处理并将其写入标准输出。

要更正此问题,请输入 return loneSum 中的声明返回一个值。由于您仍在编写简单的程序,而不是返回 string , 让我们返回一个 int .更改loneSum的声明到:

int loneSum(int num1, int num2, int num3);

将定义更改为:
int loneSum(int num1, int num2, int num3) {

并在 main 中更改使用到:
    cout << "The sum is " << loneSum(num1, num2, num3) << ".\n";

现在,在 loneSum 里面,我们需要计算正确的总和,而您的代码没有这样做。这实际上相当容易:
  • num1总是包含在总和中,因为它不是任何早期数字的重复。
  • num2如果不与 num1 重复,则包括在内.
  • num3如果不与 num1 重复,则包括在内并且不是 num2 的重复项.

  • 代码是:
        int sum = num1;
    if (num2 != num1)
    sum += num2;
    if (num3 != num1 && num3 != num2)
    sum += num3;

    最后,我们包括 return声明您的程序丢失:
        return sum;

    关于c++ - 数百行来自else if语句的垃圾代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60676271/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com