C语言:在main函数中,定义一个含N个元素的数组,其中N是符号常量,然后编写下列各子函数完成相应的功能

在main函数中,定义一个含N个元素的数组,其中N是符号常量,然后编写下列各子函数完成相应的功能:
(1)编写函数sr:为该数组各元素赋值(要求调用随机函数为各数组元素赋值)。
(2)编写函数sc:打印该数组各元素,要求每行打印m个数,其中m作为形参传递。
(3)编写函数js:求该数组元素的最大值和最小值,最大值和最小值通过参数传递返回主调函数。
(4)编写函数px:实现对数组的排序。
各个函数编写完成后,请编写main函数,并在main中分别调用以上四个函数,以验证各子函数的功能。

试试..

#define N 10
#include<stdio.h>
void main()
{
void sr(int a[]);
void sc(int a[],int m);
void js(int a[],int *max,int *min);
void px(int a[]);
int a[N],m,max,min;
/***************************/
printf("输入一个数m ");
scanf("%d",&m);
sr(a);
sc(a,m);
js(a,&max,&min);
printf("最大值max=%d,最小值min=%d\n",max,min);
px(a);
sc(a,m);
}
/***********************/
void sr(int a[])
{
int i;
printf("初始化数组,输入 %d 个数 :\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
}
/************************/
void sc(int a[],int m)
{
int i;
printf("输出数组a,每行%d 个数:\n",m);
for(i=0;i<N;i++)
printf("%5d",a[i])&&((i+1)%m==0)&&printf("\n");
printf("\n");
}
/*************************/
void js(int a[],int *max,int *min)
{
int i;
printf("求最大最小值\n");
*max=*min=a[0];
for(i=1;i<N;i++)
{
if(*max<a[i])*max=a[i];
if(*min>a[i])*min=a[i];
}
}
void px(int a[])
{
int i,j,tmp;
printf("数组排序\n");
for(i=0;i<N-1;i++)
for(j=i+1;j<N;j++)
if(a[i]<a[j])
{
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
}追问

谢谢呀,能把函数px输出的时候是这个形式吗?

数组排序为:1 2 3 4 5 6 7 8 9 10

下面是你的编译后的图片

追答

if(a[i]a[j]就行了

追问

怎么改使排序不分行呢?

追答

这个是输出的问题啊,和排序没关系,在main函数里最后用的是
px(a);
sc(a,m);
意思是调用排序,然后仍然按一行m个数输出,把输出自定义就是了,改成sc(a,N)就是一行全输出了,N是自定义的数组元素个数

温馨提示:答案为网友推荐,仅供参考