[英]Reverse Array C
我對以下功能有問題。
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]);
}
可能是,最快的方法:
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;
}
您在reverseAr1D
函數中所做的是以相反的順序將temp
中已經反轉的元素復制到ar
。 所以你最終會得到元素的原始順序。
在您的reverseAr1D
函數中,您必須將第二個for
循環更改for
:
for(int i = 0; i < size; i++){
*(ar + j) = *(temp + i);
j++;
}
這是反轉整數數組的大量代碼。 這是經典的方法:
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;
}
}
#include<stdio.h>
#define SIZE 5
void main(){
int i,j,temp,array[SIZE]={1,2,3,4,5},k;
for(i=0,j=SIZE-1;i<j;i++,j--){
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
for(k=0;k<SIZE;k++){
printf("%d\n",array[k]);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.