我编写了一个用于插入排序的代码,似乎没有错误(它编译得很好),但它没有打印任何内容或要求用户输入。我已经多次查看了这些内容,但我无法弄清楚为什么代码无法正常运行。谢谢!
#include <iostream>
using namespace std;
void getInput(int a[ ], int n);
void insertionSort(int a[ ], int n);
void print(int a[ ], int n);
int main()
{
int n=7;
int a[n];
getInput(a, n);
insertionSort(a, n);
print(a, n);
system("pause");
return 0;
}
void getInput(int a[ ], int n)
{
for(int i; i<n;i++)
{
cout<<"Number? ";
cin>>a[i];
}
}
void insertionSort(int a[ ], int n)
{
int temp, j;
for(int i = 0; i<n; i++)
{
temp = a[i];
j=i;
while(j>0 && a[j-1] > temp)
{
a[j]= a[j-1];
j=j-1;
}
}
}
void print(int a[ ], int n)
{
for(int i= 0; i<n; i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
答案 0 :(得分:1)
在print
和getInput
中,您的变量i未初始化为0
您应该将i初始化为0
for(int i = 0; i<n;i++)
{
cout<<"Number? ";
cin>>a[i];
}
打印方法相同。
此外,您应该使用cont var初始化数组大小。 For more details
const int n = 7;
答案 1 :(得分:0)
void print(int a[ ], int n)
{
for(int i; i<n; i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
这是你的功能,你没有初始化i的值。 初始化i = 0; 成功:
for(int i = 0; i<n; i++)