c语言有道题不明白,为什么结果得5.5,麻烦讲解一下

若有定义:int b=7;float a=2.5,c=4.7;则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为_____

先来看b/3*(int)(a+c)/2这一部分。
b是int型,b/3=2;
a,c都是float型,a+c=7.2;
(int)(a+c)为7,所以为2*7/2,故为7。
所以原式等于a+7%4=2.5+3=5.5。追问

谢谢您,我明白了

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-27
a+(int)(b/3*(int)(a+c)/2)%4
先计算 b/3 = 2
然后 (int)(a+c) = 7
然后 2 * 7 / 2 = 7
然后 7 %4 = 3
最后 a + 3 = 5.5追问

明白了,谢谢您

第2个回答  2013-01-27
c语言中不同类型变量运算程序会首先统一变量类型再计算,一般简单类型向复杂类型转换,如float和int类型会统一为float类型再运算,float和double类型会统一为double类型再运算。
先从里面开始,b/3=7/3=2(整型变量相除商也为整型,只取整数部分),a+c=7.2,前面有强制转换符(int),7.2本是float类型,转换为int变为7(不是四舍五入,是直接舍弃小数部分),2*7=14,14/2=7,7强制转换为int还是int类型7,7%4=3(%取模符号,也即7/4=1余3,取余数3),a+3=2.5+3,3转换为float即3.0,2.5+3.0=5.5,所以最后结果5.5本回答被提问者采纳

c语言有道题不明白,为什么结果得5.5,麻烦讲解一下
(int)(a+c)为7,所以为2*7\/2,故为7。所以原式等于a+7%4=2.5+3=5.5。

c语言有道题不懂!!!帮帮忙!!
B选项:t=a就是t得到a的值就是t=1,a=b就是把b赋值给a 就是a=2,b=t=a=1(第一条语句中t=a);B选项是常规的交换方法,楼主应该懂的 C选项:a=t 把t赋值给a,t=b 把b赋值给t此时t=2,b=a=t=2,C选项很显然是不能进行交换的一组 D选项:t=b=2,b=a=1,a=t=2,数据进行了...

今天早上看c语言的书有道题是这样的本人有点不明白,拿出了来希望大家帮...
1、char为8位,289的二进制是:100100001。多于8位了,所以:char c1 = 289; 就使c1取289的低8位,即:100001(二进制)=33(十进制)。printf("%c,%c\\n",c1,c2); 此时c1==33,查ASCII码表得33表示"!"c2=322与以上同样道理 2、int c1 = 289时 printf("%c,%c\\n",c1,c2); %c为...

各位c语言高手 帮帮忙 有道题小弟我不会,谢谢!给发到我的QQ邮箱790085117...
include "stdio.h"include <stdlib.h> include void main(){ int a[11];int i,sum=0,j,temp;srand(time(NULL));for(i=0;i<10;i++){ while(1){ a[i]=rand()%50;temp=0;for( j=0;j<i;j++){ if(a[i]==a[j])temp=1;} if(temp!=1) break;} printf("%d\\n",a[...

有道C语言-指针的计算题麻烦达人帮解下!!
strlen计算从当前字符到第一个'\\n'的字符数,不包括\\n,所以,strlen(p)==6。而strlen(p+i)就要等于6-i了

c语言有道题让输出百位以上数字,那我想知道包不包括百位的数字呢。懂...
不包括吧 如果包括百位一般会在后面说明 含百位 否则以上的意思 就不包括了

前几天进了正听学院,看了些题,有道题让我觉得费解。。。
上次看到同学买的2级真题上有这道题,帮你找了一下 答案:A 1、C语言中的实型常量只有十进制一种数制,故B错。2、C语言中整数只有十进制、八进制、十六进制三种没有二进制数制,故C错。3、八进制数以0打头,故D错

有道C语言-指针的计算题麻烦达人帮解下!!
1.strlen函数是用来测试字符串的实际长度的,所以不包括结束标记符的 2.p还是p+1决定了测试的字符串的起始字符,就是从哪个字符开始测试,所以strlen(p)的值为6,strlen(p+1)的值为5

有道c语言的题目,关于全局变量的,请详解。
b=6+11=17,i=1,没有输出。第一次调用func(6),a的值保留上次的值,在main()函数内部的b是局部变量,其值为6,在func函数内部的b是形参,c,i因为是全局变量,也全是上次结束时的值:a=10+6=16,c=11+16=27, b=6+27=33,i=2,输出:a=16,b=33,c=27 楼主说的运行答案不对:

有一道谭浩强的例题我不懂它是什么意思,望高手详细讲解下那个过程...
对于第2点,可以勉强用一堆强制类型转换搞定 但是因为第1点,即使转为了float或doublefloat,结果也是不够精确的 因为在每次计算1\/deno时,误差都在累积 综上,楼主的算法在对计算结果有较高要求时,不适合用C语言来实现 若一定要用C来计算一个较为精确的结果,我们就得用C中的精确类型来计算——int...

相似回答
大家正在搜