烈大大 2022-03-21 22:30 采纳率: 100%
浏览 693
已结题

当前不会命中断点,没有与此行关联的调试程序的目标代码类型的可执行代码。

img


不晓得为嘛右移不行啊,求解。


#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int* countBits(int n)
{
    int arr[] = {0};
    for (int i = 0; i <= n; i++)
    {
        int j = i;
        int val = 0;
        for (;j; )
        {
            if (j & 1)
            {
                val++;
            }
            j >> 1;
        }
        arr[i] = val;
    }
    int* p = arr;
    return p;
}

int main()
{
    int n = 0;
    printf("请输入n的值:");
    scanf("%d", &n);
    int* arr = countBits(n);
    for (int i = 0; i <= n; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}
  • 写回答

1条回答 默认 最新

  • 烈大大 2022-03-22 08:58
    关注

    改成j=j>>1;就可以了,但是函数出了另一个新问题,main中接受到子函数传参时数组arr内值都是对的,循环打印arr,i=0;的时候,arr[0]是对的,当arr[0]输出完后,arr[1]值跳变成其他的值了

    函数功能,给定一个整数 n, 返回一个大小为 n+1 的 result 数组,其中 result[i] 是 i 的二进制表示中位为 1 的个数 (0 <= i <= n)。

    详细过程如下图:
    i=0时:

    img


    i=1时:

    img


    i=2时:

    img

    懵逼了,求大佬扶一下。

    =========================================更新============================================

    由于数组定义在栈上,故在子函数调用完毕后释放了;此时修改为malloc申请的空间,在主函数中接收使用后主动释放;

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月29日
  • 创建了问题 3月21日

悬赏问题

  • ¥15 距离软磁铁一定距离的磁感应强度大小怎么求
  • ¥15 霍尔传感器hmc5883l的xyz轴输出和该点的磁感应强度大小的关系是什么
  • ¥15 vscode开发micropython,import模块出现异常
  • ¥20 Excel数据自动录入表单并提交
  • ¥30 silcavo仿真,30分钟,只需要代码
  • ¥15 FastReport 怎么实现打印后马上关闭打印预览窗口
  • ¥15 利用3支股票数据估计其均值和方差的95%置信区间。
  • ¥15 微信小程序运行一项功能时,弹出未知错误弹框,检查代码没有问题
  • ¥15 ATAC测序生成self-pseudo replicates之前是否要进行去线粒体reads
  • ¥15 python模糊字匹配函数问题