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日
  • 展开全部

悬赏问题

  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装
  • ¥40 复杂的限制性的商函数处理