【发布时间】:2021-03-31 05:36:02
【问题描述】:
如果有人能帮助我解决这个问题,我将不胜感激。
C 程序包含以下声明和初始赋值。
int i = 8, j = 5;
float x = 0.005, y = - 0.01;
char c = 'c', d = 'd';
使用分配给表达式变量的值确定以下表达式的值:
(i - 3 * j) % ( c + 2 *d)/ (x - y )
我先手动尝试了这个:
( i- 3 * j) % ( c + 2 *d ) / ( x - y)
( 8 - 3*5) % ( 99 + 2 * 100 ) / ( 0.005 - (-0.01) )
( -7 ) % ( 299 ) / ( 0.015 )
牢记优先级和关联性,我首先使用了 mod 运算符:
( 292 ) / ( 0.015 )
答案是 19466.66。
这与书中给出的答案不匹配,或者当我在代码块中使用它时,两者都给出了答案 - 466.6667
codeblocks程序如下
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i = 8,j = 5, c = 'c',d = 'd';
float x = 0.005, y = -0.01, a = 0.0; // a is the float variable to which the value is assigned
a = (i-3*j)%(c+2*d)/(x-y);
printf("%f\n",a);
return 0;
}
【问题讨论】:
-
尽量不要在代码中使用行号。如果我们想运行并测试它,我们只需要删除它,很繁琐。
-
这是一个使用书中给出的运算符和ASCII值的练习。感谢您的编辑。
-
你有一个算术错误:
0.005 - 0.01 == -0.005,而不是-0.015。 -
您的代码也有
y = -0.01,但问题有y = 0.01;它应该是什么?最后(-7) % 299不是292而是-7。 -
在代码中
y = -0.01不是正数0.01。
标签: c operator-keyword modulo