题目:
随机生成9个正整数放在数组a中,按升学排序后生成数组b,找出b数组处于中间位置的数,将原数组a中比该中间数小的数用该中间数替换,但位置不变。
首先,
题目有些拗口,我们举个例子来理解一下,例如系统生成9个正整数为1,5,7,23,87,5,8,21,45.那么按升序排列后生成数组b,该数组求得中间数为8,按要求:“将原数组a中比该中间数小的数用该中间数替换,但位置不变”处理后数组a变为:8,8,8,23,87,8,8,21,45.
该例子大家可以多读两遍,理解后开始程序的编写。
#include<stdio.h>
#include<math.h>
#include<time.h>
int main()
{
int a[9],b[9];
int i,j,p,temp;
srand(time(0));
for(i=0;i<9;i++)
{
a[i]=fabs(rand());
b[i]=a[i];
}
for(i=0;i<9;i++)
{
for(j=i+1;j<9;j++)
{
if(b[i]>b[j])
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
}
p=b[4];
for(i=0;i<9;i++)
{
if(a[i]<p)
a[i]=p;
}
printf("处理后的数据为:\n");
for(i=0;i<9;i++)
printf("%6d",a[i]);
}
对于程序的运行结果,我们也来看一下。