试题六
  阅读下列说明和C++程序,将应填入__(n)__处的字句写在答题纸的对应栏内.
[程序6说明]
  C++语言本身不提供对数组下标越界的判断.为了解决这一问题,在程序6中定义了相应的类模板,使得对于任意类型的二维数组,可以在访问数组元素的同时,对行下标和列下标进行越界判断,并给出相应的提示信息.
[程序6]
#include <iostream.h>
template <class T> class Array;
template <Class T> class ArrayBody {
 friend class Array<T>;
 T* tpBody;
 int iRows,iColumns,iCurrentRow;
 ArrayBody(int iRsz,int iCsz){
  tpBody = new T[iRsz*iCsz];
  iRows = iRsz;iColumns = iCsz;iCurrentRow = -1:
}
public;
 T& operator[](int j){
  bool row_error,column_error;
  row_error = column_error =false;
  try {
   if(iCurrentRow < 0 || iCurrentRow >= iRows)
    row_error = true;
   if(j<0 || j>= iColumns)
    column_error = true;
   if(row_error == true || column_ error == true)
    throw 'error';
  }
  catch(char){
   if(row_error == true)
    cerr << "行下标越界[" << iCurrentRow << "]";
   if(column_error = true)
    cerr << "列下标越界[" << j << "]";
   cout << "\n";
  }
  return tpBody[iCurrentRow * iColumns + j];
 }
 ~Arraygody(){delete[]tpBody:}
};
template <class T> class Array {
 ArrayBody<T> tBody;
 public;
  ArrayBody<T> & operator[](int i) {
   tBody.iCurrentRow=i;
   return tBody;
  }
 Array(int iRsz,int iCsz):tBody(iRsz,iCsz) { }
 };

void main()
{
 Array<int> a1(10,20);
 Array<double> a2(3,5);
 int b1;
 double b2; ·
 b1 = a1[-5][10]; //有越界提示:行下标越界[-5]
 b1 = a1[10][15]; //有越界提示:行下标越界[10]
 b1 = a1[1][4];  //没有越界提示
 b2 = a2[2][6];  //有越界提示:列下标越界[6]
 b2 = a2[10][20]; //有越界提示;行下标越界[10]列下标越界[20]
 b2 = a2[1][4];  //没有越界提示
}

转载于:https://www.cnblogs.com/djcsch2001/archive/2011/06/27/2091643.html

软件设计师2004年5月下午试题6(C++ 数组下标检测)相关推荐

  1. 软件设计师2008年12月下午试题4(C语言 动态规划)

    [说明] 某公司供应各种标准的营养套餐.假设菜单上共有n项食物m1,m2,-,mn,每项食物mi的营养价值为vi,价格为pi,其中i=1,2,-,n,套餐中每项食物至多出现一次.客人常需要一个算法来求 ...

  2. 软件设计师:二周目下午真题

    章节 章节 01 - 计算机组成原理与体系结构 07 - 法律法规与标准化与多媒体基础 02 - 操作系统基本原理 08 - 设计模式 03 - 数据库系统 09 - 软件工程 04 - 计算机网络 ...

  3. 软件设计师(软考中级)_下午题Java题总结

    创建型设计模式 创建模式是处理对象创建的设计模式,试图根据实际情况使用合适的方式创建对象:创建模式的主导思想为,将系统使用的具体类封装起来,隐藏这些具体类的实例创建和结合的方式. 创建型设计模式主要有 ...

  4. 软件设计师——数据流图设计(下午试题一)

    软件设计师备考笔记 上午题 下午题 计算机网络概述 数据流图设计(下午试题一) 程序设计语言基础知识 数据库设计(下午试题二) 标准化和知识产权 UML分析与设计(下午试题三) 数据库 面向对象程序设 ...

  5. 软件设计师c语言算法皇后,软件设计师历年试题-算法.ppt

    软件设计师历年试题-算法 1996年下午试题三 [E-R图] 1996年下午试题三 [问题] 填充下列 SQL 程序 3.1-3.4 中的 ①-⑦,使它们分别完成相应的功能:程序 3.1:统计参加比赛 ...

  6. 软件设计师 备考经历

    本人情况:计算机科学与技术 本科刚毕业,9月份开始准备 软件设计师,到11月考试,断断续续两个月,期间停停顿顿,有两周没有复习,,备考之前看过一些教程,给了我一些帮助,在备考的时候,我也得出一点心得, ...

  7. 软件设计师c语言做题技巧,干货!软件设计师备考攻略

    原标题:干货!软件设计师备考攻略 软件设计师属于软考中级.可能大家会觉得中级呀,听起来有点难,我一点基础也没有,怎么考中级啊. 大家不用慌,听上去好像很有难度,但如果你备考计划准备的好,其实是可以考过 ...

  8. 软件设计师java选做题_软件设计师难考吗?如何复习?

    软件设计师属于软考中级.可能大家会觉得中级呀,听起来有点难,我一点基础也没有,怎么考中级啊. 大家不用慌,听上去好像很有难度,但如果你备考计划准备的好,其实是可以考过的.为什么考试通过率不高,百分之二 ...

  9. 从程序员到软件设计师

    软件产业发展到今天,分工越来越细.程序员做为一个通用的称谓已经无法确切定义各种工作的特点和分类.正因为软件开发中各种职责区分不清,无论是刚刚写代码的新手还是具有多年经验的老手,一概被扣上程序员的通用名 ...

  10. 软件设计师考试(2018下半年)

    本人的情况:非计算机相关专业,相关的基础课只学过C语言和数据结构,自学的java. 因为想往互联网方向发展,就在18年9月份报名了软考中级"软件设计师"科目,11月10考结束,感觉 ...

最新文章

  1. Eclipse,Mycclipse自动补全快捷键设置
  2. win10不能访问局域网共享
  3. 马尔代夫旅游选岛全功略
  4. 第八天学习Java的笔记(方法有参无参,有返回值和无返回值)
  5. Oracle 把过程与函数说透
  6. apache和tomcat开启GZIP功能
  7. Linux版本tomcat下载及安装
  8. 网站实现点击 “加入收藏 ”功能 - 代码篇
  9. python中__init__.py是干什么的
  10. Spring框架中集合属性为对象的注入方法
  11. git log控制输出宽度
  12. servlet-servletContext简述
  13. windows上java调用gdal.jar报错
  14. THinkphp教程网址
  15. 在STM32上实现NTFS之4:GPT分区表的C语言实现(1):主GPT表头的实现
  16. 处理火狐浏览器地址栏点击出现 百度/58同城/爱淘宝 链接
  17. 第一周预习HTML标签(笔记可以不记,代码一定要敲)
  18. 小区综合业务系统/小区管理系统
  19. [原创]Netfilter源码分析-我来抛砖,望能引玉
  20. 【学习笔记】Python语言程序设计 北理工-嵩天

热门文章

  1. 复合索引的使用与创建时候的顺序有关 如果顺序颠倒 则不起作用
  2. 洛谷P3952 时间复杂度
  3. maven学习(五)——maven命令的组合使用
  4. [转]C#自定义应用程序配置文件App.config
  5. 数据库性能优化之SQL语句优化(下)
  6. nginx 四种策略
  7. 全网最详细的Windows里下载与安装Sublime Text *(图文详解)
  8. JS 获取上传文件的内容
  9. 8.10 数据库安全性II Day28
  10. 18.事件基础,event对象,clientX,clientY,keyCode