首页 > 解决方案 > 数组反转 - HackerRank 问题 - 使用 C 语言

问题描述

我在 HackerRank 中遇到问题:https ://www.hackerrank.com/challenges/reverse-array-c/problem

我的想法是将a[0]的值存储到一个变量(store),然后分配a[0] = a[end],然后a[end] = store,之后我将移动到a[1]和a [结束-1]。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int num, *arr, i;
    scanf("%d", &num);
    arr = (int*) malloc(num * sizeof(int));
    for(i = 0; i < num; i++) {
        scanf("%d", arr + i);
    }


    /* Write the logic to reverse the array. */
    int start = 0, end = num - 1;
    int store;
    while ((start != end) || (start != (end+1)))
    {
        store = arr[start];
        arr[start] = arr[end];
        arr[end] = store;
        start++;
        end--;
    }

    for(i = 0; i < num; i++)
        printf("%d ", *(arr + i));
    
    free(arr);
    return 0;
}

但是,我的代码结果什么也没返回。谁能帮我指出我的代码中的问题?我真的很感激。

标签: arraysc

解决方案


该条件(start != end) || (start != (end+1))将始终为真,因为end != (end+1)并且永远不会同时start等于两者。endend+1

应该是(start != end) && (start != (end+1))


推荐阅读