\n");
return 0;
}
double fun(double *x)
{
int i, j;
double av, y[N];
av=0;
for(i=0; i<N; i++) av +=x[i];
av/=N;
for(i=j=0; i<N; i++)
if( x[i]<av )
{
y[j]=x[i]; x[i]=-1; j++;
}
i=0;
while(i<N)
{
if (x[i]!=-1) y[j++]=x[i];
i++;
}
for (i=0; i<N; i++) x[i] = y[i];
return av;
}
参考程序
4.编写函数fun,它的功能是:把形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[1]中;再把形参a所指数组中的次大值放在a[2]中,次小值放在a[3]中;其余以此类推。
例如,若a所指数组中数据最初排列为:1、4、2、3、9、6、5、8、7,则按规则移动后,数据排列为:9、1、8、2、7、3、6、4、5。
#include <stdio.h>
#define N 9
void fun(int a[], int n)
{
}
int main()
{
int b[N]={1,4,2,3,9,6,5,8,7}, i;
printf("\nThe original data :\n");
for (i=0; i<N; i++) printf("%4d ", b[i]);
printf("\n");
fun(b, N);
printf("\nThe data after moving :\n");
for (i=0; i<N; i++) printf("%4d ", b[i]);
printf("\n");
return 0;
}
void fun(int a[], int n)
{
int i, j, max, min, px, pn, t;
for (i=0; i<n-1; i+=2)
{
max = min = a[i];
px = pn = i;
for (j=i+1; j<n; j++)
{
if (max < a[j])
{ max = a[j]; px = j; }
if (min > a[j])
{ min = a[j]; pn = j; }
}
if (px != i)
{
t = a[i]; a[i] = max; a[px] = t;
if (pn == i) pn= px;
}
if (pn != i+1)
{ t = a[i+1]; a[i+1] = min; a[pn] = t; }
}
}
参考程序
5.编写函数fun,它的功能是:将N*N矩阵中元素的值按列右移一个位置,右边被移出矩阵的元素绕回左边。
例如,N=4,有下列矩阵
21 12 13 24
25 16 47 38
29 11 32 54
42 21 33 10
移动后结果为
24 21 12 13
38 25 16 47
54 29 11 32
10 42 21 33
#include <stdio.h>
#define N 4
void fun(int (*t)[N])
{
}
int main()
{
int t[][N]={21,12,13,24,25,16,47,38,29,11,32,54,42,21,33,10}, i, j;
printf("The original array:\n");
for(i=0; i<N; i++)
{
for(j=0;j<N;j++) printf("%2d ",t[i][j]);
printf("\n");
}
fun(t);
printf("\nThe result is:\n");
for(i=0; i<N; i++)
{
for(j=0;j<N;j++) printf("%2d ",t[i][j]);
printf("\n");
}
return 0;
}
void fun(int (*t)[N])
{
int i, j, x;
for(i=0; i< N; i++)
{
x=t[i][ N-1] ;
for(j=N-1; j>0; j--)
t[i][j]=t[i][j-1];
t[i][0]=x;
}
}
参考程序
6.编写函数fun,它的功能是:将a所指3*5矩阵中第k列的元素左移到第0列,第k列以后的每列元素依次左移,原来左边的各列依次绕到右边。
例如,有下列矩阵
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
若k为2,程序执行结果为
3 4 5 1 2
3 4 5 1 2
3 4 5 1 2
#include <stdio.h>
#define M 3
#define N 5
void fun(int (*a)[N],int k)
{
}
int main( )
{
int x[M][N]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}},i,j;
printf("The array before moving:\n\n");
for(i=0; i<M; i++)
{
for(j=0; j&