Tomato_abc 2023-05-01 18:56 采纳率: 50%
浏览 23

关于求解c语言超范围整数的二进制数中0的个数的问题#

img

求解c语言超范围整数的二进制数中0的个数的问题

#include<stdio.h>
#include<string.h>
int main(void){
    int t,x,i,count=0;
    scanf("%d",&t);
    for(i=0;i<t;i++){
        scanf("%d",&x);
        while(x){
            if(!(x%2))
              count++;
            x/=2;
        }
        printf("%d\n",count);
    }
    return 0;
}

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-05-01 19:30
    关注

    你的整数范围最大到10^18,所以不能用int,会溢出
    改成 long long吧,scanf对应是 %lld

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月1日

悬赏问题

  • ¥15 Groimp使用疑问
  • ¥15 c++ 主窗口里面的菜单如何脱离主窗口
  • ¥15 MDK–ARM里一直找不到调试器
  • ¥15 oracle中sql查询问题
  • ¥15 vue使用gojs3.0版本,在nodeDataArray中的iconSrc使用gif本地路径,展示出来后动画是静态的,不是动态的
  • ¥100 代写个MATLAB代码,有偿
  • ¥15 ansys electronics 2021 R1安装报错,错误代码2,如图
  • ¥15 Dev-c++打字不出现中文,但出现日文
  • ¥30 搭建面包板由NE555N和SN74LS90N组成的计时电路时出了问题
  • ¥15 无源定位系统的时差估计误差标准差