gpt4 book ai didi

C - 使用动态数组将数组添加到自身

转载 作者:太空宇宙 更新时间:2023-11-04 00:14:30 25 4
gpt4 key购买 nike

我为此启动了一个不同的线程,我尝试使用他们给我的帮助来解决它,但我无法运行该程序。谁能告诉我程序中有什么问题以及应该如何处理?谢谢。

该程序应该向自身添加一个数组并用总和替换原始数组,因此当打印初始数组时,它会打印总和。这是我到目前为止所做的。

请注意必须使用 ADDER(a,a) 作为函数调用。我无权改变这一点。两个参数都将通过引用传递。

#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

int size; //global variable

void ADDER(int *a, int *b) {
int i;
for (i = 0; i < size; i++) {
b[i] += a[i];
}
}

int main() {
int n, i;
printf("Enter the number of elements: ");
scanf("%d", &n);
int *a = (int *)malloc(n*sizeof(int));
int *b;
for (i=0; i<n; i++) {
printf("Enter element number %d: ", i);
scanf("%d", &a[i]);
}
ADDER(a,a);
for (i=0; i<n; i++) {
printf("%d", a[i]);
}
}

错误:

1>------ 构建开始:项目:adderTest,配置:调试 Win32 ------

1>加法器.c

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(17): warning C4996: 'scanf': 这个函数或变量可能不安全。考虑改用 scanf_s。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。有关详细信息,请参阅联机帮助。

1> e:\program files\microsoft visual studio 10.0\vc\include\stdio.h(304) : 见'scanf'声明

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(18): error C2143: 语法错误:缺少 ';'在“类型”之前

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(19): error C2143: 语法错误:缺少 ';'在“类型”之前

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(22): error C2065: 'a' : undeclared identifier

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(22): error C2109: 下标需要数组或指针类型

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(24): error C2065: 'a' : 未声明的标识符1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(24): warning C4047: 'function' : 'int *' 的间接级别与 'int' 不同

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(24): warning C4024: 'ADDER' : 不同类型的形参和实参 1

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(24): error C2065: 'a' : undeclared identifier

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(24): warning C4047: 'function' : 'int *' 的间接级别与 'int' 不同

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(24): warning C4024: 'ADDER' : 不同类型的形参和实参 2

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(26): error C2065: 'a' : undeclared identifier

1>e:\my documents\visual studio 2010\projects\addertest\addertest\adder.c(26): error C2109: 下标需要数组或指针类型

========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

最佳答案

您在文件范围和 block 范围(在 main 函数中)都有一个 size 对象。

要修复您的程序,您可以删除 main 函数中 size 对象的定义,或者(首选解决方案)删除文件范围内的对象并将其作为ADDER 函数的新参数。

如果您使用 gcc 编译,您可以使用 -Wshadow 警告,当一个变量遮挡另一个变量时,它会提醒您。

关于C - 使用动态数组将数组添加到自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8717233/

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