c - 矩阵中的最后一个数字是错误的
问题描述
我是编程新手,我正在尝试用 C 做一些练习。当我在所有矩阵插槽中放入 2 时,最后一个返回 5 而不是 4。
#include <stdlib.h>
#include <stdio.h>
int main()
{
int al,ac,bl,bc,cl,cc;
int matrizA[5][3], matrizB[5][3], matrizC[5][3];
for ( al=1; al<6; al++ )
for ( ac=1; ac<4; ac++ )
{
printf("MatrizA [%d] [%d] = ", al, ac);
scanf("%d", &matrizA[al][ac]);
}
for ( bl=1; bl<6; bl++ )
for ( bc=1; bc<4; bc++ )
{
printf("MatrizB [%d] [%d] = ", bl, bc);
scanf("%d", &matrizB[bl][bc]);
}
for ( cl=1; cl<6; cl++ )
for ( cc=1; cc<4; cc++ )
{
matrizC[cl][cc]=matrizA[cl][cc]+matrizB[cl][cc];
}
printf("MatrizC= \n [%d] [%d] [%d]\n [%d] [%d] [%d]\n [%d] [%d] [%d]\n [%d] [%d] [%d]\n [%d] [%d] [%d]", matrizC[1][1], matrizC[1][2], matrizC[1][3], matrizC[2][1], matrizC[2][2], matrizC[2][3], matrizC[3][1], matrizC[3][2], matrizC[3][3], matrizC[4][1], matrizC[4][2], matrizC[4][3], matrizC[5][1], matrizC[5][2], matrizC[5][3]);
return(0);
}
有什么想法吗?谢谢 :)
解决方案
C中的数组索引是0
基于的。您的所有数组分配都以 开头1
,以 结尾。n
您应该以 . 开头0
和结尾n-1
。
例如,在此代码部分中,您的数组被定义为包含 [5][3] 元素,应使用索引 [0-4][0-2] 访问这些元素。但是您正在使用 [1-5][1-3] 访问。
通过写入数组拥有的内存之外,您正在调用未定义的行为。
int matrizA[5][3], matrizB[5][3], matrizC[5][3];
for ( al=1; al<6; al++ )
for ( ac=1; ac<4; ac++ )
...
更改此(和其他类似部分)以使用正确的数组索引:
int matrizA[5][3], matrizB[5][3], matrizC[5][3];
for ( al=0; al<5; al++ )
for ( ac=0; ac<3; ac++ )
...
推荐阅读
- angular - 动态渲染的 mat-expansion-panel 未按预期工作
- sql - SQL SERVER 2016 慢插入
- c - 不知道为什么我不能在第 112 行打印成本。它说
- python - 为什么在我告诉它 POST 之后请求使用 GET?
- kotlin - 如何使用 HttpRequest.sendStream() 获取上传文件的状态?
- javascript - 使用带有可变根元素的解析 JSON 的 JavaScript 对象
- netsuite - Netsuite 项目搜索 - 目标:显示可用数量非零的项目
- c# - 字符串根据条件拆分
- selenium - VSTS (Azure DevOps) 中的 Selenium 屏幕截图
- r - 将散点与跨越小提琴图填充条件的线配对