C++降序排列问题请教

来源:百度知道 编辑:UC知道 时间:2024/06/22 17:45:07
#include "stdafx.h"
下面程序四行(1),(2),(3),(4)为填空,要使程序使用选择法将一数组降序排列,我填写了,请问怎么提示)0xC0000005 access violation?

#include <iostream>
using namespace std;

const int N=10;
void sort(int arrl[],int n)
{
int i,j,k,temp;

for (i=0;i<n-1;i++)
{
(1) arrl[k]=arrl[i];
(2) for (k=i;j<n;j++)
if (arrl[j]>arrl[k])
k=j;
if (k!=i)
{
temp=arrl[i];
arrl[i]=arrl[k];
arrl[k]=temp;
}
}
}

int main(int argc, char* argv[])
{
// void sort(int *arrl,int n);
(3) int arr[N], i;
cout<<"input value of array:";
for (i=0;i<N;i++);
cin>>arr[i];
(4) sort(arr,N);
for (i=0;i<N;i++)
cout<<arr[i]<<" ";

return 0;
}

(1)和(2)应该如下填:
(1)k=i;
(2)for(j=i+1;j<n;j++)

另:你原来的程序有个错误,即main函数中输入语句
for (i=0;i<N;i++);
cin>>arr[i];
其中for后面的分号";"应该去掉.

#include <iostream>
using namespace std;

const int N=10;
void sort(int arrl[],int n)
{
int i,j,k,temp;

for (i=0;i<n-1;i++)
{
//(1) arrl[k]=arrl[i];
//(2) for (k=i;j<n;j++)
k=i;
for(j=i;j<n-1;j++)
if (arrl[j]>arrl[k])
k=j;
if (k!=i)
{
temp=arrl[i];
arrl[i]=arrl[k];
arrl[k]=temp;
}
}
}

int main(int argc, char* argv[])
{
// void sort(int *arrl,int n);
//(3) int arr[N], i;
int arr[N], i;
cout<<"input value of array:";
for (i=0;i<N;i++)
cin>>arr[i];
//(4) sort(arr,N);
sort(arr,N+1);
for (i=0;i<N;i++)
cout<<arr[i]<<" ";