0
问题基本上是在外部阵列上打印两个数组作为右侧部分和左侧部分,但尽管我可以打印一个部分,但我无法打印其他部分。情景是,例如左边的5个元素和右边的7个元素。然后它反转右侧并将其粘贴到数组的开头。在C中添加两个数组
这是我输入的一段代码。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int mainarray[] = {} , n , i , rank;
printf("\nHow many element[10..2000]: ");
scanf("%d", &n);
printf("\nEnter the array elements : ");
for(i=0; i<n; ++i)
{
scanf("%d" , &mainarray[i]);
}
printf("\nThe array is : ");
for(i=0 ; i<n ; i++)
{
printf("%d ",mainarray[i]);
}
printf("\n\nEnter the rank of the element : ");
scanf("%d",&rank);
printf("\n\nElement on rank %d is: %d",rank, mainarray[rank-1]);
int leftarray[] = {} , rightarray[] = {};
for(i=0; i<=rank ; i++)
{
leftarray[i] = mainarray[i];
}
printf("\n\nThe left array is : ");
for(i=0 ; i<=rank ; i++)
{
printf("%d ", leftarray[i]);
}
for(i=0 ; i<n-rank-1 ;i++)
{
rightarray[i]=mainarray[i+rank+1];
}
printf("\n\nThe right array is : ");
for(i=0 ; i<n-rank-1 ;i++)
{
printf("%d ", rightarray[i]);
}
int j=n-rank-2,temp;
i=0;
while(i<j)
{
temp=rightarray[i];
rightarray[i]=rightarray[j];
rightarray[j]=temp;
i++;
j--;
}
printf("\n\nNew right array is : ");
for(i=0 ; i<n-rank-1 ; i++)
{
printf("%d ", rightarray[i]);
}
i=0;
while(i<n-rank-1)
{
mainarray[i]=rightarray[i];
i++;
}
j=0;
while(j<rank+1 && i<n-1)
{
mainarray[i]=leftarray[j];
j++;
i++;
}
printf("\n\nThe result is : ");
for(i=0 ; i<n ; i++)
{
printf("%d ",mainarray[i]);
}
printf("\n\n\n");
system("pause");
return 0;
}
'INT mainarray [] = {}' - 哎哟。如果您正在拍摄不含任何元素的阵列,则会找到它。 – WhozCraig
当你执行'int mainarray [] = {}''你定义'mainarray'是一个* empty *数组。所有索引都会超出范围。 –
'scanf(“%d”,&n); int mainarray [n];' – BLUEPIXY