c中将大于和小于30的整数从一个一维数组复制到两个三维数组的程序

问题描述 投票:0回答:0

我正在尝试编写一个程序,允许用户将正整数输入到大小为 12 的一维数组中,并捕获小于 1 的输入。然后该程序将值小于 30 的整数复制到第二个三维数组中。并且还将大于等于30的整数复制到第三个三维数组中

它将三个数组以表格形式显示在一起。该程序将使用三个数组、1 个单个数组和 2 个三维数组。

这就是我所做的:

#include <stdio.h>

#define N 12


int main() {
    
    int a[N], b[2][2][3], c[2][2][3];
    int i, j, k, l;
    
        for(i = 1; i <= N; i++){
            printf("Input %d: ", i);
            scanf("%d", &a[i]);
            
            if(a[i] < 30){
                for(j = 1; j <= 2; j++){
                    for(k = 1; k <= 2; k++){
                        for(l = 1; l <= 3; l++){
                            b[j][k][l] = a[i];
                        }
                    }
                }
            }
            
            if(a[i] >= 30){
                for(j = 1; j <= 2; j++){
                    for(k = 1; k <= 2; k++){
                        for(l = 1; l <= 3; l++){
                            c[j][k][l] = a[i];
                        }
                    }
                }
            }
            
            while(a[i] < 1){
                if (a[i] < 5){
                    printf("\nInvalid Input\nEnter 1 or greater than 1 only\n\n");
                    printf("Input %d: ", i);
                    scanf("%d", &a[i]);
            
                    if(a[i] < 30){
                        for(j = 1; j <= 2; j++){
                            for(k = 1; k <= 2; k++){
                                for(l = 1; l <= 3; l++){
                                    b[j][k][l] = a[i];
                                }
                            }
                        }
                    }
            
                    if(a[i] >= 30){
                        for(j = 1; j <= 2; j++){
                            for(k = 1; k <= 2; k++){
                                for(l = 1; l <= 3; l++){
                                    c[j][k][l] = a[i];
                                }
                            }
                        }
                    }
                }
            }
            
        }
        
        printf("\nArray 1: \n");
        
        for(i = 1; i <= N; i++)
            printf("a[%d] = %d \n", i, a[i]);
            
        printf("\n\nArray with less than 30: \n");
        
        for(j = 1; j <= 2; j++){
                    for(k = 1; k <= 2; k++){
                        for(l = 1; l <= 3; l++){
                            printf("b[%d][%d][%d] = %d \n", j, k, l, b[j][k][l]); 
                        }
                    }
                }
        
        printf("\n\nArray with greater than or equal to 30: \n");
        
        for(j = 1; j <= 2; j++){
                    for(k = 1; k <= 2; k++){
                        for(l = 1; l <= 3; l++){
                            printf("c[%d][%d][%d] = %d \n", j, k, l, c[j][k][l]); 
                        }
                    }
                }
}

然而,当我尝试运行该程序时,它显示了错误的值。有人可以告诉我我的代码有什么问题吗?谢谢。

arrays c multidimensional-array
© www.soinside.com 2019 - 2024. All rights reserved.