gpt4 book ai didi

c - 两个数组 C 中的输出不正确

转载 作者:行者123 更新时间:2023-11-30 17:18:31 25 4
gpt4 key购买 nike

当我尝试填充两个数组时,输出不正确,但是当我尝试填充一个正常工作的数组时,我找不到错误,我也尝试使用指针

两个数组:输出错误

#include <stdio.h>
#define MAX 1

int fillArrays(int a[], int b[]);

int main() {
int a[MAX], b[MAX], i;

fillArrays(a, b);
showArrays(a, b);

getch();
return 0;
}

int fillArrays(int a[], int b[]) {
int i;

for(i = 0; i <= MAX; i++) {
printf("a[%d]: ", i);
scanf("%d", &a[i]);
}

for(i = 0; i <= MAX; i++) {
printf("b[%d]: ", i);
scanf("%d", &b[i]);
}
}

int showArrays(int a[], int b[]) {
int i;

for(i = 0; i <= MAX; i++) {
printf("%d", a[i]); //incorrect output
}

for(i = 0; i <= MAX; i++) {
printf("%d", b[i]); //incorrect output
}
}

最佳答案

C 中的数组的索引为 0。

这意味着数组开头的索引将为 0 ,数组的最后元素将为 size_of_array - 1 .

在您的 showArrays() 中,您尝试访问数组 a[] 的元素和b[] 它们不是数组的一部分

因此,您需要更改每个 for 的终止条件从i <= MAX循环至i < MAX .

修改后的代码:

#include <stdio.h>
#define MAX 1

int fillArrays(int a[], int b[]);

int main() {
int a[MAX], b[MAX], i;

fillArrays(a, b);
showArrays(a, b);

getch();
return 0;
}

int fillArrays(int a[], int b[]) {
int i;

for(i = 0; i < MAX; i++) {
printf("a[%d]: ", i);
scanf("%d", &a[i]);
}

for(i = 0; i < MAX; i++) {
printf("b[%d]: ", i);
scanf("%d", &b[i]);
}
}

int showArrays(int a[], int b[]) {
int i;

for(i = 0; i < MAX; i++) {
printf("%d", a[i]);
}

for(i = 0; i < MAX; i++) {
printf("%d", b[i]);
}
}
<小时/>

访问数组越界元素会导致未定义的行为。

关于c - 两个数组 C 中的输出不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29159752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com