c++ 问题怎么做?记得不要用 printf 和 scanf。

二:程序编写题

题目名称:找最小数
题目描述:输入一个n行m列的二维数组1<=n<=100,1<=m<=100,找出其中最小数,输出它的值以及其所在行号和列号。

样例输入:
3 3
3 5 7
8 10 4
12 2 6
样例输出:
2 3 2

我的程序没有使用printf和scanf,用的是cout和cin,代码如下

#include<iostream>
using namespace std;
int main()
{
int n,m;
int a[100][100]={0};
cin>>n>>m;//输入数组的行数和列数
int i,j;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
cin>>a[i][j];
int min=a[0][0];
int min_i=1,min_j=1;//最小元素对应的行号和列号
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(a[i][j]<min)
{
min=a[i][j];//如果元素小于之前的最小值,把该元素的值赋给min
min_i=i+1;
min_j=j+1;//记下最小元素的行号和列号
}
}
}
cout<<endl;
cout<<min<<" "<<min_i<<" "<<min_j<<endl;
return 0;
}

运行结果如下

望采纳

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-09-07
搞不懂为什么说不要用printf 和scanf?用了这两个就不是C++了吗?C++的精髓在于class 面向对象。
代码就不写了,不用那两个,那就分别使用cin 和 cout来替代。using namespace std;
第2个回答  2021-09-06
#include<bits/stdc++.h>
using namespace std;
const int N=1e3;
int main(){
int t;
int n,m;
int x=0,y=0;//最小值下标
int min_1=100000;//最小值
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&t);//输入
if(min_1>t){
min_1=t;//记录最小值
x=i;//记录最小值的下标
y=j;
}
}
}
printf("%d %d %d",min_1,x,y);
return 0;
}
相似回答