gpt4 book ai didi

c - 反转数组 C

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:55 24 4
gpt4 key购买 nike

我对以下功能有疑问。

void reverseAr1D(int ar[], int size)
{
int temp[size], j = 0;

for(int i = size - 1; i > -1; i--)
{
temp[j] = ar[i];
j++;
}

j = 0;

for(int i = size - 1; i >- 1; i--)
{
*(ar + j) = *(temp + i);
j++;
}

for (int i = 0; i < size; i++)
printf("%d ", temp[i]);
}

我想反转数组 ar[] 中的每个元素。我试图反向复制到另一个数组temp[]。然后将 temp[] 复制回 ar[]。我试过了但没有用。下面是我的代码。谢谢。

#include <stdio.h>

void printReverse1(int ar[], int size);
void printReverse2(int ar[], int size);
void reverseAr1D(int ar[], int size);

int main()
{
int ar[10];
int size, i;

printf("Enter array size: \n");
scanf("%d", &size);
printf("Enter %d data: \n", size);

for (i = 0; i <= size - 1; i++)
scanf("%d", &ar[i]);

printReverse1(ar, size);
printReverse2(ar, size);

reverseAr1D(ar, size);
printf("reverseAr1D(): ");

if (size > 0)
{
for (i = 0; i < size; i++)
printf("%d ", ar[i]);
}

return 0;
}



void printReverse1(int ar[], int size)
{
/* using index – Write your program code here */
printf("printReverse1(): ");
for(int i=size-1;i>-1;i--){

printf(" %d ",ar[i]);
}
printf("\n");
}



void printReverse2(int ar[], int size)
{
/* using pointer – Write your program code here */
printf("printReverse2(): ");
for(int i=size-1;i>-1;i--){

printf(" %d ",*(ar+i));
}
printf("\n");
}



void reverseAr1D(int ar[ ], int size)
{
/* Write your program code here */
int temp[size],j=0;
for(int i=size-1;i>-1;i--){

temp[j]=ar[i];


j++;
}
j=0;
for(int i=size-1;i>-1;i--){

*(ar+j)=*(temp+i);


j++;
}
for (int i=0; i<size; i++)
printf("%d ", temp[i]);

}

最佳答案

您在 reverseAr1D 函数中所做的是将 temp 中已经反转的元素以相反的顺序复制到 ar 中。所以你最终会得到元素的原始顺序。

在您的 reverseAr1D 函数中,您必须将第二个 for 循环更改为:

for(int i = 0; i < size; i++){
*(ar + j) = *(temp + i);
j++;
}

关于c - 反转数组 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52644140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com