C数组中的程序

smdncfj3  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(95)

text我必须创建一个数组A[n][n]。在这个数组中,用户放入一些数字,然后从这个数组中创建第二个数组C[n],其中的数字是正数,从第一个数组开始逐行排列。我尝试用这种方法来做,但在这种方法中,对于每个数字,它必须只按行排列。必须看起来像这样,例如A00:1 A01:-3 A02:5 A10:-7 A11:-8 A12:7 A20:6 A21:9 A22:10
但在我看来这是错误的。如果有人知道问题在哪里,我将非常感谢。

> const int n=10;
    int a[n][n];
    int c[n];
    int i,j,k,suma;
printf("vuvedete br redove i stalbove n=");
    scanf ("%d",&n);
    for (i=0;i<n;i++){
        for (j=0;j<n;j++){
        do{
            printf("a[%d][%d]=",i,j);
            scanf("%d",&a[i][j]);
        }
        
        while(a[i][j]<-1000||a[i][j]>1000);
        }
    }
    suma=0;
        for (i=0;i<n;i++){
        for (j=0;j<n;j++){
            if (a[i][j]>0){
            suma=suma+1;}
        }
    }
    for(k=0;k<n;k++){
            printf("c[%d]=%d",k,suma);
        }
    return 0;
}
3qpi33ja

3qpi33ja1#

主要变化:
1.填充数组c[]并丢弃变量suma。这是代码的主要问题。
1.您将n声明为const,但允许用户输入其值。我已经删除了const并使用#define设置数组的最大维数。
1.删除while循环-这是什么?
1.将军收拾东西。

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#define MAX 10

int main() {
    int a[MAX][MAX] = {0};
    int c[MAX] = {0};
    int n = MAX;
    printf("vuvedete br redove i stalbove n=");
    scanf ("%d",&n);
    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++) {
            printf("a[%d][%d]=",i,j);
            scanf("%d",&a[i][j]);
        }

    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++) 
            c[i] += a[i][j] > 0 ? 1 : 0;

    for(int k=0;k<n;k++)
        printf("c[%d]=%d\n",k,c[k]);

    return 0;
}

相关问题