做了一道题目,但是会出错.不知道应该怎么改,# include int main (){\x05int a[1],b[1],i,j;int max;\x05 scanf("%d,%d",&i,&j);\x05max=a[1];\x05if(max>b[1]) max=a[1];\x05printf("Max =%d",a[1]);\x05else \x05\x05if(max==b[1]) max=a[1];max=b[

来源:学生作业学帮网 编辑:学帮网 时间:2024/05/07 17:36:09

做了一道题目,但是会出错.不知道应该怎么改,
# include
int main ()
{
\x05int a[1],b[1],i,j;
int max;
\x05 scanf("%d,%d",&i,&j);
\x05max=a[1];
\x05if(max>b[1]) max=a[1];
\x05printf("Max =%d",a[1]);
\x05else
\x05\x05if(max==b[1]) max=a[1];max=b[1];
\x05printf("Max=%d=%d",a[1],b[1]);
\x05else max=b[1];
\x05printf("%d",b[1]);
\x05printf("\n");
\x05return 0;
}

你没弄懂数组,你定义的a[1],中间的1在定义时是数组的长度.而在使用时,数组是在0开的计数的,比如你定义的int a[1]说明长度是1.数组时从零开始计数的而不是从1开始,所以数组a[]里面的元素只有a[0],二不是a[1],如果定义的int a[2],那a[]里面的元素就是a[0],a[1];
下面你的主函数中
a[1],b[1]中的元素只有a[0]和b[0],而没有a[1]和b[1],所以你在赋值时a[1],b[1]中的都是随机数,结果当然不对.一般我觉得是编译不过的哈.不是else 和if位置的问题,而是你把if 和else 用混了.你看你第一个if和最近的else 匹配 ,而且一个判断语句如果执行语句超过一句就要用{}括起来,不然计算机只会执行一句.把所有的a[1],b[1],改成a[0]
b[0].再说说你是想求两数的最大值吧.其实不用这么多的.你看你输入的是i和j,用的却是a[]和b[]数组,可是你却没有给这个数组赋值,没赋值怎么比较大小.而且你也不需要用两个数组,定义一个a[2]就好了,一个赋值给a[0],一个赋值给a[2].可以不定义数组都是可以实现的,这些都是程序简洁性的问题,多编编程就好了.关键是概念性的东西不能错.我帮你稍微改下,你参考参考.简洁性的问题要靠自己多编程的.
# include
int main ()
{
\x05int a[1],b[1],i,j;
int max;
\x05scanf("%d,%d",&i,&j);
a[0]=i;
b[0]=j;
\x05max=a[0];
\x05if(max>=b[0])
{
\x05 printf("Max =%d",a[0]);
}
\x05else
{
max=b[0];
\x05 printf("Max=%d“,b[0]);
}
\x05printf("\n");
\x05return 0;
}

a,b是数组,长度只有1;因此里面的元素只有a[0],b[0];不存在a[1],b[1]
且使用a,b数组之前没有初始化,对其赋值。那他系统为什么只说了 else 没有匹配 if 啊那就是无法编译咯。 if(max>b[1]) max=a[1]; ----- if 到此结束; printf("Max =%d",a[1]); else --- 这个else 没有对应的if ...

全部展开

a,b是数组,长度只有1;因此里面的元素只有a[0],b[0];不存在a[1],b[1]
且使用a,b数组之前没有初始化,对其赋值。

收起