PJLssd 2022-01-11 20:52 采纳率: 50%
浏览 32
已结题

C++程序爆掉了,不知道原因

我写了一个简单的程序,要实现以下效果:
随机生成一个地形
然后我的程序就成这个样子了:

img

根据我的经验,我认为这是内存调用错误
可是我检查了一遍,好像数组的引用都没有超出设置的值啊
不知道各位能不能给我这个初学者解决一下问题呢
语言:C++
代码放上:

#include <cstdio>
#include <stdlib.h>
const char block=3;
char map[1024][64];
char screen[64][16];
int change[16]={-3,-2,-2,-1,-1,-1,0,0,0,0,1,1,1,2,2,3};
void init(){
    int l,a;
    l=rand();
    l=l%65;
    for(int i=l;i>=0;i++) map[0][i]=block;
    for(int i=0;i<1024;i++){
        a=rand();
        a=a%16;
        a=change[a];
        l=l+a;
        for(int j=l;j>=0;j--) map[i][j]=block;
    }
    for(int i=0;i<64;i++){
        for(int j=0;j<16;j++) screen[i][j]=map[i][j];
    }
    return;
}
void show(){
    for(int i=0;i<64;i++){
        for(int j=0;j<16;j++) putchar(screen[i][j]);
    }
    return;
}
int main(){
    init();
    show();
    return 0;
}

  • 写回答

3条回答 默认 最新

  • 关注

    char map[1024][64];长度是64
    l=l%65; 怎么是65, 应该改成 l=l%64;

    for(int i=l;i>=0;i--) map[0][i]=block; 倒序循环要i-- 不是i++

    你要输出什么效果,你screen数组中的字符值都是block
    block是3,是字符ascii编码,属于不可显示的字符.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月19日
  • 已采纳回答 1月11日
  • 创建了问题 1月11日

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端
  • ¥15 基于PLC的三轴机械手程序