c++二维指针求每行每列次大值
来源:互联网 发布:浪潮软件股票走势 编辑:程序博客网 时间:2024/06/05 15:25
按照要求,必须用指针,且返回值必须要指针。可能有些许问题,但是运行结果暂时无误:
/*从键盘输入R行C列二维整型数组,找出每一行的次最大值并显示出来。要求:(1)R和C为符号常量;(2)二维数组是动态申请生成的;(3)每一行的次最大值是利用单独的函数调用获得的;(4)对数组元素的访问以及函数参数声明等都是利用指针实现的。*//*1 2 3 4 55 2 4 1 118 4 5 9 699 88 4 44 0*/#include<iostream>#include<fstream>using namespace std;void scanf_num(int **p, int row, int col);void print_num(int **p, int row, int col);int *second_num(int *p, int col, int &max2);void file_write(int **p, int *second, int row, int col);int main(){int max2;int row, col;cout << "请输入行列:";cin >> row >> col;int **p = new int*[row];int *second = new int[row];for(int i = 0; i < row; i++)p[i] = new int[col];//读入数值scanf_num(p, row, col);//找次大值for(int i = 0; i < row; i++){*(second + i) = *second_num(*(p + i), col, max2);}//显示数值cout << "输入的数是" << row << "行" << col << "列:" << endl;print_num(p, row, col);cout << "每行的次大值一次是:\n";for(int i = 0; i < row; i++){cout << *(second + i) << " ";}cout << endl;file_write(p, second, row, col);delete p;delete second; return 0;}//读入函数void scanf_num(int **p, int row, int col){for(int i = 0; i < row; i++){for(int j = 0; j < col; j++){cin >> *(*(p + i) + j);}}}//输出函数void print_num(int **p,int row,int col){for(int i = 0; i < row; i++){for(int j = 0; j < col; j++){cout << *(*(p + i) + j) << " ";}cout << endl;}}int *second_num(int *p,int col,int &max2){int max1;int i;max1 = max2 = *p;if(*(p + 1) < *(p))max2 = *(p + 1);for(i = 1; i < col; i++){if(*(p + i) > max1){max2 = max1;max1 = *(p + i);}if(*(p + i) > max2&&*(p + i) < max1)max2 = *(p + i);}return &max2;}void file_write(int **p, int *second, int row, int col){ofstream fout("file.txt");if(!fout){cout << "文件读取失败!" << endl;}fout << "输入的数是" << row << "行" << col << "列:" << endl;for(int i = 0; i < row; i++){for(int j = 0; j < col; j++){fout << *(*(p + i) + j) << " ";}fout << endl;}fout << "每行的次大值一次是:\n";for(int i = 0; i < row; i++){fout << *(second + i) << " ";}fout << endl;fout.close();}在要求中,次最大值用循环查找,设置两个变量,一个存放最大值,一个存放小于最大值但大于其他的值,最后返回即可,题目总体来说比较简单,但是考察到了二维指针,次最大值,文件读取等。
阅读全文
0 0
- c++二维指针求每行每列次大值
- 二维数组求平均数(每行/每列)
- 求二维数组每行元素之和
- C语言:【面试题】在二维数组中,每行每列都按照递增的顺序排序,判断数组中是否包含一个数。
- 在每行、每列递增的二维数组中找出给定的target 的位置
- c 二维指针测试
- 求每行每列都有序的一个矩阵的第k大的值
- uva11082 知道矩阵每行每列数字之和 求矩阵每一个元素 最大流
- 求一个二维数组每列的最小值
- 求一个二维数组中每列的最小值
- 一个H行L列的二维矩阵数组(整形),求每行元素总和,并将每行总和排序输出
- 二维数组中查找数据(该数组每行从左至右递增,每列从上至下递增)
- [C]二维数组与指针
- C指针与二维数组
- C 指针与二维数组
- C语言二维数组指针
- <C++>指针和二维数组
- 趣味魔方 每行每列对角线的和相等 C语言
- hdu 6215(技巧)
- 华为机试题-约瑟夫问题
- AutoML 学习
- linux ssh免密码登陆
- cent os 6.3部分命令
- c++二维指针求每行每列次大值
- 作业
- ajax&promise
- JavaSE_day1-3(笔记)
- 5.1 hashlib.py
- eclipse maven install 没反应
- scala隐式转换
- JS判断客户端是手机还是PC
- 文本摘要学习