簡體   English   中英

C數組在一定范圍內反轉

[英]C array reverse in some range

我做了一個交流代碼。

array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

范圍可以是(0, 3)(2, 6)等。

但是我的代碼有問題,它在一定范圍內有效,但在某些范圍內效果不佳。 我不知道原因

這是我的代碼。

#include <stdio.h>
void reverse(int arr[], int s, int t)
{
    int i,j, temp;

    for (i=s, j=0; i<(t-s)/2 + 1; i++, j++)
    {                       
            temp = arr[i];
            arr[i] = arr[t-j];
            arr[t-j] = temp; 
    }       

    for(i = 0; i < 8; i++)
            printf("%d   ", arr[i]);
    printf("\n");
 }
 int main()
 {
    int i, s, t;

    printf("start =   ");
    scanf("%d", &s);
    printf("end = ");
    scanf("%d", &t);

    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};

    reverse(arr, s, t);

    return 0;
 }

這是正確的結果。

在此處輸入圖片說明

這是錯誤的結果。

在此處輸入圖片說明

在此處輸入圖片說明

使用以下代碼行:

for (i=s, j=0; i<(t-s)/2 + s; i++, j++)

代替您的:

for (i=s, j=0; i<(t-s)/2 + 1; i++, j++)
#include <stdio.h>
void reverse(int arr[], int s, int t)
{
    int i, j, temp;
    for (i = s, j = 0; i <= (t-s)/2 + s; i++, j++) {                       
            temp = arr[i];
            arr[i] = arr[t-j];
            arr[t-j] = temp; 
    }       

    for(i = 0; i < 8; i++) {
            printf("%d   ", arr[i]);
    }
    printf("\n");
 }
 int main()
 {
    int i, s, t;
    printf("start =   ");
    scanf("%d", &s);
    printf("end = ");
    scanf("%d", &t);
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
    reverse(arr, s, t);
    return 0;
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM