为什么我的输出为0?您能找到错误吗?

时间:2019-06-08 06:42:25

标签: c arrays

问题在于输入6个不同三角形图的两侧和夹角。我们需要找到每个图的面积。

我使用2-D和1-D数组编写此代码,并将2-D数组传递给void函数,该函数打印每个图的面积。这些是我得到的输入及其各自的输出。我正在使用Ubuntu 18.04 LTS Terminal。

程序运行

输入:

1
137.4
80.9
0.78
2
155.2  
92.62
0.89
3
149.3
97.93
1.35
4
160.0
100.25
9.00
5
155.6
68.95
1.25
6
149.7
120.0
1.75

输出:

Entered Data is:
1.000000 137.399994 80.900002 0.780000 
2.000000 155.199997 92.620003 0.890000 
3.000000 149.300003 97.930000 1.350000 
4.000000 160.000000 100.250000 9.000000 
5.000000 155.600006 68.949997 1.250000 
6.000000 149.699997 120.000000 1.750000 

Area of plot 1 is: 0.000000.
Area of plot 2 is: 0.000000.
Area of plot 3 is: 0.000000.
Area of plot 4 is: 0.000000.
Area of plot 5 is: 0.000000.
Area of plot 6 is: 0.000000.

程序:

#include <stdio.h>
#include <math.h>
void area(float p[6][4],int m,int n);
int main()
{
    float a[6][4];
    int i,j;
    printf("Enter the plot no.,two sides and included angle.\n");
        for(i=0;i<6;i++)
        {
        for(j=0;j<4;j++)
        {   
            scanf("%f",&a[i][j]);
        }
    }
    printf("Entered Data is:\n");
    for(i=0;i<6;i++)
    {
        for(j=0;j<4;j++)
        {
            printf("%f ",a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    area(a,6,4);
    return 0;    
}

void area(float p[6][4],int m,int n)
{

    float ar[6];
    int i;
    for(i=0;i<6;i++)
    {
        ar[i] = (1/2)*(p[i][1])*(p[i][2])*sin(p[i][3]);
        printf("Area of plot %d is: %f.\n",i+1,ar[i]);
    }
}

2 个答案:

答案 0 :(得分:3)

在此表达式中:

str(12)

>>'12'

ar[i] = (1/2)*(p[i][1])*(p[i][2])*sin(p[i][3]); 的计算结果为零,这意味着整个结果为零(因为零乘以零就等于零)。之所以为零,是因为它是整数除法,它给出了一个被截断的整数作为结果。请改用(1/2)

答案 1 :(得分:0)

(1.0/2.0) * (p[i][1]) * (p[i][2]) * sin(p[i][3]);