C语言:题目:将n个数按输入时顺序的逆序排列,用函数实现(用指针)。 我这个函数为什么有问题啊

#include<stdio.h>#include<string.h>void f(int a[],int n){int *p=a,i,b[20];for(i=0;i<n;i++){b[i]=*(p+(n-1));n--;}printf("\nafter rank:\n");for(i=0;i<n;i++)printf("%d",b[i]);}int main(){int a[20];int i=0,n;printf("intput how many numbers you want:");scanf("%d",&n);printf("\n");printf("input the numbers:\n");for(i=0;i<n;i++)scanf("%d",&a[i]);f(a,n);}

    把b[i]=*p+n-1;改成b[i]=*(p+n-1);。

    把printf("%d",b[i]);改成printf("%d ",b[i]);,并在其后加一句printf("\n");。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-12-24
你的n变了
第2个回答  2018-12-24
for(i = 0; i < n; i++)
{
b[i] = *(p + n - 1 -i)

}
试试这个本回答被提问者采纳
第3个回答  2018-12-24

#include<stdio.h>
#include<string.h>
void f(int a[],int n)
{ int *p=a,i,b[20];
  for(i=0; i<n; i++)
  { b[i]=*(p+(n-1)-i);
  }
  printf("\nafter rank:\n");
  for(i=0; i<n; i++)
    printf("%d ",b[i]);
}
int main()
{ int a[20];
  int i=0,n;
  printf("intput how many numbers you want:");
  scanf("%d",&n);
  printf("\n");
  printf("input the numbers:\n");
  for(i=0; i<n; i++)
    scanf("%d",&a[i]);
  f(a,n);
}

第4个回答  2018-12-24

循环一次n会减一,i会加一,所以实际的循环不是n次.

相似回答