我对以下功能有疑问。
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]);
}
答案 0 :(得分:2)
也许是最快的方法:
int *front_p, *back_p;
for(front_p=&ar[0], back_p=&ar[size-1]; front_p < back_p; ++front_p, --back_p) {
tmp=*back_p; *back_p=*front_p; *front_p=tmp;
}
答案 1 :(得分:2)
您在reverseAr1D
函数中所做的工作是将temp
中已经反转的元素以相反的顺序复制到ar
中。因此,您将获得元素的原始顺序。
在您的reverseAr1D
函数中,您必须将第二个for
循环更改为此:
for(int i = 0; i < size; i++){
*(ar + j) = *(temp + i);
j++;
}
答案 2 :(得分:2)
有很多代码可以反转整数数组。这是经典的方式:
void arrayReverse(int* array, int size) {
for (int i = 0; i < (size / 2); i++) {
int swap = array[size - 1 - i];
array[size - 1 - i] = array[i];
array[i] = swap;
}
}
答案 3 :(得分:0)
EventScheduler