我尝试制作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]);
}
}
我需要帮助来修复程序。谢谢:)
答案 0 :(得分:0)
您需要更改
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
不是一个好名字。
和
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]);
}
}