用 C 编写一个程序,根据 运行 次整数输入创建一个 m×n 阶矩阵 A,并找到所有元素 A[i][j] 使得:
Write a program in C to create a matrix A of order m×n based on run-time integer inputs and find all elements A[i][j] such that:
用C编写一个程序,根据运行次整数输入创建m×n阶矩阵A,并找到所有元素A[i][j],使得它在第i个中最小行和第 j 列中最大的。
我是 C 的新手,我已经为它编写了代码,但它不起作用。
#include <stdio.h>
int main()
{
int m,n,min,max;
printf("Let the matrix be m x n\n Enter the value of m:");
scanf("%d",&m);
printf("Enter the value of n: ");
scanf("%d",&n);
int array1 [m][n];
int min_i [m] ;
int min_i_value [m] ;
int max_j [n] ;
int max_j_value [n] ;
printf("Enter elements in the matrix");
for (int i=0; i<m; ++i){//taking input for matrix
for(int j=0;j<n;++j){
scanf("%d", &array1[i][j]);
}
}
for(int i=0;i<m;++i){
array1[i][0]=min;//calculating min value in a row
for(int j=0;j<n;++j){
if (array1[i][j]<min){
array1[i][j]=min;
}
}
min_i_value[i]=min;//putting the min value in array
for (int j=0;j<n;++j){
if (array1[i][j]==min){
min_i[i]=j;//putting the index of min value in array
}
}
}
for(int j=0;j<n;++j){
array1[0][j] = max;
for(int i=0;i<m;i++){
if (array1[i][j]>max){
array1[i][j]=max;
}
}
max_j_value [j] = max;
for(int i=0;i<m;i++){
if (array1[i][j]==max){
max_j [j] = i;
}
}
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(min_i_value[i]==max_j_value[j]){
printf("%d,(%d,%d)\n",max_j_value[j],min_i[i],max_j[j]);
}
}
}
return 0;
}
它返回 0(0,2),我不明白为什么。
您没有正确计算行和列的最小值和最大值。你的分配应该被撤销。
array1[i][0]=min;//calculating min value in a row
for(int j=0;j<n;++j){
if (array1[i][j]<min){
array1[i][j]=min;
}
}
应该是
min = array1[i][0];
for(int j=0;j<n;++j){
if (array1[i][j]<min){
min = array1[i][j];
}
}
对于计算最大值的循环也是如此。
用C编写一个程序,根据运行次整数输入创建m×n阶矩阵A,并找到所有元素A[i][j],使得它在第i个中最小行和第 j 列中最大的。 我是 C 的新手,我已经为它编写了代码,但它不起作用。
#include <stdio.h>
int main()
{
int m,n,min,max;
printf("Let the matrix be m x n\n Enter the value of m:");
scanf("%d",&m);
printf("Enter the value of n: ");
scanf("%d",&n);
int array1 [m][n];
int min_i [m] ;
int min_i_value [m] ;
int max_j [n] ;
int max_j_value [n] ;
printf("Enter elements in the matrix");
for (int i=0; i<m; ++i){//taking input for matrix
for(int j=0;j<n;++j){
scanf("%d", &array1[i][j]);
}
}
for(int i=0;i<m;++i){
array1[i][0]=min;//calculating min value in a row
for(int j=0;j<n;++j){
if (array1[i][j]<min){
array1[i][j]=min;
}
}
min_i_value[i]=min;//putting the min value in array
for (int j=0;j<n;++j){
if (array1[i][j]==min){
min_i[i]=j;//putting the index of min value in array
}
}
}
for(int j=0;j<n;++j){
array1[0][j] = max;
for(int i=0;i<m;i++){
if (array1[i][j]>max){
array1[i][j]=max;
}
}
max_j_value [j] = max;
for(int i=0;i<m;i++){
if (array1[i][j]==max){
max_j [j] = i;
}
}
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(min_i_value[i]==max_j_value[j]){
printf("%d,(%d,%d)\n",max_j_value[j],min_i[i],max_j[j]);
}
}
}
return 0;
}
它返回 0(0,2),我不明白为什么。
您没有正确计算行和列的最小值和最大值。你的分配应该被撤销。
array1[i][0]=min;//calculating min value in a row
for(int j=0;j<n;++j){
if (array1[i][j]<min){
array1[i][j]=min;
}
}
应该是
min = array1[i][0];
for(int j=0;j<n;++j){
if (array1[i][j]<min){
min = array1[i][j];
}
}
对于计算最大值的循环也是如此。