151_13

来源:互联网 发布:上海哥瑞利软件 编辑:程序博客网 时间:2024/06/04 08:45

//创建两个8元素的double数组,使用一个循环来让用户键入第一个数组的8个元素的值。

//程序把第二个数组的元素设置为第一个数组元素的累积和。

//使用一个循环来显示两个数组中的内容。

 

 

#include <stdio.h>

#define SIZE 8

 

int main (void)

{

       int i;

       double arr1[SIZE];

       double arr2[SIZE];

      

       //完成第一个数组的输入

       for (i=0;i<SIZE;i++)

       {

              printf("please enter a number:");

              scanf("%lf",&arr1[i]);

       }

 

    //完成第二个数组的元素设置

       arr2[0]=arr1[0];

       for (i=1;i<SIZE;i++)

              arr2[i]=arr2[i-1]+arr1[i];

 

       //输出第一个数组的内容

       for (i=0;i<SIZE;i++)

       {

              printf("%8.2lf",arr1[i]);

       }

       printf("/n");

 

       //输出第二个数组的内容

       for (i=0;i<SIZE;i++)

       {

              printf("%8.2f",arr2[i]);

       }

       printf("/n");

 

       return 0;

}

 

对于该程序,有两个问题:(一个已解决,一个未解决)

1、关于double数据类型的说明符:是%lf而不是%f(我以前一直都以为是后者)。Scanf()是根据语句中给出的转义字符来对输入的内容进行转换的。用%f,已经把它说成是float型的,而却把输入的数据放到double类型里。它们的字节长度是不一样的,就会出现剩余字节没有数了,所以造成程序运行结果相当紊乱。而在输出时仍然可以写%f(在不影响精度的情况下),因为输出时会把double截断成float型,所以最好还是使用%lf

2、关于题目中要求用一个循环输出两个数组的内容。我想了很久,不知道怎么弄。难道是题目理解错了?