尝试在用户输入的数组中交换多个值

时间:2016-03-28 18:00:48

标签: c arrays pointers

我试图取一个用户输入的数组并将第0个值与第7个第8个值交换为第3个值,将第0个值交换为第14个值。我必须使用一个函数来交换哪个是我认为我搞砸了。当我编译它时,对函数交换的几个参数说。另外,它是我第一次使用指针,所以如果出现错误,我也不会感到惊讶。这就是我拥有的,谢谢!

#include <stdio.h>

void swap (int a[15], int *p, int *q, int *r ,int *s , int*t)  {

int temp;
  p = &a[0];
  q = &a[7];
  r = &a[8];
  s = &a[3];
  t = &a[14];

  temp = *p;
  *p = *q;
  *q = temp;

  temp = *r;
  *r = *s;
  *s = temp;

  temp = *t;
  *t = *p;
  *p = temp;
  }

int main (int argc, char *argv[]) {

int a[15], i;
   printf(" Enter 15 integers: ");
   for (i=0; i <15; i++)
   swap(a);
   printf(" Swapped array:\n %d", a[15]);
 return 0;
}

2 个答案:

答案 0 :(得分:0)

它不是与指针有关的错误。

您使用一个参数调用了'Form' => Illuminate\Html\FormFacade::class 'Html' => Illuminate\Html\HtmlFacade::class, ,例如swap()

在定义它时,你有一个以上的参数。像

swap(a);

在函数定义中不需要那些额外的参数。

只需将其更改为,

void swap (int a[15], int *p, int *q, int *r ,int *s , int*t)  {
...

答案 1 :(得分:0)

更好的方法是定义一般函数swap(),并在需要时多次使用适当的必需参数调用它。

void swap(int *p, int *q)
{
    int tmp = *p;
    *p = *q;
    *q = tmp;
}

将上述API称为

swap (&a[0], &a[7])
swap (&a[8], &a[3])
...
..