我为此启动了一个不同的线程,我尝试使用他们给我的帮助来解决它,但我无法运行程序有人能告诉我这个程序有什么问题,应该怎么做吗谢谢。
程序应该向自身添加一个数组,并用和替换原始数组,因此当打印初始数组时,它会打印和这就是我到目前为止所做的。
请注意,必须使用加法器(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:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(17):警告C4996:“scanf”:此函数或变量可能不安全。考虑改用scanf_。若要禁用否决,请使用“CRT_SECURE_NO_警告”有关详细信息,请参阅联机帮助。
1>e:\程序文件\microsoft visual studio 10.0\vc\include\stdio.h(304):请参见“scanf”声明
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(18):错误C2143:语法错误:在“type”之前缺少“;”
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(19):错误C2143:语法错误:在“type”之前缺少“;”
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(22):错误C2065:“a”:未声明的标识符
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(22):错误C2109:下标需要数组或指针类型
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(24):错误C2065:“a”:未声明的标识符
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(24):警告C4047:“函数”:“int*”与“int”的间接寻址级别不同
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(24):warning C4024:“adder”:形式参数和实际参数1的不同类型
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(24):错误C2065:“a”:未声明的标识符
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(24):警告C4047:“函数”:“int*”与“int”的间接寻址级别不同
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(24):警告C4024:“adder”:形式参数和实际参数的不同类型2
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(26):错误C2065:“a”:未声明的标识符
1>e:“我的文档”\visual studio 2010\projects\addertest\addertest\adder.c(26):错误C2109:下标需要数组或指针类型
====生成:0成功,1失败,0最新,0跳过==========
最佳答案
#include <stdlib.h>
#include <stdio.h>
/* global variable to store the size */
int g_size;
void ADDER(int *a, int *b)
{
int i;
for (i=0 ; i<g_size ; i++) {
b[i] += a[i];
}
return;
}
int main(void)
{
int n, i;
printf("Enter the number of elements: ");
scanf("%d", &n);
int *a = NULL;
if ((a = (int *)malloc(n * sizeof(int))) == NULL) {
printf("unable to allocate memory \n");
return -1;
}
for (i=0; i<n; i++) {
printf("Enter element number %d: ", i);
scanf("%d", &a[i]);
}
g_size = n;
ADDER(a, a);
for (i=0; i<n; i++) {
printf("%d \n", a[i]);
}
free(a);
return 0;
}
我做了以下修改:
检查
malloc()
时出错一旦完成,记忆就消失了
格式化输出
已删除,因为不需要
终于成功了:)
编辑:根据操作作者的要求更新代码。
关于c - C-使用动态数组向自身添加数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8717233/