当前位置: 首页 > 知识库问答 >
问题:

当x不是int时,如何计算x的模y?

贡光明
2023-03-14

如何评估像3/2%2这样的东西?

在解决以下问题时卡住了:

What value does mystery(12) return?
  public int mystery(int x)
  {
       int n = 0;
       for (int k = x; k > 0; k = k / 2)
           if (k % 2 != 0) n++;
       return n;
}

我的工作:

第一次执行
int k=12/2,k=6
6%2返回0,所以6%2!=0的计算结果为false,n=0

第二次执行
k=6/2,k=3
3%2返回1,因此3%2!=0的计算结果为真,n=1

第三次执行
k=3/2,k=1.5
1.5%2。。。不确定如何评估并继续?

谢谢

共有2个答案

陆宇航
2023-03-14

因为k是一个整数,所以它将被舍入为1。因此,第三次执行将返回1%2=1

最终答案是2

葛桐
2023-03-14
  • k是int类型,而k=k/2表达式是整数除法,因此3/2=1,而不是1.5
  • 第一次执行中k的值是12,而不是6,因为k=k/2发生在循环体之后
  • 因此,k获取值12,6,3,1,0,其中循环体执行四次,其中只有3和1是奇数,因此n=2
  • 你为什么不自己试试呢
  • 如果将值声明为double,则%运算符将用于double-1.5%21.5
 类似资料:
  • 描述 (Description) C库函数int abs(int x)返回int abs(int x)的绝对值。 声明 (Declaration) 以下是abs()函数的声明。 int abs(int x) 参数 (Parameters) x - 这是整数值。 返回值 (Return Value) 此函数返回x的绝对值。 例子 (Example) 以下示例显示了abs()函数的用法。 #incl

  • 我刚来爪哇。刚刚发现在表达式中,,y假设x的值,x变成+1。如果我听起来很蠢,请原谅,但根据优先顺序,赋值运算符在末尾。所以x++不是应该先发生,然后是赋值吗。提前道谢。

  • 问题内容: Robot类中的方法到底如何工作?我尝试了以下代码片段: 在我的PC上,它是2核的双核处理器,花了一秒钟或更短的时间执行了print语句。但是,当我在核心i3笔记本电脑上运行相同的代码时,它花费了更多时间(大约2-3秒)。 这是什么原因呢?它与屏幕质量或诸如此类有关吗?我怎么解决这个问题? 问题答案: 我怎么解决这个问题? 请勿使用漫游器逐像素获取颜色。使用机械手创建屏幕的Buffer

  • 第 11 章 计算+X 当代科学研究有三大支柱:理论、实验和计算。计算机技术的发展,为利用计算手段来 解决科学和工程问题提供了强大的支持。越来越多的领域(包括自然科学和社会科学领域) 利用计算来解决问题,将解决问题的方法从过去的定性分析发展成如今的定量计算。科学领 域与计算的结合促成了多种交叉学科的形成,如计算数学、计算物理学、计算化学、计算生 物学、计算材料学、计算经济学、计算语言学、计算考古学

  • 我正在用C语言编程一个微控制器,它有一个内部RTC,并自动增加一个日计数器(0-65536)。因此,考虑到用户调整的初始日期(DD/MM/YYYY),我需要根据该计数器更新日历。也就是说,我需要知道如何计算x天后的日期。有人知道算法吗?在网上找不到任何东西。 提前谢谢。丹尼尔

  • 描述 (Description) C库函数long int labs(long int x)返回long int labs(long int x)的绝对值。 声明 (Declaration) 以下是labs()函数的声明。 long int labs(long int x) 参数 (Parameters) x - 这是整数值。 返回值 (Return Value) 此函数返回x的绝对值。 例子