题目是输入一个8位double数字的数组a[8],要求输出一个数组,满足b[0]=a[0],b[1]=a[0]+a[2],...b[7]=a[0]+a[1]+...a[7]。初始代码如下:
#include <stdio.h>
int main(void)
{
double a[20],b[20];
int i,j;
printf("请输入8个数字\n");
for(i=0;i<8;i++)
{
scanf("%lf",&a[i]);
}
for(i=0;i<8;i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(i=1,b[0]=a[0],printf("%d ",b[0]);i<8;i++)
{
b[i]=b[i-1]+a[i];
printf("%d ",b[i]);
}
return 0;
}
程序中printf输出类型选择为了%d,但数组中元素类型为double,应该用%lf,故程序出错。更正后代码如下:
#include <stdio.h>
int main(void)
{
double a[20],b[20];
int i,j;
printf("请输入8个数字\n");
for(i=0;i<8;i++)
{
scanf("%lf",&a[i]);
}
for(i=0;i<8;i++)
{
printf("%12lf ",a[i]);
}
printf("\n");
for(i=1,b[0]=a[0],printf("%12lf ",b[0]);i<8;i++)
{
b[i]=b[i-1]+a[i];
printf("%12lf ",b[i]);
}
return 0;
}
编译后可正确运行结果。