поскольку в этом выражении
t = (1/100) * d;
1 и 100 - целочисленные значения, целочисленное деление усекает, так что это То же самое, что и это
t = (0) * d;
вам нужно сделать это константой с плавающей точкой, как это
t = (1.0/100.0) * d;
вы также можете захотеть сделать то же самое с этим
k = n / 3.0;
Я думаю, это из-за
t = (1/100) * d;
1/100, поскольку целочисленное деление = 0
, тогда 0 * d всегда равно 0
, если вы это сделаете 1.0 / 100.0 Думаю, он будет работать правильно
Вы используете целочисленное деление, а 1/100 всегда округляется до нуля при целочисленном делении.
Если вы хотите выполнить деление с плавающей точкой и просто усечь результат, вы можете убедиться, что вместо этого используете литералы с плавающим указателем, и d будет неявно преобразовано для вас:
t = (int)((1.0 / 100.0) * d);