书签 分享 收藏 举报 版权申诉 / 40
上传文档赚钱

类型《c+程序设计》《C+程序设计》(第2版)课后习题答案.doc

  • 上传人(卖家):momomo
  • 文档编号:5780891
  • 上传时间:2023-05-08
  • 格式:DOC
  • 页数:40
  • 大小:389KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《c+程序设计》《C+程序设计》(第2版)课后习题答案.doc》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    c+程序设计 c+ 程序设计 课后 习题 答案
    资源描述:

    1、第2部分 习题解答75第1章 面向对象程序设计概述75第2章 C+基础知识85第3章 类和对象87第4章 继承与组合91第5章 多态性与虚函数94第6章 面向对象的妥协98第7章 运算符重载102第8章 模板106第9章 输入/输出流109第10章 异常处理111I第2部分 习题解答第1章 面向对象程序设计概述一、简答题简述面向过程程序设计和面向对象程序设计的编程思想,体会面向对象程序设计的优点。【答案要点】面向过程程序设计的编程思想:功能分解、逐步求精、模块化、结构化。当要设计一个目标系统时,首先从整体上概括出整个系统需要实现的功能,然后对系统的每项功能进行逐层分解,直到每项子功能都足够简单

    2、,不需要再分解为止。具体实现系统时,每项子功能对应一个模块,模块间尽量相对独立,通过模块间的调用关系或全局变量而有机地联系起来。面向对象程序设计的编程思想:(1)客观世界中的事物都是对象(object),对象之间存在一定的关系。(2)用对象的属性(attribute)描述事物的静态特征,用对象的操作(operation)描述事物的行为(动态特征)。(3)对象的属性和操作结合为一体,形成一个相对独立、不可分的实体。对象对外屏蔽其内部细节,只留下少量接口,以便与外界联系。(4)通过抽象对对象进行分类,把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是其所属类的一个实例。(5

    3、)复杂的对象可以用简单的对象作为其构成部分。(6)通过在不同程度上运用抽象的原则,可以得到一般类和特殊类。特殊类继承一般类的属性与操作,从而简化系统的构造过程。(7)对象之间通过传递消息进行通信,以实现对象之间的动态联系。(8)通过关联表达类之间的静态关系。与传统的面向过程程序设计相比,面向对象程序设计的优点如下:(1)从认识论的角度看,面向对象程序设计改变了软件开发的方式。软件开发人员能够利用人类认识事物所采用的一般思维方式来进行软件开发。(2)面向对象程序中的数据的安全性高。外界只能通过对象提供的对外接口操作对象中的数据,这可以有效保护数据的安全。(3)面向对象程序设计有助于软件的维护与复

    4、用。某类对象数据结构的改变只会引起该类对象操作代码的改变,只要其对外提供的接口不发生变化,程序的其余部分就不需要做任何改动。面向对象程序设计中类的继承机制有效解决了代码复用的问题。人们可以像使用集成电路(IC)构造计算机硬件那样,比较方便地重用对象类来构造软件系统。二、编程题【程序参考代码】/*学生信息管理系统C语言源代码student.c*/#include /*包含输入/输出头文件*/#include /*包含字符串处理头文件*/#include #define MAXSIZE 100 /*能够处理的学生总人数,可以随意修改*/typedef struct /*用于存放生日信息的结构体*/

    5、 int year; int month; int day;Date;typedef struct Stud /*用于存放学生信息的结构体*/char Num12; /*学号为11位*/ char Name11; /*姓名,最多5个汉字*/ char Sex2; /*性别,男记为m,女记为f */Date Birthday; /*出生日期*/ float English, DataStructure, CPlusPlus; /*三门课成绩*/ float Sum, Average; /*总成绩、平均成绩*/Student;char CurFile40; /*存放当前正在操作的磁盘文件的文件名*

    6、/int IsOpen=0; /*当前是否有磁盘文件被打开标志*/int found=0; /*在查找学生信息时是否找到标志*/Student studMAXSIZE; /*用于存放读入内存中的所有学生信息的全局数组*/int Index=0; /*存放实际学生人数的全局变量*/*各自定义函数原型声明*/void Create(); /*新建学生信息文件*/ void Open(); /*打开学生信息文件,并读取学生信息到全局数组stud中*/void Display(); /*显示学生信息*/void Search(); /*查询学生信息*/int SearchNum(char* Num);

    7、 /*按学号查询学生信息*/int SearchName(char* Name); /*按姓名查询学生信息*/void Append(); /*添加学生信息*/void Modify(); /*修改学生信息*/void Delete(); /*删除学生信息*/void Total(); /*统计所有学生某一科目总成绩*/void Sort(); /*学生信息排序*/ void Backup(); /*备份学生信息*/void menu() /*系统功能菜单*/ int choice; /*用于保存用户对功能菜单的选择结果*/for( ; ; ) /*显示系统功能菜单*/printf(n*n);

    8、printf(* 学生信息管理系统 *n); printf(*n); printf(* 1新建学生信息文件 *n); printf(* 2打开学生信息文件 *n); printf(* 3显示学生信息 *n); printf(* 4查询学生信息 *n); printf(* 5添加学生信息 *n);printf(* 6修改学生信息 *n);printf(* 7删除学生信息 *n);printf(* 8统计学生信息 *n);printf(* 9学生信息排序 *n); printf(* 10备份学生信息 *n); printf(* 0退出系统 *n); printf(*n); printf( 请选择要

    9、执行的操作(08):_); scanf(%d, &choice); switch(choice) case 1: Create(); break; case 2: Open(); break; case 3: Display(); break; case 4: Search(); break;case 5: Append(); break;case 6: Modify(); break;case 7: Delete(); break;case 8: Total(); break; case 9: Sort(); break;case 10: Backup(); break; case 0: r

    10、eturn; default: printf(选择错误!请重新选择。n);/*switch结束*/*for结束*/void ReOrEx()/*在用户执行完一项系统功能后,可以选择:是继续运行系统,还是退出系统*/int n; printf(n*n);printf(* 1. 返回上级菜单 *n); printf(* 0. 退出系统 *n);printf(*n);printf( 请选择(1/0)?_); scanf(%d,&n);if(n=0)printf(n*n); printf(* 谢谢使用本系统! *n); printf(*n); exit(1);void main()printf(*n)

    11、;printf(* 欢迎使用学生信息管理系统! *n);printf(*n);system(pause); menu();/*系统功能以菜单的形式提供给用户*/ printf(n*n);printf(* 谢谢使用本系统! *n);printf(*n);/*main函数结束*/*各自定义函数实现代码*/int New(char* FileName) /*创建磁盘文件*/FILE *fp; if(fp=fopen(FileName,w)=NULL) return 0; else fclose(fp); Index=0;return 1; void Create() /*新建学生信息文件*/char

    12、 FileName40;printf(请输入新建文件的名称:);scanf(%s, &FileName);if(strcmp(FileName, studentbackup) strcat(FileName, .dat);if(!New(FileName)printf(%s文件创建失败!n, FileName);else strcpy(CurFile, FileName); printf(%s文件创建成功!n, FileName);else printf(%s是备份文件,禁止创建与此文件同名的文件!n,FileName); ReOrEx();void Open() /*打开学生信息文件*/ch

    13、ar FileName40;printf(请输入要打开的数据文件的名称:);scanf(%s, &FileName);if(strcmp(FileName, studentbackup)strcat(FileName, .dat); if(IsOpen=0) FILE *fp; if(fp=fopen(FileName, rb)=NULL) printf(%s文件打开失败!n, FileName); elseIsOpen=1;Index=0; while(!feof(fp)fread(&studIndex, sizeof(struct Stud), 1, fp);Index+;Index-;p

    14、rintf(学生总人数为:%dn, Index);fclose(fp); printf(%s文件打开成功!n, FileName); strcpy(CurFile, FileName); elseprintf(%s文件已经打开!n, FileName); elseprintf(%s是备份文件,禁止打开此文件!n, FileName);ReOrEx();void Display() /*显示全部学生信息*/int i; if(!strcmp(CurFile, ) printf(当前并未打开或新建文件,无法显示!n); elseprintf(n 显示所有学生成绩信息nn);printf(%-12s

    15、%-11s%-5s%-14s%-12s%-15s%-12s%-12s%-12sn, Num, Name, Sex, Birthday, English, DataStructure, CPlusPlus, Sum, Average); for(i=0; iIndex; i+) printf(%-12s%-11s%-5s%4d/%2d/%2d%10.2f%15.2f%12.2f%12.2f%12.2fnn, studi.Num, studi.Name, studi.Sex, studi.Birthday.year, studi.Birthday.month, studi.Birthday.day

    16、, studi.English, studi.DataStructure, studi.CPlusPlus, studi.Sum, studi.Average);ReOrEx();int SearchNum(char* Num) /*按学号查询学生信息*/int i;for(i=0; Index; i+)if(!strcmp(studi.Num, Num)printf(对应此学号的学生信息存在!n);found=1;return i;printf(没有此学生的信息!n);found=0;return 0;int SearchName(char* Name) /*按姓名查询学生信息*/int i

    17、;for(i=0; i=MAXSIZE)printf(错误! 学生信息已满,不能添加!n);else printf(执行添加学生信息操作!n);printf(n请输入学生学号:);scanf(%s, Num);location=SearchNum(Num);if (!found) printf(可以进行添加操作!n);printf(n请输入学生姓名:); scanf(%s, Name); printf(n请输入学生性别:); scanf(%s, &Sex); printf(n请输入学生出生年份:); scanf(%d, &Year); printf(n请输入学生出生月份:); scanf(%d

    18、, &Month); printf(n请输入学生出生日:); scanf(%d, &Day); printf(n请输入学生英语成绩:); scanf(%f, &English); printf(n请输入学生数据结构成绩:); scanf(%f, &DataStructure); printf(n请输入学生C+成绩:); scanf(%f, &CPP); printf(n); strcpy(studIndex.Num, Num); strcpy(studIndex.Name, Name); strcpy(studIndex.Sex, Sex);studIndex.Birthday.year=Ye

    19、ar; studIndex.Birthday.month=Month; studIndex.Birthday.day=Day;studIndex.English=English;studIndex.DataStructure=DataStructure;studIndex.CPlusPlus=CPP;studIndex.Sum=English+DataStructure+CPP;studIndex.Average=studIndex.Sum/3;Index+;printf(插入一条学生信息操作成功!n);else printf(不能进行添加学生信息操作!n);void Save(char* F

    20、ileName) /*学生信息存盘*/FILE *fp;int i;if(fp=fopen(FileName, wb)=NULL)printf(文件打开失败!);return;for(i=0;I Index; i+)fwrite(&studi, sizeof(struct Stud), 1, fp);fclose(fp);void Append() /*添加学生信息*/if(!strcmp(CurFile, ) printf(当前并未打开或新建文件,无法添加!n);elseAddData(); Save(CurFile); ReOrEx();void ModifyData() /*修改一条学生

    21、信息*/char Num12;char Name10;char Sex2;float English, DataStructure, CPP;int Year, Month, Day;int location;printf(n执行修改学生信息操作!nn);printf(请输入将要修改的学生的学号:);scanf(%s, Num);location=SearchNum(Num);if (found) printf(可以进行修改学生信息操作!n);printf(n请输入学生姓名:);scanf(%s, Name);printf(n请输入学生性别:); scanf(%s, &Sex); printf

    22、(n请输入学生出生年份:); scanf(%d, &Year); printf(n请输入学生出生月份:); scanf(%d, &Month); printf(n请输入学生出生日:); scanf(%d, &Day); printf(n请输入学生英语成绩:); scanf(%f, &English); printf(n请输入学生数据结构成绩:);scanf(%f, &DataStructure); printf(n请输入学生C+成绩:); scanf(%f, &CPP); printf(n);strcpy(studlocation.Num, Num); strcpy(studlocation.

    23、Name, Name); strcpy(studlocation.Sex, Sex);studlocation.Birthday.year=Year; studlocation.Birthday.month=Month; studlocation.Birthday.day=Day;studlocation.English=English;studlocation.DataStructure=DataStructure;studlocation.CPlusPlus=CPP;studlocation.Sum=English+DataStructure+CPP;studlocation.Averag

    24、e=studIndex.Sum/3;printf(执行修改学生信息操作成功!n); else printf(不能进行修改学生信息操作!n);void Modify() /*修改学生信息*/if(!strcmp(CurFile, ) printf(当前并未打开或新建文件,无法修改!n); else ModifyData(); Save(CurFile);ReOrEx();int DeleteData()/*删除一条学生信息*/char Num12; int location,i;printf(n 执行删除学生信息操作!nn);printf(警告!学生信息一旦删除,将不可恢复。请小心使用该操作!n

    25、n);printf(请输入将要删除的学生的学号:n);scanf(%s, Num);location=SearchNum(Num);if(found)if(location!=MAXSIZE)for(i=location; iMAXSIZE; i+)strcpy(studi.Num, studi+1.Num); strcpy(studi.Name, studi+1.Name);strcpy(studi.Sex, studi+1.Sex);studi.Birthday.year=studi+1.Birthday.year;studi.Birthday.month=studi+1.Birthday

    26、.month;studi.Birthday.day=studi+1.Birthday.day;studi.English=studi+1.English;studi.DataStructure=studi+1.DataStructure;studi.CPlusPlus=studi+1.CPlusPlus;studi.Sum=studi+1.Sum;studi.Average=studi+1.Average;Index-;return 1;return 0;void Delete() /*删除学生信息*/if(!strcmp(CurFile, )printf(当前并未打开或新建文件,无法删除!n

    27、); elseif(DeleteData()Save(CurFile);printf(删除一条学生信息操作成功!n);else printf(不能进行删除操作!n);printf(删除一条学生信息操作失败!n);ReOrEx();float GetOneCourseSum(int n) /*计算所有学生某一科目的总成绩*/float N=0;int i;switch(n)case 1:/计算英语总成绩for(i=0; iIndex; i+) N+=studi.English;break;case 2:/计算数据结构总成绩for(i=0; iIndex; i+) N+=studi.DataStructure;break;case 3:/计算C+总成绩 for(i=0; i=1 & change; -i)chang

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《c+程序设计》《C+程序设计》(第2版)课后习题答案.doc
    链接地址:https://www.163wenku.com/p-5780891.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库