Kinder KQ 2022-11-22 13:33 采纳率: 100%
浏览 24
已结题

关于#ios#的问题,如何解决?(语言-c++)

问题遇到的现象和发生背景
输入一个四位数,将其加密后输出。加密的规则如下:将该数每一位上的数字加9,然后除以10取余作为该位上的新数字,将千位和十位上的数字互换、百位和个位上的数字互换,组成加密后的新数字。高位若为0的也要输出。
我的写代码如下
#include<iostream>
using namespace std;
int main() {
    char a[4];
    cin >> a;//输入四位数

    for (int i = 1; i <= 4;i++){//将该数每一位上的数字加9,然后除以10取余作为该位上的新数字
        a[i] = (a[i] + 9) % 10;
    }

    char x;//千位和十位上的数字互换
    x = a[1];
    a[1] = a[3];
    a[3] = x;

    x = a[2];//百位和个位上的数字互换
    a[2] = a[4];
    a[4] = x;

    cout << a << endl;//加密后输出
    return 0;
}
运行错误列表

img


严重性 代码 说明
警告 C6385 正在从 "a" 读取无效数据。
警告 C6201 索引“4”超出了“0”至“3”的有效范围(对于可能在堆栈中分配的缓冲区“a”)。
警告 C6201 索引“4”超出了“0”至“3”的有效范围(对于可能在堆栈中分配的缓冲区“a”)。
警告 C6386 写入 "a" 时缓冲区溢出。
错误 C4789 缓冲区“a”(大小为 4 字节)将溢出;1 字节将在偏移 4 时开始写入

我的解答思路和尝试过的方法

我在在这次编程过程中才学会数组使用方法,所以我打算尝试检验数组运用是不是出错了,于是删除交换那部分

#include<iostream>
using namespace std;
int main() {
    char a[4];
    cin >> a;

    cout << a << endl;
    return 0;
}

结果运行后出现报错

img


复制详细信息
Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted.

我参考的是https://blog.csdn.net/Watremelon/article/details/123796149?ops_request_misc=&request_id=&biz_id=102&utm_term=a(i)&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-123796149.142^v66^control,201^v3^add_ask,213^v2^t3_esquery_v2&spm=1018.2226.3001.4187
这篇文章中第一幅图就是用的这个结构啊,为什么我用会报错(注:我搜过这个错误解决方法,但都是在说将循环从1开始调整为从0开始,但是我没用循环啊)

我想要达到的结果

我主要想使第一个程序能成功运行,第二个作为好奇,想知道为什么。

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-22 16:07
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月30日
  • 已采纳回答 11月22日
  • 修改了问题 11月22日
  • 修改了问题 11月22日
  • 展开全部

悬赏问题

  • ¥15 vue3+element-plus页面崩溃
  • ¥15 像这种代码要怎么跑起来?
  • ¥15 怎么改成循环输入删除(语言-c语言)
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理