题目:最小数和最大数
输入 nn 个数,找到其中最小的数和最大的数
输入格式
第一行一个整数 n (1<= <= 100)
第二行 n个整数 a (1<= a<=10000)
输出格式
两个整数,分别表示最小的数和最大的数。
样例输入
4
3 9 8 1
输出
1 9
AC如下:
#include <stdio.h>
void nzp(int a[],int n)
{
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[j]>a[k])
k=j;
if(k!=i)
{
t=a[k];
a[k]=a[i];
a[i]=t;
}
}
}
main()
{ int b[100],i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&b[i]);
nzp(b,n);
printf("%d %d",b[n-1],b[0]);
}
利用了选择排序法对数组元素由大到小进行排序。
void nzp(int a[],int n) /*这里的函数仅仅为了完成排序,不需要输出
{
int i,j,k,t;
for(i=0;i<n-1;i++) /*n个数据进行n-1趟比较*/
{
k=i; /*k记录排序范围内的第一个元素的位置*/
for(j=i+1;j<n;j++) /*找出最大元素的位置,由k记录*/
if(a[j]>a[k])
k=j;
if(k!=i) /*k若不为排序范围内的第一个元素(即第i个元素不是最大元素)*/
{
t=a[k]; /*将最大的元素与第i个元素对调*/
a[k]=a[i];
a[i]=t;
}
}
}
本次收获:在数组名作为函数参数时,可将数组在形参中设置为 nzp(int a[],int n),引用时nzp(b,n)。
知识点:数组名作为函数参数时,形参和实参都应使用数组名,并且要求实参与形参的类型相同、维数相同。再进行参数传递时,按单向“值传递”,方式传递地址,即将实参数组名所代表的首地址传递给形参数组名,而不是将实参数组的每个单元一一传送给形参的各数组元素。形参数组名接受了实参数组首地址后,形参与实参共用相同的存储区域。在被调函数中,如果形参数组的数据发生变化,则实参也发生变化。