haiouda 发表于 2015-2-2 21:52:02

程序中zz的值,和a[2]的值?

本帖最后由 haiouda 于 2015-2-2 22:07 编辑

程序中zz的值,为什么在赋值前(zz=a)!!! 就等于a的值了?

a的值?在 i=0;if 中没用到a,为什么a的值直接等于zz的值了??

求解,欢迎各位回复。

506076894 发表于 2015-2-2 21:52:03

你做的是排序的话,数组个数a应该是a,否则越界。
排序需要两个循环,if一次只能对比前两个数,这是逻辑错误。
      int i;
        int zz = 0,a;//3个数
        for (i=0;i<3;i++)
        {
                scanf_s("%d",&a);
        }
      for (i = 0;i < 3;i++)
      {
            for (int j = 0;j < 2 - i;j++)//控制内层循环次数
            {
                if (a > a)       //从小到大,换成<就是从大到小
                {
                  zz   = a;
                  a   = a;
                  a = zz;
                }
            }
      }
        printf("%d--%d--%d\n",a,a,a);

haiouda 发表于 2015-2-2 22:17:51

本帖最后由 haiouda 于 2015-2-2 22:20 编辑

#include <stdio.h>

int main()
{
      int i,zz,a;


      for (i=0;i<3;i++)
      {
      scanf ("%d",&a);

      }


      
    i = 0 ;

                if(a>a)
                {
                        zz=a;
                        a=a;
                        a=zz;
                        
                }

      printf("%d--%d--%d\n",a,a,a);
}

                               
      
假设输入为:50 40 30;
错在哪里了,求解???



曾经的肆无忌惮 发表于 2015-2-2 22:35:25

你是要写排序是吧?在if语句外层没有嵌套for语句,所以实际上的if语句是在判断a和a

aswyamato1989 发表于 2015-2-3 08:35:47

楼主,你的程序的功能,是输入三个数,然后将这三个数按照从小到大的顺序排列,但是,你定义的数组a长度为2,但是在接下来的赋值过程中,你把数组的长度给定成了3,即for (i = 0; i < 3; i++)那句,这样,原本在a+2所指示的位置的变量就会被赋值成9,你检查一下a和zz这两个变量的地址。

haiouda 发表于 2015-2-3 09:58:18

多谢各位热心 {:5_110:}

头一次用数组:sweat:,闹出笑话来了
页: [1]
查看完整版本: 程序中zz的值,和a[2]的值?