为什么我的非常基本的代码基本上只是改变数组元素的值(错误代码-1073741819)?
为什么我的非常基本的代码基本上只是改变数组元素的值(错误代码-1073741819)?
这个项目的核心思想是创建一个整数数组,并根据终端输入来改变它们的值。这是我的第一个项目,一切似乎都很顺利,但是它不起作用,我无法弄清楚出了什么问题。我认为可能与数组有关,但我不确定。
当我构建并运行它时,我会得到第10、11和12行的输出,但当我输入一个数字时,它只会显示:进程返回-1073741819(0xC0000005)
#include#include int main() { int account[1000]; // 提示可选项 printf("查询余额: 3\r\n"); printf("存入现金: 2\r\n"); printf("取出现金: 1\r\n"); // 创建循环变量 int q; // 创建“无限循环” for(q=0;q<100000;++q){ printf("选择操作\r\n"); int acted; int am; int acc; scanf("%d", &acted); printf("输入账户号码\r\n"); scanf("%d", &acc); // 检查选择的选项 if (acted == 1) { printf("请输入要取出的现金金额"); scanf("%d", &am); account[acc]=(account[acc]-am); } else if(acted == 2) { printf("请输入要存入的现金金额"); scanf("%d", &am); account[acc]=(account[acc]+am); } else if(acted == 3) { printf("账户号码: %d",acc); printf("账户余额: %d",account[acc]); }; } }
这段代码的问题是在定义数组元素并将其设置为0时出现了错误。由于数组元素没有值,计算机输出的错误码实际上只是一个随机数。
解决方法是在定义数组时,将其元素初始化为0。可以通过在数组定义时使用大括号来实现,例如int account[10] = { 0 };。
以下是修复后的代码:
#include#include int main() { int account[10] = { 0 }; // Tell you the options printf("Check balance : 3\r\n"); printf("Add cash : 2\r\n"); printf("Remove cash : 1\r\n"); // Creates a variable for the loop int q; // Creates a "infinite loop" for(q=0;q<100000;++q){ printf("Select Action\r\n"); int acted; int am; int acc; scanf("%d", &acted); printf("Enter account number\r\n"); scanf("%d", &acc); // Checks what option you chose. if (acted == 1) { printf("Amount of cash to remove\n"); scanf("%d", &am); account[acc]=(account[acc]-am); } else if(acted == 2) { printf("Amount of cash to add\n"); scanf("%d", &am); account[acc]=(account[acc]+am); } else if(acted == 3) { printf("Account Number: %d\n",acc); printf("Balance of account: %d\n",account[acc]); } } return 0; }
修复后的代码中,已经将数组元素初始化为0,解决了出现错误码的问题。
为了解决这个问题,你可以按照以下步骤进行操作:
1. 使用`scanf`函数来读取输入的数据,格式为`scanf("%d", &acted);`。具体使用方法可以参考[scanf函数](https://www.educative.io/answers/how-to-read-data-using-scanf-in-c)。
2. 将代码修改为如下形式:
#include#include int main() { int account[1000]; // 输出选项 printf("Check balance : 3\r\n"); printf("Add cash : 2\r\n"); printf("Remove cash : 1\r\n"); // 创建循环变量 int q; // 创建一个“无限循环” for (q = 0; q < 100000; ++q) { printf("Select Action\r\n"); int acted; int am; int ACC; scanf("%d", &acted); printf("Enter account number\r\n"); scanf("%d", &acc); // 检查选择的选项 if (acted == 1) { printf("Amount of cash to remove\n"); scanf("%d", &am); account[acc] = (account[acc] - am); } else if (acted == 2) { printf("Amount of cash to add\n"); scanf("%d", &am); account[acc] = (account[acc] + am); } else if (acted == 3) { printf("Account Number: %d\n", ACC); printf("Balance of account: %d\n", account[ACC]); } } }
通过以上操作,你应该能够解决这个问题。