阵列最小元素 C 语言问题

【5分】P. 阵列最小元素

时间限制
1s
内存限制
128MB

题目描述

输入
测试次数t
每组测试数据为:
n、m
n行m列个数据

输出
对每组测试数据输出最小元素及其行、列位置。

例子:
输入
2
3 4
1 2 3 10
4 5 6 11
7 8 9 12
5 4
11.4 12.8 -10.5 9.87
323 12 34 54
3112 3 42 -123
31.43 653.23 12 43.43
13.4 345 432 132

输出
1 1 1
-123 3 4

C语言代码:

#include<stdio.h>

int main()
{
int t, n, m;
scanf("%d", &t); // 读入测试次数t
while(t--){
scanf("%d %d", &n, &m); // 读入n行m列
int i, j;
float a[100][100]; // 声明二维数组a
float min = 1000000; // 定义min为一个足够大的数,防止读入数据中比它小的数
int x = 0, y = 0; // 定义x、y存储最小数的行、列位置
for(i = 0; i < n; i++){
for(j = 0; j < m; j++){
scanf("%f", &a[i][j]); // 读入数据
if(a[i][j] < min){ // 如果读入的数比当前min小
min = a[i][j]; // 更新min
x = i + 1; // 更新x,注意行数从1开始算
y = j + 1; // 更新y,注意列数从1开始算
}
}
}
printf("%.0f %d %d\n", min, x, y); // 输出最小数、行位置、列位置
}
return 0;
}
#include <bits/stdc++.h>
using namespace std;

int t, n, m;
double a[1005][1005];

int main()
{
cin >> t;
while (t--) {
cin >> n >> m;
double minn = 1e9;
int x, y;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++) {
cin >> a[i][j];
if (a[i][j] < minn) {
minn = a[i][j];
x = i;
y = j;
}
}
cout << minn << " " << x << " " << y << endl;
}
return 0;
}
#include<stdio.h>
#include<limits.h>

int main()
{
    int t,n,m,i,j,min_i,min_j;
    double a[100][100];
    double min;

    scanf("%d", &t);
    while(t--){
        scanf("%d%d", &n, &m);
        for(i=0; i<n; i++)
            for(j=0; j<m; j++)
                scanf("%lf", &a[i][j]);
        min = INT_MAX;
        for(i=0; i<n; i++)
            for(j=0; j<m; j++)
                if(a[i][j]<min){
                    min = a[i][j];
                    min_i = i;
                    min_j = j;
                }
        printf("%.lf %d %d\n",min,min_i+1,min_j+1);
    }
    return 0;
}