C语言里为什么在循环里面的数组不能做乘除运算

#include "stdio.h"
main()
{float a[3]={2,2,3};
int j;

for(j=0;j<=2;)
{a[j]=a[j]/a[0];printf("%f ",a[j]); j=j+1;}
}
这段代码我是想数组a[3]中的每个元素都除以a[0],并把所得结果仍保存在数组a[3]中,所得结果应该是{1,1,1.5},可为什么运行的结果是{1,2,3},即只有第一个元素改变,其它元素都没有变?为什么??

第1个回答  2008-10-30
呵呵,没有问题,除法运算做了的,由于做第一次循环的时候,把a[0]的值修改为1了,后面的两个值都是做的除1的运算,所以不存在元素的改变了啊。
第2个回答  2008-10-30
因为第一次循环的时候a[0]=a[0]/a[0]=1,所以后面的a[2],a[3]都是做了除以1的运算,所以还是2和3,这样改
#include "stdio.h"
main()
{float a[3]={2,2,3};
int j;

for(j=2;j>=0;) /*j从2开始减1*/
{a[j]=a[j]/a[0];printf("%f ",a[j]); j=j-1;}
}本回答被提问者采纳
第3个回答  2008-10-30
第一次循环后a[0]的值变为1,而不是原来的2,要把a[0]放在一个变量中

修改后的代码如下:

#include "stdio.h"
main()
{float a[3]={2,2,3};
int j;
float tmp = a[0];

for(j=0;j<=2;)
{a[j]=a[j]/tmp;printf("%f ",a[j]); j=j+1;}
}
第4个回答  2008-10-30
运行了哈,知道了!
你的a[0]在运行了第一次后就改为1了,之后的数据你知道怎么得来的了三;
你可以把a[0]改为2,就可以得到你要的结果了!
第5个回答  2020-02-01
#include
int
main()
{
int
f[20]={1,1};
int
i;
for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++)
{
if(i%5==0)printf("\n");
printf("%5d",f[i]);
}
printf("\n");
return
0;
}
1.不是
2.直接或一起都行,本程序是一起输出.3.第1次为2,第2次为3.
相似回答