chenyixin258 发表于 2019-6-6 00:23:31

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

#include <stdio.h>

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

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

void main()
{
      int i, number;

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

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

      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;
            }   
      }
}

chenyixin258 发表于 2019-6-6 00:24:31

第一个问题
value(int array[], int n)
n什么时候定义的。为什么是10

chenyixin258 发表于 2019-6-6 00:29:47

for( p=array+1; p < array_end; p++)
这个循环p=arry+1,这个p的值循环后也还是1啊

Krant5 发表于 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);

HUMMER军 发表于 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循环的第一个条件 只执行一次

啊牛牛 发表于 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传了进去

旋律暗影 发表于 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”。
这个知识点是函数调用中关于实参传值给形参的问题。

旋律暗影 发表于 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的值了,所以只用需要对后面的数进行比较就可以了,即用array的值同array、array、array……等作比较就OK了,这样可以优化计算步骤。
在调用函数中,*array其实就是number,即为取首地址 number 的值。

4goodworld 发表于 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都被数组的第一个数 赋值了,那么接下来要做的就是开始用第一个数组与后面的数进行逐一的对比



页: [1]
查看完整版本: 输入10个,输出最大和最小值。有不明的的地方