程序中zz的值,和a[2]的值?
本帖最后由 haiouda 于 2015-2-2 22:07 编辑程序中zz的值,为什么在赋值前(zz=a)!!! 就等于a的值了?
a的值?在 i=0;if 中没用到a,为什么a的值直接等于zz的值了??
求解,欢迎各位回复。
你做的是排序的话,数组个数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: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;
错在哪里了,求解???
你是要写排序是吧?在if语句外层没有嵌套for语句,所以实际上的if语句是在判断a和a 楼主,你的程序的功能,是输入三个数,然后将这三个数按照从小到大的顺序排列,但是,你定义的数组a长度为2,但是在接下来的赋值过程中,你把数组的长度给定成了3,即for (i = 0; i < 3; i++)那句,这样,原本在a+2所指示的位置的变量就会被赋值成9,你检查一下a和zz这两个变量的地址。 多谢各位热心 {:5_110:}
头一次用数组:sweat:,闹出笑话来了
页:
[1]