haiouda 发表于 2015-2-12 00:44:26

考题

本帖最后由 haiouda 于 2015-2-12 01:28 编辑

一、执行后,y 的值为什么是 3,最好能详细点说下,谢谢
double x = 35;
int y;
y = (int)( x / 4) % 5;





二、这里的 011 为什么代表八进制???

#include <stdio.h>
main()
{
      int a = 011;
      printf("%d", a ++);
}


1170802693 发表于 2015-2-12 00:44:27

一、(int)(x/4)表示类型的强制转换;因为在本题中x的类型为double型,所以x/4的值为8.75;所以(int)(x/4)=8;   (int)(x/4)%5<=>8%5;所以y的值3。
二、在c语言中八进制必须在前面加0。

梦醒尸还魂↘___ 发表于 2015-2-12 11:44:42

第一   35 / 4 (35除4 取值 ) = 8 余 3( 取值,    忽略余数 )
         8 % 5 ( 8除5取余)   = 1 余3( 取余数,忽略 值)   所以答案为3
第二   在平时的书写的时候,八进制前面加0表示这个数是八进制
            011,,前面0 是八进制的意思,,,,在二级C语言考试中常出现这种无语的题目

mhhnjuol 发表于 2015-2-12 19:39:22

第一题,分解步骤
x / 4 = 8.75
(int)(x / 4) = 8
于是y = 8 % 5 = 3
第二题
c语言中0开头的常数都被认为是八进制,谢谢采纳{:1_1:}

haiouda 发表于 2015-2-12 19:43:40

谢谢各位的热心,真 的很想,都给你们鱼币,
可系统不让:sweat:
页: [1]
查看完整版本: 考题