鱼C论坛

 找回密码
 立即注册
查看: 2569|回复: 8

输入10个,输出最大和最小值。有不明的的地方

[复制链接]
发表于 2019-6-6 00:23:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>

int max, min;      /*全局变量*/

void max_min_value(int array[], int n);

void main()
{
      int i, number[10];

      printf("enter 10 integer umbers:\n");

      for( i=0; i < 10; i++)
      {
            scanf("%d", &number[i]);
      }

      max_min_value(number, 10);

      printf("\nmax=%d, min=%d\n", max, min);

}

void max_min_value(int array[], int n)
{
      int *p, *array_end;
      
      array_end = array + n;
      
      max = min = *array;
      
      for( p=array+1; p < array_end; p++)
      {
            if( *p > max )
            {
                  max = *p;
            }
            else if( *p < min )
            {
                  min = *p;
            }     
      }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-6-6 00:24:31 | 显示全部楼层
第一个问题
value(int array[], int n)
n什么时候定义的。为什么是10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-6 00:29:47 | 显示全部楼层
for( p=array+1; p < array_end; p++)
这个循环p=arry+1,这个p的值循环后也还是1啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-6 00:30:14 | 显示全部楼层
chenyixin258 发表于 2019-6-6 00:24
第一个问题
value(int array[], int n)
n什么时候定义的。为什么是10

你自己传进去写死的10 啊
   max_min_value(number, 10);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-6 02:26:23 | 显示全部楼层
问的啥玩意
第一个问题:
max_min_value(number, 10); 你在调用函数的时候 传入的参数10 就是给n 你在函数定义的时候 不就定义了n么 void max_min_value(int array[], int n)
第二个问题不知道你想表达声明
for( p=array+1; p < array_end; p++) for循环的第一个条件 只执行一次

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2019-6-6 15:29:52 | 显示全部楼层
chenyixin258 发表于 2019-6-6 00:24
第一个问题
value(int array[], int n)
n什么时候定义的。为什么是10

其中n是形参,n在main函数中被定义为10,然后在main函数中调用这个函数的时候把10传了进去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-7 06:35:51 | 显示全部楼层
chenyixin258 发表于 2019-6-6 00:24
第一个问题
value(int array[], int n)
n什么时候定义的。为什么是10

value(int array[],int n)
其中 n main(主函数)中被定义的,就是在实参传值给形参的过程中,即max_min_value(number,10)。这里实参“10”传递给形参“n”。
这个知识点是函数调用中关于实参传值给形参的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-7 06:42:34 | 显示全部楼层
chenyixin258 发表于 2019-6-6 00:29
for( p=array+1; p < array_end; p++)
这个循环p=arry+1,这个p的值循环后也还是1啊

因为在自定义函数语句中 “max=min=*array” 就已经把max和min的值定义为array[0]的值了,所以只用需要对后面的数进行比较就可以了,即用array[0]的值同array[1]、array[2]、array[2]……等作比较就OK了,这样可以优化计算步骤。
在调用函数中,*array其实就是number[0],即为取首地址 number[0] 的值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-8 22:49:43 | 显示全部楼层
第一个问题:
value(int array[],int n)这个里面的n是形参,
实际调用的时候
max_min_value(number, 10);
你看,10 已经定义了
第二个问题:

for( p=array+1; p < array_end; p++)
这个循环p=arry+1,这个p的值循环后也还是1啊
亲,数组的第一个数是从0开始的,那么1相当于第二个数了
在看代码:
max = min = *array;
其实max和min都被数组的第一个数 赋值了,那么接下来要做的就是开始用第一个数组与后面的数进行逐一的对比



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 21:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表