有没有一种方法可以在C中使用嵌套循环插入数组



下面是代码。。。。

#include <stdio.h>
#include <stdlib.h>
int main() {
int a[20] = { 1, 2, 4, 5, 6, 7, 8, 9, 10 };
int new_num, n, i = 0;
for (i; i < 10; i++) {
//printf("the elements in the array are:");
printf("%dn",a[i]);
}
printf("enter the index you want to insert the element");
scanf("%d", &n); //don't forget to add &
printf("Enter the element");
scanf("%d", &new_num);
for (i = 9; i >= n; i--) {
for (int j = 10; j > n; j--) {
a[j] = a[i];
}   
}
a[n] = new_num;
printf("new array is:");
for (i = 0; i < 10; i++) {
printf("%dn", a[i]);
}
return 0;
}

这是输出。。。

有人能告诉我我做错了什么吗?

我想使用嵌套循环将元素转移到下一个地址,而不是使用以下语法:

for (i = 9; i >= n; i--) {
a[i + 1] = a[i];
} 

但是输出看起来有点怪异,正如我在输出图像中所显示的那样。

问题是这个片段:

for (i=9;i>=n;i--){
for (int j=10;j>n;j--){
a[j]=a[i];
}   
}

当使用i == 4时,将索引超过4的a的所有元素设置为a[4]的值(即6(。你可能想要更接近的东西

for (int j = 10; j > n; j++) {
a[j] = a[j - 1];
}
a[n] = new_num;

此外,您还有一个小错误,假设a的长度为10,但缺少值3,因此它只有9个元素。

编辑:我刚刚看到你想要使用嵌套循环。这是硬性要求吗?嵌套循环不是正确的方法。

最新更新