A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐传任 中级黑马   /  2012-9-23 21:34  /  1720 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        static void Main(string[] args)
        {
            int[] nums = { 2,3,4,1,6,5};
            int sum, max, min;
            sum = Compute(nums, out max, out min);
            Console.WriteLine("数组的和为:{0}  最大值为:{1}  最小值为:{2}",sum,max,min);
            Console.ReadKey();
        }

        //写一个方法,返回和,最大值,最小值
        public static int Compute(int[] numbers,out int max,out int min)
        {
            int sum = 0;
            max=0;
            min=0;
            for (int i = 0; i < numbers.Length; i++)
            {
            sum+=numbers;
            if (numbers > max)
            {
            max=numbers;
            }
            if (numbers < min)
            {
            min=numbers;
            }

            }
            return sum;
        }

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

4 个回复

倒序浏览
你的方法中定义
max=0;
min=0;
拿它们和数组中的数字做比较,但是数组中没有比0小的数,最后当然min还是等于0了。
初始化max和min时可以把它们都定义为numbers[0]

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
你看看这个 修改一下。看还有没有错

未命名.jpg (35.67 KB, 下载次数: 42)

未命名.jpg

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
要善用VS的调试,一步一步的跳,就知道问题出在哪了

在这个算法中,max和min的初值应该赋为数组中的第一个数,我想你的本意也是这样的,比较出这个数组中的最大和最小值,和0根本就没有关系。

改成这样
  1. max = numbers[0];
  2. min = numbers[0];
复制代码
这样第一次比较的时候max和min都是数组中的第一个值,所以可以从第二个开始比较,把 i 改成 1,这样就从下标为1的元素开始比较
  1. for (int i = 1; i < numbers.Length; i++)
复制代码
最后就能正常输出 numbers 数组中最大和最小值

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
刘欢(安阳) 来自手机 中级黑马 2012-9-25 17:31:36
报纸
呵呵,因为你的数组里没有比0小的元素了,如果数组中的元素都是负数,你的程序也输不出最大值而是输出0。      我建议把数组里第一个元素赋值给max和min,可以再试试

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马