这个是我改正之后的代码,出问题的地方我都写到注释里面了
int main()
{
double ar_d1[8]={0},ar_d2[8] = {0},temp = 0;
int i,j;
printf("please enter the numbers:\n");
for(i = 0; i < 8; i++)
{
printf("Enter ar_d1[%d]:\n",i);
scanf("%lf",&ar_d1[i]); //这个位置应该传入地址
}
for(i = 0; i < 8; i++)
{
//这个时候的temp已经等于前面几个的和了,这样再加前面几个会造成重复加
//可以先将temp清0 或者直接该一下
//for(j = i;j <= 0; j--) //如果要前几项想加,这块j 应该 >= 0
//{
// temp += ar_d1[j];
//}
temp += ar_d1[i];
ar_d2[i] = temp;
}
for(i = 0; i < 8; i++)
printf("%lf ",ar_d1[i]);
printf("\n");
for(i = 0; i < 8; i++)
printf("%lf ",ar_d2[i]);
//进行下次循环之前先清空一下内存
for(i = 0; i < 8; i++)
{
// for(j = i;j <= 0; j--) //还是这个问题应该是 j>=0
for(j = i;j >= 0; j--)
{
ar_d2[i] += ar_d1[j];
}
}
for(i = 0; i < 8; i++)
printf("%lf ",ar_d1[i]);
printf("\n");
for(i = 0; i < 8; i++)
printf("%lf ",ar_d2[i]);
printf("\n");
return 0;
}