C语言 如何在结构体上执行除法运算?

w51jfk4q  于 2022-12-03  发布在  其他
关注(0)|答案(2)|浏览(145)

我有一个包含三个数字的结构体:number 1、number 2、number 3。然后,我要对它们执行除法运算:(数字1)/(数字2+数字3)。

typedef struct {
    int number1;
    int number2;
    int number3;
    double ratio;
} table;

我试着这样划分它们:

for(int a = 0; a < 5; a++)
{
     for(int b = 0; b < 3; b++)
     {
     table[a][b].ratio = ((table[a][b].number1)/(table[a][b].number2 + data[a][b].number3));
     }
}

我是否应该使用被除数和除数的重复减法对结构进行除法运算,直到被除数小于除数?或者是否有其他方法?我需要得到双精度值,例如:

table[0][0].number1 = 1;
table[0][0].number2 = 2;
table[0][0].num3 = 3;

然后,

table[0][0].ration = 1/5=0.2
wz3gfoph

wz3gfoph1#

你的代码看起来是对的,只是缺少一个在除法运算之前要加倍的强制转换,类似于:

table[a][b].ratio = ((double)(table[a][b].number1)) /
                    (table[a][b].number2 + data[a][b].number3);

在C语言中,如果其中一个操作数是浮点数,则除法将变为浮点除法。

3pvhb19x

3pvhb19x2#

您需要更改除法,使操作数为浮点数。通常不建议在同一表达式中混合整数和浮点操作数,除非进行显式强制转换。内部for循环体应重写为:

int sum = table[a][b].number2 + data[a][b].number3;
table[a][b].ratio = (double)table[a][b].number1 / (double)sum;

相关问题