一个9*9的矩阵,随机填入1-9之间的数字,写一个程序,检查矩阵,将含有1的行和列全部变为1。
#include <iostream>
using namespace std;
//一个9*9的矩阵,随机填入1-9之间的数字,写一个程序,检查矩阵,将含有1的行和列全部变为1
void fun(int (*mat)[9])
{
int m,k=0,n=0;
int h[9],w[9];
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
{
if(mat[i][j]==1)
{
h[k++] = i;//把对应的行标存到数组h中
w[n++] = j;//把对应的列标存到数组w中
}
}
}
//把1元素所在的行变成1
for(int i=0;i<k;i++)
{
m = h[i];
for(int j=0;j<9;j++)
{
mat[m][j]=1;
}
}
//把1元素所在的列变成1
for(int i=0;i<n;i++)
{
m = w[i];
for(int j=0;j<9;j++)
{
mat[j][m]=1;
}
}
}
void output(int (*mat)[9])
{
int i,j;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
printf("%5d",mat[i][j]);
}
printf("\n");
}
}
void main()
{
printf("请输入9阶矩阵的各个元素:\n");
int i,j;
int mat[9][9];
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
scanf("%d",&mat[i][j]);
}
printf("\n");
}
printf("未改变前的9阶矩阵如下:\n");
output(mat);
fun(mat);
printf("改变后的9阶矩阵如下:\n");
output(mat);
system("pause");
}
输出结果: