You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将计算结果0.5转为1而非0?C程序圈复杂度需为1不能用if else

解决方法

你可以利用整数运算的向上取整技巧,不需要任何条件判断语句,直接修改计算表达式即可。原来的(U*V)/2是向下取整的整数除法,现在要把奇数乘积的情况(也就是结果为0.5的场景)向上取整为1,只需要把表达式改成(U*V + 1)/2。

修改后的代码如下:

#include <stdio.h>
int main()
{ 
    int U,V;
    scanf("%d %d",&U,&V);
    printf("%d",(U*V + 1)/2);
}

原理说明

  • 当U*V是偶数时,U*V +1是奇数,整数除法(偶数+1)/2的结果和偶数/2完全一致,比如4+1=5,5/2=2,和4/2=2相同。
  • 当U*V是奇数时,U*V +1变成偶数,整数除法的结果就是原除法结果加1,比如1+1=2,2/2=1,刚好把原来的0.5对应的整数结果0转换成1。

这样既满足了圈复杂度为1的要求(没有任何分支判断),也实现了你的需求。

内容的提问来源于stack exchange,提问作者Atomhype

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:58:22