为什么只有输出的第一个元素是错误的?



我最近开始练习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 numbersn");
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]);
}
}

您将array1[k]分配给array1[j],并将j初始化为n,因此它将array1[k]中的值与array1[j]=>在第一次迭代中,值j=n,但最后一个元素的索引是n-1。(索引为0,1,2,3,4,…n-1)。因此,它尝试获取位置n的值,实际上没有存储值(它在数组之外)。修改int k=0,j=n;

中的jn-1

最新更新