首页 > 解决方案 > 查找二维数组中每列的元素数

问题描述

我尝试制作 C 程序但遇到问题。该程序正在查找每列中的元素数量。

输入 :

4 4

矩阵:

1 0 1 1
0 0 0 0
0 0 0 1
1 1 1 1

输出应该是列中 1 的数量

输出 :

2 1 2 3

这是我的程序,但它不能正常工作:

#include<stdio.h>

int main()
{
    int i , j, r , c , n , a[100][100],max[100];
    printf("Enter the number of rows: ");
    scanf("%d",&r);
    printf("Enter the number of columns: ");
    scanf("%d",&c);
    printf("Enter the elements of the array- \n");

    printf("The input matrix is:- \n");
    for(i = 0; i < r; i++)
    {
        for(j = 0; j < c; j++)
        {
            printf("%d\t",a[i][j]);
        }
        printf("\n");
    }
    for(i = 0; i < r; i++)
    {
        max[i] = a[i][j];
        for(j = 0; j < c ; j++)
        {
            if(a[i][j]>max[i])
            {
                max[i]=a[i][j];
            }
        }
    }
    for(i = 0; i < r; i++)
    {
        printf("the element of the row %d is: %d\n",i,max[i]);
    }
}

我需要帮助来修复程序。谢谢 :)

标签: c

解决方案


你需要改变

max[i] = a[i][j];
for(j = 0; j < c ; j++)

max[i] = a[i][0];
for(j = 1; j < c ; j++)

否则,您将值存储a[i][c]max每次迭代,这不是您想要的。

此外,您没有填充数组,您可以使用一些随机值来测试您的程序:

...
#include <time.h>
...

int main(void)
{
    srand((unsigned)time(NULL));

    ...

    for(i = 0; i < r; i++)
    {
        for(j = 0; j < c; j++)
        {
            a[i][j] = rand();
            printf("%d\t",a[i][j]);
        }
        printf("\n");
    }

编辑:

max如果您想计算1's 的数量,这不是一个好名字。

printf("the element of the row %d is: %d\n",i,max[i]);

应该

printf("Number of 1's in row %d is: %d\n",i,max[i]);

请下次努力解释问题。

您的代码使用随机数,只需将其调整为scanf

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

int main(void)
{
    int i , j, r = 5, c = 10, n , a[100][100],max[100];

    srand((unsigned)time(NULL));
    printf("The input matrix is:- \n");
    for(i = 0; i < r; i++)
    {
        for(j = 0; j < c; j++)
        {
            a[i][j] = rand() & 1;
            printf("%d\t",a[i][j]);
        }
        printf("\n");
    }
    for(i = 0; i < r; i++)
    {
        max[i] = 0;
        for(j = 0; j < c ; j++)
        {
            if(a[i][j] == 1)
            {
                max[i]++;
            }
        }
    }
    for(i = 0; i < r; i++)
    {
        printf("Number of 1's in row %d is: %d\n",i,max[i]);
    }
}

推荐阅读