C语言 求表达式的值

x+a%3*(int)(x+y)%2/4 设x=2.5 ,a=7,y=4.7
怎么用C语言编程 求出最后的值啊

第1个回答  2008-08-01
x+a%3*(int)(x+y)%2/4 设x=2.5 ,a=7,y=4.7
其实这道题是考察各种运算符的优先级的,好象是谭浩强的那本书上的习题,你可以不用编程,直接动脑算,算完后上机验证一下
1.注意这个式子中有一个强制类型转换(int)(x+y),可得其值为7;
2.乘、除、求模运算优先于加减,按照自左至右的结合方式,那么原式
为x+7%3*7%2/4,7%3得1,1乘以7,得7,再7%2,得1,1/4得0.25
然后x+0.25,最后得2.75
第2个回答  2008-08-01
float x=2.5,y=4.7;
int a=7;
printf("%.2f",x+a%3*(int)(x+y)%2/4);

运行结果是2.50
解释如下:
a%3------1####整型
(int)(x+y)-----7####整型
a%3*(int)(x+y)----7####整型
a%3*(int)(x+y)%2-----1-----####整型
a%3*(int)(x+y)%2/4-------0####整型
####注意这里因为被除数1和除数4是整数,所以会自动进行类型转,因此是0,而不是0.25
####所以最后的结果是2.50,而不是2.75

你可以试着运行下面的程序:
float x=2.5;
int a=1;
printf("%.2f",x+a/4);
printf("%.2f",x+1/4);
/*printf("%.2f",1/4);*/####这里就会得不到结果

####类型转换是非常重要的,但也特别容易忽略...本回答被提问者采纳
第3个回答  2008-08-01
#include <stdio.h>
int main()
{float x=2.5,y=4.7,answer;
int a=7;
printf("Answer is %f",x+a%3*(int)(x+y)%2/4);
return 0;
}

楼上的程序中错误地把a定义成float型了,float型数组是不能做%操作的
第4个回答  2008-08-01
#include <stdio>
int main()
{float x=2.5,y=4.7,a=7,answer;
answer=x+a%3*(int)(x+y)%2/4;
printf("Answer is %f",answer);
getchar();
return o;
}
相似回答