功能计算

Luc*_*uta 3 c

double cost_factor(int num_of_sections, int num_of_students) {
    double cost;
    cost = 35 * num_of_sections / num_of_students;
    printf("Cost = %.2lf\n", cost);
    return cost;

}
Run Code Online (Sandbox Code Playgroud)

无论我为num_of_sections和num_of_students输入什么,我得到的返回值为1.00.如果我输入11(num_of_sections)和364(num_of_students),我得到1.00,但是它应该是1.06.有谁能识别他们的错误?

zel*_*lio 9

你用整数做数学.所以你将得到整数值.

const = 35 * num_of_sections / num_of_students 
Run Code Online (Sandbox Code Playgroud)

会给你一个int,即使cost是一个双,因为所有组件都是ints.

您将需要对值进行类型转换以获得double输出

cont = 35.0 * (double)num_of_sections /  (double)num_of_students;
Run Code Online (Sandbox Code Playgroud)

请注意,过度杀戮,足以将等值中的一个值提升为双倍.

cont = 35.0 * num_of_sections / num_of_students;
Run Code Online (Sandbox Code Playgroud)

然后,C会自动为您推广其他值.