C++ 二维数组与指针

//从键盘输入R行C列二维整型数组,找出每一行的次最大值并显示出来。要求:
//
//(1)R和C为符号常量;
//
//(2)二维数组是动态申请生成的;
//
//(3)每一行的次最大值是利用单独的函数调用获得的;
//
//(4)对数组元素的访问以及函数参数声明等都是利用指针实现的。

#include "stdio.h"
#include "iostream"
#include "string.h"
#define R 2
#define C 4
using namespace std;
void cmax(int* q, int k, int h);
int main(int argc, char* argv[])
{
 cout << "请输入" << R << "行" << C << "列的数组:";
 int i, j;
 int(*p)[C];
 p = new int[R][C];
 for (i = 0; i < R; i++)
  for (j = 0; j < C; j++)
   cin >> *(*(p + i) + j);
 if (C < 2) cout << "每行无次最大值!";
 else for (i = 0; i < R; i++)
  cmax(*(p + i), C, i);
 delete []p;
 return 0;
}
void cmax(int* q, int k, int h)
{
 int r, s, temp, flag = 0;
 for (r = 0; r < C - 1; r++)
 {
  for (s = 0; s < C - r - 1; s++)
  {
   if (*(q + s) > * (q + s + 1))
   {
    temp = *(q + s);
    *(q + s) = *(q + s + 1);
    *(q + s + 1) = temp;
   }
  }
 }

 r = C - 1;

 while (r > 0)
 {
  if (*(q + r) != *(q + r - 1))
  { 
   cout << "第" << h + 1 << "行的次最大值为:" << *(q + r - 1) << '\n';
   flag = 1;
   break;
  } 
  
  if (r = 1) cout << "第" << h + 1 << "行无次最大值" << '\n';
  r--;
 }
  
}

C++的作业一

  1. 二维数组在内存里是以先行后列的形式储存的。若指针p指向数组a[0][0],则p+1指向a[1][0],a[i][j]用指针表示则为*(*(p+i)+j)。
  2. C中通过malloc()和free()两个函数进行内存的申请和释放,C++中用new和delete两个运算符进行内存的申请和释放。
  3. 为了方便找到此最大值,直接用了冒泡排序,方便处理无次最大值等情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值