[英]Passing arrays to a void function
我试图打印出array1的内容乘以10,如果里面的整数是正数,如果它是负数,则该数字应保留在另一个数组中。 我的代码没有给我任何结果,我的编程能力不是很好,所以我很确定自己犯了一个愚蠢的错误,但是我无法弄清它是什么,有人可以指出问题吗?
void
tenfold (int array2[], int size )
{
int i, array1[size];
for (i=0;i<size;i++)
{
if (array1[i]>0)
array2[i]= 10 * array1[i];
else
array2[i]= array1[i];
}
}
int main()
{
int i,array1[9]= {3, 4, 5, 6, 7, -8, -9, 1, 2};
int size = 9;
tenfold(array1, size);
return 0;
}
您已在函数中更改了数组的名称,将代码更新为
//------------v array1
tenfold (int array1[], int size )
{
int i, array2[size]; //here array2
//your code
}
对于您的代码, array1[]
不会被初始化并且具有随机值,因此if
不能按预期工作。
您应该首先尝试在tenfold()中打印值。 :-)您不需要在tenfold()中创建array1。
另外,您也许可以摆脱使用size变量的麻烦,而只需使用sizeof(array)/ sizeof(array [0])。
tenfold应该将array1作为输入,将array2作为本地,否则您是正确的,在tenfold中添加了一个printf以查看输出。
#include<stdio.h>
void tenfold (int array1[], int size )
{
int i, array2[size];
for (i=0;i<size;i++)
{
if (array1[i]>0)
array2[i]= 10 * array1[i];
else
array2[i]= array1[i];
}
for(i=0;i<size;i++)
printf("(orignal) array1[%d]=%d, (new) array2[%d]=%d\n", i, array1[i], i, array2[i]);
}
int main()
{
int i,array1[9]= {3, 4, 5, 6, 7, -8, -9, 1, 2};
int size = 9;
tenfold(array1, size);
return 0;
}
输出:
(orignal) array1[0]=3, (new) array2[0]=30
(orignal) array1[1]=4, (new) array2[1]=40
(orignal) array1[2]=5, (new) array2[2]=50
(orignal) array1[3]=6, (new) array2[3]=60
(orignal) array1[4]=7, (new) array2[4]=70
(orignal) array1[5]=-8, (new) array2[5]=-8
(orignal) array1[6]=-9, (new) array2[6]=-9
(orignal) array1[7]=1, (new) array2[7]=10
(orignal) array1[8]=2, (new) array2[8]=20
tenfold不打印任何内容。 如果要打印该函数,则无需创建另一个数组。 确保添加#include
#include <stdio.h>
void tenfold (int array[], int size)
{
int i;
for (i=0;i<size;i++)
{
if (array[i]>0)
printf("%d ", (10 * array[i]));
else
printf("%d ", array[i]);
}
}
输出:30 40 50 60 70 -8 -9 10 20
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.