huashu21 2023-12-22 11:54 采纳率: 77.8%
浏览 3
已结题

C语言循环嵌套时间问题

若将一个正整数化为二进制数,在此二进制数中,我们将数字1的个数多于数字0的个数的这类二进制数称为A类数,否则就称其为B类数。

例如:

(13)10 = (1101)2,其中1的个数为3,0的个数为1,则称此数为A类数;

(10)10 = (1010)2,其中1的个数为2,0的个数也为2,称此数为B类数;

(24)10 = (11000)2,其中1的个数为2,0的个数为3,则称此数为B类数;

程序要求:求出1~1000之中(包括1与1000),全部A、B两类数的个数。
这是我第一次写的:

img


运行超时

然后第二次写的:

img


为什么这个可以,而第一次写的不行呢?

  • 写回答

2条回答 默认 最新

  • 抑郁的代码男孩 2023-12-22 15:11
    关注

    错误:死循环
    原因:循环内部修改了for循环中用来控制循环次数的变量的值

    int a = 0, b = 0;
    for (int i = 1; i <= 1000; i++) 
    {
        /*
         * 每次循环结束i都为0,则加1一直为1,用于到不了1000,死循环
         */
        int x = 0, y = 0;
        /* 
         * 计数的循环条件是i != 0
         * 则i == 0才退出循环
         */
        while (i != 0) 
        {
            int t;
            t = i % 2;
            i /= 2;
            //....
        }
        /*
         * 到这里i为0
         * 直到循环结束
         */
    } 
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月31日
  • 已采纳回答 12月23日
  • 创建了问题 12月22日

悬赏问题

  • ¥15 from seleniumwire import webdriver 在抓取http://链接的时候会自动转https://这个怎么解决
  • ¥15 hive直连数据库模式插入mysql表数据失败(相关搜索:数据库)
  • ¥30 不会,学习,有偿解答
  • ¥15 SQL查询语句报错(检查)
  • ¥15 此表中公式应该怎么写
  • ¥15 求HI-TECH PICC 9.50 PL3安装包
  • ¥15 下载ctorch报错,求解
  • ¥15 如何入门学习c语言,单片机
  • ¥15 idea 编辑语言的选择
  • ¥15 Windows下部署Asmjit