[英]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.