将数组传递给函数,将数组的每个值乘以10

时间:2015-03-16 15:41:18

标签: c

该程序使用函数将数组的每个值乘以10。我收到了很多错误。 我可以把尺寸换成for循环吗?

#include<stdio.h>
mult(int arr[])
{
    int i;
    for(i=0;i<size;i++)
    {
        arr*=10;
    }
    return arr;
}
int main()
{
    int j[];
    printf("enter the all ten values to multiply by 10");
    for(j=0;j<size;j++)
        scanf("%d");
   j[] = mult(j);
   printf("%d",&j);
   return 0;
}

3 个答案:

答案 0 :(得分:2)

int j[];您错误地创建了一个数组(在此上下文中)。你必须指定它的大小。例如:int j[256];

for(j=0;j<size;j++) scanf("%d");什么&#39; size?你怎么能增加一个数组?您错误地使用了scanf。你应该做for(int s=0;s<size;s++) scanf("%d",&j[s]);

j[] = mult(j);又错了。您应该创建另一个数组并在那里复制值。

printf("%d",&j);您不需要&,请将其删除。您最好使用"%d\n"在自己的行上打印每个号码。

mult(int arr[])函数声明错误。您必须指定函数返回的类型。您可能需要使用int *mult(...)代替return &arr[0];

arr*=10;您想要实现的目标是什么?完全错了,你在这里乘以地址。


请阅读文档!您的代码没有任何意义,请先学习C,然后尝试编码。

此外,你需要在这里指点,注意它们。我建议您首先编写 Hello World 程序,以便了解基础知识。 Kernighan先生和Ritchie先生也会帮助你。


注意:我可能错过了一些错误,因为太多了。如果是的话请纠正我。

答案 1 :(得分:0)

您必须告诉mult()数组的大小是多少,并且您传递的数组将在mult()中修改,因此您无需返回值。

mult(j, size);

和您的mult()功能

void mult(int *arr, size_t size)
{
    int i;
    for(i=0;i<size;i++)
    {
        arr[i] *= 10;
    }
}

答案 2 :(得分:0)

以下是完整的代码,了解差异并更正代码:

#include<stdio.h>

void mult(int *arr,int size)
{
    int i;
    for(i=0;i<size;i++)
      arr[i]*=10;
}

int main()
{
  int size=10;
  int j[size],i;
  printf("enter the all ten values to multiply by 10\n");
  for(i=0;i<size;i++)
    scanf("%d",j+i);
  mult(j,size);
  for(i=0;i<size;i++)
    printf("%d ",j[i]);
  printf("\n");
  return 0;
}