问答详情
源自:6-1 练习题目

为什么把max6=num[p]; 去掉,答案就是 何昆?

int p,k,max6;

            string[] name=new string[]{"吴松","钱东宇","伏晨","陈陆","周薇","林日鹏","何昆","关欣"};

            int[] num=new int[]{89,90,98,56,60,91,93,85};

            k=0;

            max6=num[1];

            for(p=1;p<num.Length;p++)

            {

                if(num[p]>max6)

                {

                    //max6=num[p];

                    k=p;

                }

            }

            Console.WriteLine("分数最高的是{0},分数是{1}", name [k],num[k]);


提问者:巴塞罗那之恋 2017-06-16 01:29

个回答

  • 一念征途
    2017-06-17 22:20:47

    你好,首先说下,数组下标是从0开始的,我看到你的代码是把max6=num[1];所以才说了下,一般都是写成max6=num[0],当然也许是手误,不过在工作中,一个手误可能导致了整个程序报错,然后花费半天或者一天的时间来查找错误,这个是很多人掉过的坑。

    再说下,运行结果为什么是何昆。其实,在整个项目中,max6的值 都是固定的,都是下标为1的对应的值,也就是“钱东宇”对应的90,在for循环中,本质是从新往后循环的和90相比较,因为”何昆”对应的93是最后一个比90大的值,所以最后就把“何昆”对应的下标赋值给了k,因此 结果就是 何昆。

    最后说下,如果运行结果和自己所想的不同,但又不知道怎么回事的话,你可以进行 输出显示或者debug调试。输出显示就是把不确定的地方的值输出来,这样根据值判断。在这个项目,就可以在for语句中加上输出语句。

    http://img.mukewang.com/594538dc0001dddd07540394.jpg,这种方法适合小程序,推荐使用debug调试,在需要查看值上语句加断点,再运行,选中语句,右击--》断点--》插入断点 就可以了,也可以按F9添加或者删除断点,按F10是运行下一步。在局部变量中 就可以看到对应的值了。具体的操作可以百度下,很简单很实用,http://img.mukewang.com/59453a6c0001c30008520410.jpg。如果还有不懂得地方,可以继续回复我。如果觉得回答还不错的话,麻烦采纳一下哈!

  • Dreamskindler
    2017-06-17 14:52:54

    max6=num[1];  //这行把max6固定就等于num[1]=90

     if(num[p]>max6)//你这个比较是拿变量num[p]跟常量max6比较。

    max6=num[p];//这句的意思是当num[p]>max6时,会将num[p]的值付给max6。如果没有这一句你就永远跟90对比,只要比90大就会使k的值改变。

    最后多嘴一句,你这个代码有问题:max6=num[1];这句应该是这样max6=num[0];因为数组中取第一个数应该a[0],a[1]是第二个数。不信你可以把第一个成绩改成100.就会发现结果不对