首页 > 解决方案 > 为什么只有输出的第一个元素是错误的?

问题描述

我最近开始练习 C。除了第一个元素外,输出是相反的。谁能告诉我这里有什么问题?我也尝试过使用 for 循环,但那是按原样显示数组。

#include<stdio.h>
#include<conio.h>
int main()
{
    int temp;
    int i,n;
    printf("Enter value of n:");
    scanf("%d",&n);
    int array1[n];
    int k=0,j=n;
    printf("Enter the five numbers\n");
    for(i=0;i<n;i++)
    {
        printf("Enter the number %d:",i+1);
        scanf("%d",&array1[i]);
    }
    printf("The array is:\n");
    for(i=0;i<n;i++)
    {
        printf("%d  ",array1[i]);

    }
    while(k<j)
    {
        temp=array1[k];
        array1[k]=array1[j];
        array1[j]=temp;
        j--;
        k++;
    }
    printf("\nThe array after reversing is:\n");
    for(i=0;i<n;i++)
    {
        printf("%d  ",array1[i]);

    }
}

标签: arrayscreverse

解决方案


您正在分配array1[k]array1[j]并初始化jn,因此它在第一次迭代中将值array1[k]与=> 交换,值= ,但是最终元素的索引是。(索引为 0,1,2,3,4,...n-1)。所以它试图获取位置 n 的值,实际上没有存储值(它在数组之外)。更改为_array1[j]jnn-1jn-1int k=0,j=n;


推荐阅读