C语言排序问题
发布网友
发布时间:2022-05-07 23:24
我来回答
共4个回答
热心网友
时间:2022-07-01 20:44
你的函数实参全写成了形参形式。区分开实参和形参。另外提醒你一维数组做参数,实际是指针,数组长度是丢失了的,如果一定要传进去长度,需要另外附加参数,不过你这里数组长度N被你定义为常量,所以就不必传了。而且主函数需要加返回值。更改后代码如下(已调试正常):
#include<stdio.h>
#define N 10
int a[N];
int input(int a[]);
int output(int a[N]);
int sort(int a[N]);
int main()
{
int a[N],i,j,r,temp;
printf("请输入数组a中的10个数字:\n");
input(a);
printf("排序前序列:\n");
output(a);
sort(a);
printf("\n排序后序列:\n");
output(a);
printf("请输入要查找的数: \n");
return 1;
}
int input(int a[])
{
int i;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
return 0;
}
int output(int a[])
{
int i;
for(i=0;i<N;i++)
{
printf("%5d",a[i]);
printf("\n");
if( (i+1)%5 )
printf("\n");
}
return 0;
}
int sort(int a[]){
int i,j,r,temp;
for(i=0;i<N-1;i++)
{
r=i;
for(j=i+1;j<N;j++)
if(a[j]>a[r])
r=j;
if(r!=i)
{
temp=a[r];
a[r]=a[i];
a[i]=temp;
}
}
return 0;
}
热心网友
时间:2022-07-01 20:44
#include<stdio.h>
#define N 10
int a[N];
int input(int a[N]);
int output(int a[N]);
int sort(int a[N]);
int main()
{
int a[N],i,j,r,temp;
printf("请输入数组a中的10个数字:\n");
input(a); /*调用函数的时候,参数只要一个变量名就可以了,下同*/
printf("排序前序列:\n");
output(a);
sort(a);
printf("\n排序后序列:\n");
output(a);
printf("请输入要查找的数: \n");
}
int input(int a[N])
{
int i;
for(i=0; i<N; i++)
scanf("%d",&a[i]);
return 0;
}
int output(int a[N])
{
int i;
for(i=0; i<N; i++)
{
printf("%5d",a[i]);
//printf("\n"); /*每个数字都要换行?*/
if( (i+1)%5==0 ) /*每5个数字换行?*/
printf("\n");
}
return 0;
}
int sort(int a[N])
{
int i,j,r,temp;
for(i=0; i<N-1; i++)
{
r=i;
for(j=i+1; j<N; j++)
if(a[j]>a[r])
r=j;
if(r!=i)
{
temp=a[r];
a[r]=a[i];
a[i]=temp;
}
}
return 0;
}
热心网友
时间:2022-07-01 20:44
#include<stdio.h>
#define N 10
int a[N];
void input(int a[N]);//输入函数不需要返回值
void output(int a[N]);//输出函数不需要返回值
void sort(int a[N]);//排序函数不需要返回值
int main()
{
int a[N];
printf("请输入数组a中的10个数字:\n");
input(a);//函数调用的实参形式,不能写成定义时的形式
printf("排序前序列:\n");
output(a);
sort(a);
printf("\n排序后序列:\n");
output(a);
printf("请输入要查找的数: \n");
return 0;
}
void input(int a[N])
{
int i;
for(i=0;i<N;i++)
scanf("%d",&a[i]);
}
void output(int a[N])
{
int i;
for(i=0;i<N;i++)
{
printf("%5d",a[i]);
if( (i+1)%5 == 0 )
printf("\n");
}
}
void sort(int a[N])
{
int i,j,r,temp;
for(i=0;i<N-1;i++)
{
r=i;
for(j=i+1;j<N;j++)
if(a[j]>a[r])
r=j;
if(r!=i)
{
temp=a[r];
a[r]=a[i];
a[i]=temp;
}
}
}
热心网友
时间:2022-07-01 20:45
input(int a[N]); 调用函数的时候input(a);就可以了,下同