gpt4 book ai didi

C++ 数组和函数,代码无法运行

转载 作者:太空宇宙 更新时间:2023-11-04 15:36:46 28 4
gpt4 key购买 nike

我是编程新手,最近才开始使用 C++,从一本书中学习。我有一个问题要求我编写一个具有 3 个独立函数的程序:

  1. 填充数组,接受输入直到数组已满或用户输入非数字输入。
  2. 显示数组的内容
  3. 反转存储在数组中的值的顺序

下面是我写的代码:

#include<iostream>
#include<array>
using namespace std;

int Fill_array(double*, int);
void Show_array(double*, int);
void Reverse_array(double*, int);

int main()
{
int temp; double val[100];
cout << "Please enter no. of values (<=100): ";
cin >> temp;

int num = Fill_array(val, temp);
int x;


cout << "Press 1 to show array & 2 to reverse array: ";
while (cin>>x)
{
if (x == 1)
{
Show_array(val, num);
cout << "Press 1 to show array & 2 to reverse array: ";
continue;
}

if (x == 2)
{
Reverse_array(val, num);
cout << "Press 1 to show array & 2 to reverse array: ";
continue;
}

else
{
break;
}
}

}



/////////////////////////////////////// function definitions

int Fill_array(double val[], int num)
{
int x = 0;
cout << "Enter values:";
while (x<num && cin>>val[x])
{
x++;
}
return x;
}

void Show_array(double val[], int num)
{
cout << "Array values: " << endl;
for (int i = 0; i < num;i++)
{
cout << val[i] << endl;
}
}

void Reverse_array(double val[], int num)
{
for (int i = 0, j = num-1; i >= j; i++, j--)
{
double temp;
temp = val[i];
val[i] = val[j];
val[j] = temp;
}
}

函数Reverse_array不会颠倒数组中值的顺序。此外,当我在 Fill_array 期间提供非数字输入时,程序将 cout<<"Press 1 to show array & 2 to reverse array: ";但随后继续跳过 while 循环,程序就结束了。

最佳答案

Reverse_array 中的 for 循环有一个简单的逻辑错误:

for (int i = 0, j = num-1; i >= j; i++, j--)
^^^^

这应该是:

for (int i = 0, j = num-1; i < j; i++, j--)
^^^

请注意,在调试器中单步执行代码会很快向您显示此错误,因此开始学习此和其他基本调试技能可能是个好主意。

另请注意,C++ 已经支持许多像这样的简单操作 - 您可以使用 std::reverse 而不是“重新发明轮子”,例如

void Reverse_array(double val[], int num)
{
std::reverse(val, val + num);
}

关于C++ 数组和函数,代码无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31383038/

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