c

时间:2018-07-27 01:49:28

标签: arrays memory

#include<stdlib.h>
void water(float k,int i,int j, float *a)
{
    int index=0,row,col;
    a[index]=k;
    if(j>i)
    {
        printf("-1\n");
        return;
    }

    for(row=1;row<=i;row++)
    {
            for(col=1;col<=row;col++,index++)
        {
            k=a[index];
            if(k>=1)
            a[index]=1;
            else a[index]=k;
            if(k>=1)
            k=k-1;
            else k=0;
            a[index+row]=a[index+row]+k/2;
            a[index+row+1]=k/2+a[index+row+1];
        }
    }
    printf("%lf\n",a[i*(i-1)/2+j-1]);
}
int main() {
//code
int t,i,j;
float k;
scanf("%d",&t);
while(t--)
{
    scanf("%f",&k);
    scanf("%d",&i);
    scanf("%d",&j);
    double *a;
    a=(double*) (malloc(sizeof(double)*(i*(i+1)/2)));
    for(int p=0;p<(i*(i+1)/2);p++)
    a[p]=0;
    water(k,i,j,a);
    free(a);
}
return 0;

}     在上面的程序中,我最初声明了类型为main的数组a     浮动。但是正在打印的结果不正确。然后我改变了     键入double即可正常工作。但是我无法完全     理解为什么浮动大小不起作用而是双重作用。有人可以吗     帮助我吗?

0 个答案:

没有答案