已采纳回答 / menghuanbaolei
有时候 :1 = true , 0 = false<...图片...>a = 11 ; 所以 a > 3 那么,返回true ,可这里是运算,所以 a =1 <...图片...>当 a < 3 的时候,返回false,那么 a = 0
2015-10-17
已采纳回答 / onemoo
第三个 else if 中判断表达式你写的是 5000>score>=1000,这无法完成区间判断的功能,此表达式永远为 false。你可以查看一下运算符的优先级,> 和 >= 优先级相同,且左结合,故C语言是这样解释这个表达式的:(5000 > score) >= 1000也就是会先算 5000 > score,结果肯定是true。于是表达式后面的部分就变成了true与1000做比较。为了能和1000这个整型做比较,true也会被转换为整型,这样true就被转换...
2015-10-17
已采纳回答 / 世界和平ad
if(year%4==0&&year%100!=0||year%400==0); //这一行错了...应该改成:if((year%4 == 0 && year%100 != 0) || year%400 == 0);注意if判断平年的条件( (能被4整除同时不被100整除的数) 或者 能被400整除的数)
2015-10-17
已采纳回答 / qq_忙碌_不可奈何_0
for(i=0;i<10;i++) { if(i != 9) printf("%.2f, ", arr[i]); //%.2f表示小数点后精确到两位 else printf("%.2f", arr[i]); //%.2f表示小数点后精确到两位 }如果是前0-8位数后面要加逗号,第9位后面没有逗号,所以单独一句。
2015-10-16
已采纳回答 / onemoo
这个代码中有很多不正确或不规范的地方。你在定义s1数组时指定了数组大小为4,但却用一个超过4个元素的列表去初始化它。在编译时会有警告的。单引号用来表示单个字符,应该括起单个字符。 不过C也确实允许括起多个字符,这特性叫multi-character,然而C标准对多个字符在内存中如何存储没有规定。gcc在小端机器上好象是把最后一个字符放到低地址位上,这样一来用 'ab' 给数组元素初始化时,数组中的元素得到的是 'b' 这个字符。所以数组得到的前4个字符为 b c e f,后面有留空,这空白在printf中...
2015-10-15
讲师回答 / PengCheng
内存中存放的数都是补码。查查补码的定义吧。这里拿32位来看在32位的系统,int类型最大值正数为2147483647 换算为 补码就是 0111,1111,1111,1111这时如果再加1 那二进制就是 1000,0000,0000,0000,第一位是符号位 1代表负数,也就是加1后溢出的结果 -2147483648。如果不断的再加1 总会变成正数,然后就能满足那几个逻辑判断的任意一个条件了。你在最后面加9 实际上就是每次在前面增加了 9*10n2 9乘以10 的N次方,碰巧就符合你说的钻石、普通...
2015-10-15