输入n个数字,并求出它们中间的最大值与最小值
程序员文章站
2023-12-27 18:53:51
...
做题觉得简单,拿着编译器一编程就各种小毛病出来了,这样下去的进度就太慢了。
- 既然是n个数,那么肯定就要有输入,定义一个数组a[5] 来接收从键盘输入的数字,怎么将接收的数值依次传入数组呢?利用for循环,将其依次存入a数组。输入完成,接下来就是要实现具体功能了
- 将问题模块化,把功能与主函数独立开来,建立一个新的函数,其功能为求函数的最大最小值。比如建立一个fun()函数,需要传参,传什么参数呢?刚才从键盘输入的数都放到数组里面去了,函数当然也需要用到这些,所以数组需要传到fun()函数,当然,传的是数组名a,另外数组名的个数也不能少,所以fun()需要传入两个参数,于是函数调用格式为:fun(a,5),得到函数定义fun(int a[],int i){函数体}
- 下面可以开始编写主要功能了。在fun()中,因为会进行数组的比较才能得出最大最小值,所以,循环是少不了的。这个循环的作用为遍历数组。定义变量,循环需要一个变量i,用于与和i进行比较, 这里实际是与传过来的实参5进行比较。定义max用来存储最大值,定义min用来存储最小值。这里注意了,实参与形参之间为单向的值传递。所以我们需要将max,min定义到fun()函数外面,作为全局变量,这样当fun()函数结束后,max、min变量内存才不会被释放,相对应的值也就会被保留。
- 将max=a[0],min=a[0].作用为给max、min一个初始的值。定义一个循环,开始进行比较。在循环体内可以给一个if语句,当a[j]>max时,则max=a[j]; 当a[j]>min时min=a[i];这样经过循环遍历,就可以完整得出max、与min。至此,求最大值与最小值的功能就实现了。
相关代码:
#include <stdio.h>
int max,min; //定义全局变量max、min
void fun(int a[],int i)
{
max=a[0];min=a[0]; //将a[0]赋值给max与min
for(int j=1;j<i;j++){
if (max<a[j]) max=a[j]; //如果max小于a[j],则把a[j]赋值给max
if(min>a[j]) min=a[j]; //如果min大于a[j],则把a[j]赋值给min
}
}
int main(){
int i;
int a[5];
printf("请输入数字:\n");
for(i=0;i<5;i++){
scanf("%d",&a[i]); //将输入的数字存入数组
}
fun(a,5); //调用函数
printf("%d,%d\n",max,min);
return 0;
}