首页 > 解决方案 > 有没有办法使用嵌套循环在 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("%d\n",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("%d\n", a[i]);
    }

    return 0;
}

这是输出...

谁能告诉我我做错了什么?

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

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

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

标签: arrayscnested-loopsinsertion

解决方案


问题是这个片段:

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

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

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

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

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


推荐阅读