c语言一道题1

来源:百度知道 编辑:UC知道 时间:2024/06/14 10:40:50
编一C程序,它按行优先次序读入一个n*n(n < 20)矩阵的元素(该矩阵n*n个元素都是整数,输入时相邻的整数用空格隔开。以-9999为输入的结束标记,-9999不是该矩阵的元素),找出这个矩阵的最小的元素,再输出该元素的行号和列号(行号和列号均1从开始)。

#include<stdio.h>
#include<math.h>
#define Len 20*20
int main()
{
int PrintRC(int Min,int n,int *matrix);

int matrix[Len];
int i,n,Min;
scanf("%d",&matrix[0]);
Min = matrix[0];
for(i = 1;i<Len;i++)
{
scanf("%d",&matrix[i]);
if(matrix[i] == -9999)
break;
/*确定最小的数*/
if(matrix[i] < Min)
Min = matrix[i];
}
/*根据元素个数确定矩阵的n*/
n = (int)ceil(sqrt(i));
printf("最小的数为:%d\n其所在矩阵中的位置为:\n",Min);

PrintRC(Min,&n,matrix);
return 0;
}
int PrintRC(int Min,int n,int *matrix)
{
int i,j,p;
for(i = 0;i<n;i++)
{
for(j = 0;j<n;j++)
{
/*根据假想的矩阵行号和列号确定真实的数组中的数组下标*/
p = i*n+j;
if(*(matrix+p) == -9999)
{
return 1;
}
if(*(matrix+p) == Min)
{
printf("行:%d ,列:%d\n",i+1,j