编写程序:从键盘输入一串整数保存到数组中,调用函数antitone()将数组反序输出。自定voi

求详细解释,我不会

数组反向,只要将第一位和最后一位交换,第二位和倒数第二位交换,第三位。。。。。。

这样就可以实现数组内容反向存储。

注意:我代码中交换用^=只是小技巧,效果等同于使用变量交换,如果是字符数组不要用这个方法交换。

#include <stdio.h>
#define N 10
void antitone(int a[],int n);
int main()
{
    int n=N,a[N],*p=a;
    while(n--)
        scanf("%d",p++);
    antitone(a,N);
    return 0;
}
void antitone(int a[],int n)
{
    int *pb=a,*pe=&a[n-1];
    while(pb<pe)//将数组内容反向存储
    {
        *pb^=*pe,*pe^=*pb,*pb^=*pe;
        pb++;
        pe--;
    }
    pb=a;//打印数组
    printf("反向后:");
    while(n--)
        printf("%d ",*pb++);
    printf("\n");
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-16
就是开始输入数字放在一个数组里 下标是0123456这样 你输出的时候从n开始6543210这样读取 就是倒序了追问

怎么做啊

第2个回答  2020-06-08
#include <stdio.h>
#define num 10
void antitone(int a[], int n);
int main()
{
int a[num];
puts("enter ten numbers:");
for (int i = 0; i < num; i++)
{
scanf("%d", &a[i]);
}
antitone(a, num);
puts("\n");
return 0;
}
void antitone(int a[num], int n)
{
int *p;
p = &a[n-1];
for (int i=0; i < n; i++)
printf("%5d", *(p-i));

}
相似回答