代码之家  ›  专栏  ›  技术社区  ›  Rhee

二维排列练习

c
  •  1
  • Rhee  · 技术社区  · 16 年前

    首先,抱歉我的语言不好。我自己也在用VC++Express。

    • 每列为4个科目

    alt text
    dcinside.com )

    int main(void)
    {
    int arr[5][5];
    int i,j;
    
    while(1)
    {
        printf("student: 1.Jim,2.Jombi,3.Joly,4.Moran if you done, type 0\n");
        scanf("%d", &i);
    
        if(i=0)
            break;
    
        printf("subject: 1.english,2.spanish,3.poolish,4.flash\n");
        scanf("%d", &j);
    
        printf("insult score!\n");
        scanf("%d", arr[i-1][j-1]);//insulting score
    }
    
    for(i=0;i<4;i++)//initialization of sum parts
    {
        arr[i][4]=0;
        arr[4][i]=0;
    }
    
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            arr[4][i]+=arr[j][i];
    
    for(i=0;i<4;i++)
        for(j=0;j<4;j++)
            arr[i][4]+=arr[i][j];
    
    
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
            printf("%d ",arr[i][j]);//printing result
        printf("\n");
    }
    return 0;
    }
    

    4 回复  |  直到 5 年前
        1
  •  2
  •   pmg    16 年前

    正如已经指出的,你有一个 if

    if (i == 0)
    /*   ^^^ */
    

    你有一个 scanf

    scanf("%d", &arr[i-1][j-1]);
    /*         ^^^ */
    

    真正地 应该用某物(可能是零)初始化数组

    int arr[5][5] = {0};
    
        2
  •  1
  •   Konamiman    16 年前
    if(i=0)
    

    我不知道这是否是你问题的根源,但应该是:

    if(i==0)
    
        3
  •  0
  •   Alexander Pogrebnyak    16 年前

    你上次的索引 for 循环是一次性的。应该是 4 ,你使用 5 .

        4
  •  0
  •   unwind    16 年前

    • 你错过了 & scanf()
    • 考虑做一个简单的 memset(arr, 0, sizeof arr); 在输入循环之前,确保数组是清晰的,而不是嵌套的 for
    • 添加仪器,例如在输入步骤后打印矩阵,以确保它看起来正常。