欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c++复习知识点总结.doc

    • 资源ID:27736144       资源大小:68KB        全文页数:13页
    • 资源格式: DOC        下载积分:4金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c++复习知识点总结.doc

    /*挑战题把这个程序彻底变成c版的。恢复早期的c头文件把函数全部放在主函数前面颜色的设置和相关头文件保留,但是请加上注释取消对象输入和输出全部恢复到c将公布前三名修改成功者,之后本任务结束时间大约在一周内2014-03-21到2014-03-28*/功能:用菜单方式管理C+语言中大部分基础程序构造知识点,为数据结构的程序设计做好准备。/程序名:C+语言常见知识点复习系统#include <iostream.h>#include <windows.h> #include <fstream.h> enum returninfosuccess,fail; /用枚举类型保存各种返回信息的英语单词,以便分类处理const int ENDMARK = 9999; /定义输入数据结束标志const int ARRAYMAXLENTH = 21; /定义数组大小, /技巧:故意不用0单元,第几个逻辑数据就在第几个单元中const int CUTTINGLINESTART = 1; /定义切分线开始位置const int CUTTINGLINELENGTH = 25; /定义切分线长度/定义一个结点类对象nodeclass nodepublic:node();/构造函数node(int initdata,node *initnext = NULL); /构造函数重载/由于本处已经考虑新结点的链域为空,后面将全部不考虑这个问题node();/析构函数int data;/数据域node *next;/结点指针 /此处调用的对象本身,属于递归;node:node(int initdata,node *initnext)/* *构造函数重载,用于非默认情况下的一种自定义node对象的生成方法。 */data = initdata;next = initnext;/定义C+语言中知识点复习类对象class Cskillstudy/定义一个功能类Cskillstudyprivate:node *headp; /链表的头结点指针public:Cskillstudy(); /构造函数Cskillstudy(); /析构函数void exchange2nums(int &num1,int &num2); /数据交换函数int addinteger(int num1,int num2); /两个整数相加并返回结果void countnums(int array,int arraylenthnow,int &countpos,int &countneg,int &countzero); /统计正、负以及零的数据个数 void getarraynums(int array,int &arrayposnow); /从键盘读取数组的数据int accumulator(int array,int arraylenthnow); /整型数组中的数据累加int factorial(int num); /阶乘运算,即累乘器multiplierint combinationnum(int m,int n); /组合数的计算returninfo getmaxmin(int array,int arraylenthnow,int &max,int &min); /求多个整型数据的最大值和最小值returninfo sort3nums(int &num1,int &num2,int &num3);/三个整型数据的排序returninfo processlinklist(int num1,int num2,int num3);/用三个结点构成一个链表void displaylinklist(); /显示链表中的数据信息void releaselinklist(); /清空链表数据并且回收空间returninfo fileprocess();/文件操作;Cskillstudy:Cskillstudy()headp = new node; /申请新结点,作为头结点headp->next = NULL; /头结点的地址域预设为空地址,本构造函数结束后headp已经存在int Cskillstudy:addinteger(int num1,int num2)/* * 两个整数加法运算:除了学习最简单的加法器S=X+Y外,主要学习函数中多个数据作为参数 * 传进来,利用函数名把一个值的计算结果传回去的方法。 */int result;result = num1 + num2;/加法器return result;void Cskillstudy:countnums(int array,int arraylenthnow,int &countpos, int &countneg,int &countzero)/* * 分别统计出正数、负数、零的个数,学习计数器C=C+1的使用,通过把数组中的一批数据 * 传入函数中,然后传回去统计结果在调用处显示。学习把数组存储的多个数据作为参数 * 传入,处理后把多个数据作为参数传出的函数关系,而文件名处可以用无参数返回类型。 */countpos = 0;countneg = 0;countzero = 0;/所有数据种类计数器初始值清零for(int arrayposnow = 1;arrayposnow <= arraylenthnow;arrayposnow+)if(arrayarrayposnow > 0)countpos=countpos+1;/计数器,可以简写为countpos+;else if(arrayarrayposnow < 0)countneg=countneg+1;elsecountzero=countzero+1;int Cskillstudy:accumulator(int array,int arraylenthnow)/* * 数组数据的累加:学习用循环结构控制数组数据的读取,学习累加器S=S+N, * 学习把数组名作为参数传进去,通过函数名返回一个计算结果。 */int addresult = 0;for(int arrayposnow = 1;arrayposnow <= arraylenthnow;arrayposnow+)addresult = addresult+arrayarrayposnow;/累加器return addresult;int Cskillstudy:factorial(int num)/* *本函数学习C语言的阶乘运算,也是累乘器M=M*N */int result = 1;for(int i = 1;i <= num; i+)result =result * i;/累乘器return result;int Cskillstudy:combinationnum(int n,int m)/* * 组合数的计算:从n个不同元素中,任取m(mn)个元素并成一组,叫做从n个不同元素中 * 取出m个元素的一个组合;其所有组合的个数,叫做从n个不同元素中取出m个元素的组合数。 * 用符号c(n,m) 表示。学习多次调用同一个函数。 */int cnm;if(n<m | m < 0 | n < 0)return -1;/此处约定用-1代表失败,因为使用了函数名来返回计算结果,故不能用fail返回elsecnm = factorial(n)/(factorial(m)*factorial(n-m);return cnm;returninfo Cskillstudy:getmaxmin(int array,int arraylenthnow,int &max,int &min)/* * 求多个数据的最大值和最小值:可以学习线性结构扫描式处理算法和循环结构的使用, * 熟练掌握求最大值和最小值的方法。多个数据返回时,文件名依然可以返回其他信息,如成功。 */min = max = array1;/约定第一个数据为最初的最大值和最小值for(int arrayposnow = 2;arrayposnow <= arraylenthnow;arrayposnow+) /技巧:初始值已经是1号单元的,所以从2号单元开始扫描if(max < arrayarrayposnow)max = arrayarrayposnow;/扫描完毕时,最大值已存入maxif(min > arrayarrayposnow)min = arrayarrayposnow;/扫描完毕时,最小值已存入minreturn success;returninfo Cskillstudy:sort3nums(int &num1,int &num2,int &num3)/* * 三个数据的排序:学习利用两个数据交换,掌握简单的排序思路。同时学习多个数据 * 传入和同样的数据量传出的函数程序设计技巧。 */if(num1 > num2)exchange2nums(num1, num2);/if语句只有一句可以写在一行if(num1 > num3)exchange2nums(num1, num3);/数据量少的情况下的排序算法if(num2 > num3)exchange2nums(num2, num3);/虽然非通用,但是抽象后可以通用return success;returninfo Cskillstudy:processlinklist(int num1,int num2,int num3)/* * 链表的三个结点的挂链和数据显示:学习结点的定义,用最原始的方式逐个挂上结点 * 来构造链表,然后启动通用的链表显示数据函数显示所有数据。 */int num;node *newnodep;/*使用尾插法向链表插入数据,此段程序故意分步骤写出,如果把lastnodep先行定义,则和下面两次增加数据统一,就可以用循环结构控制多个数据的挂链。其他的挂链构建链表法包括头插法,一直挂在第一个位置上,还有保持排序插入构建法。效果均不同,根据需要选用*/num=num1;/为了下面的语句统一以便后面抽象成循环结构控制挂链新的结点而转存一次newnodep = new node(num); /申请新的结点空间同时把数据存入结点数据域headp->next = newnodep; /注意:headp在构造函数中已经设计好,所以此处直接使用cout<<"向链表尾部挂上新数据 "<<num1<<" 后"<<endl;displaylinklist();/显示链表中所有数据信息/*向链表插入第二个数据*/node *lastnodep = headp->next;/此处,故启用一个最后结点指针指向链表的最后一个结点num=num2;newnodep = new node(num); lastnodep->next = newnodep; lastnodep = newnodep;/cout<<"向链表尾部挂上新数据 "<<num2<<" 后"<<endl;displaylinklist();/*向链表插入第三个数据*/num=num3;newnodep = new node(num); lastnodep->next = newnodep; /下面没写lastnodep = newnodep;是因为三个数据已经结束cout<<"向链表尾部挂上新数据 "<<num3<<" 后"<<endl;displaylinklist();return success;returninfo Cskillstudy:fileprocess()/* *文件(data.txt)中存入数量不等的整数,读入后用循环写入链表,然后把链表所有 *数据增加100,再写入数组,然后再把所有数据写入结果文件(result.txt)中。 * data.txt文件中的数据最后一项数据之后要求没有任何符号(包括空格符、换行符) * 否则系统就会默认数据没有读完,导致多读 */node *searchp = headp;/*从文件(data.txt)中读入数量不等的整数*/int count = 0; /读入数据个数计数器ifstream in("data.txt");if(!in)return fail; elseint data;node *newnodep;cout<<"开始从文件中读入数据并且同时显示."<<endl;cout<<"文件中数据如下:"<<endl;while(!in.eof()in>>data; /读入数据cout<<data<<" " /显示读入的数据newnodep = new node(data);/开始挂入链表 searchp->next = newnodep; searchp = newnodep; count=count+1; /计数器cout<<endl<<endl<<"文件中的数据已经转入链表."<<endl;/*把链表所有数据增加100*/searchp = headp->next;while(searchp != NULL)searchp->data = searchp->data + 100; /全部链表数据同样处理的思路searchp = searchp->next; /链表中指针向后移动的标准写法cout<<"所有数据加上100的运算已经结束."<<endl;cout<<"运算结果如下:"<<endl;displaylinklist();/*数据转入数组*/int *temparray = new intcount,arrayposnow = 0; /高级技巧,申请一个动态数组 /这个数组故意使用了0单元,以区别上面的0单元空置searchp = headp->next;while(searchp != NULL) temparrayarrayposnow = searchp->data;arrayposnow+; / 标注/上两句可以简写成:temparrayarrayposnow+ = searchp->data;请对比标注 searchp = searchp->next;cout<<endl<<endl<<"数据已经转入数组."<<endl;/*再把所有数据写入结果文件(result.txt)中*/ofstream out("result.txt");if(!out)return fail; elsefor(arrayposnow = 0;arrayposnow < count;arrayposnow+)out<<temparrayarrayposnow<<" "cout<<endl<<endl<<"数据已经重新写入文件."<<endl;cout<<"打开文件中,请稍候."<<endl;ShellExecute(NULL,"open","result.txt",NULL,NULL,SW_SHOWNORMAL);/*关闭文件流*/in.close();out.close();return success;void Cskillstudy:getarraynums(int array,int &arrayposnow)/* *函数功能:向给定的数组中输入一定个数的数据,并返回数组数据和数据个数 */int buffercache; /设置一个变量存储缓存区数据信息int overcount = 0; /记录输入超界数据个数arrayposnow = 0; /按照约定数组下标从1开始使用,但是此时初值依然设置为0cout<<"请用空格分开一次输入多个整数,"<<endl;cout<<"以"<<ENDMARK<<"标志结束输入,个数超过"<<ARRAYMAXLENTH-1<<"的一律不承认:"<<endl;cin>>buffercache; /向缓存区输入一个数据while(buffercache != ENDMARK)if(arrayposnow < ARRAYMAXLENTH-1) /判断:如果数组接收到数据个数小于数组最大接收容量 arrayposnow+; /切换到下一个地址,注意此句与下面语句的次序 arrayarrayposnow = buffercache;/ 标注/上两句可以简写成:array+arrayposnow = buffercache;注意区别标注 else /判断:超越数组最大容纳容量overcount+; /越界数据个数加1cin>>buffercache; if(overcount > 0)cout<<endl<<"【重要提示】输入数据量越界,忽略后面"<<overcount<<"个数据,前"<<ARRAYMAXLENTH-1<<"个数据依然有效。"<<endl;void Cskillstudy:displaylinklist()/* *函数功能:形象化显示链表指针headp指向的链表全部数据信息 */node *searchp = headp->next;cout<<"链表中的全部数据为: Headp-> |->"while(searchp != NULL) cout<<" "<<searchp->data; if (searchp->next = NULL) cout<<" |" /根据先处理意外后处理正常的规则显示最后一个结点else cout<<" |->" searchp = searchp->next; /显示中间的结点cout<<endl<<endl; void Cskillstudy:releaselinklist()/* *函数功能:释放headp指向的所有链表结点的空间,还给操作系统 */node *searchp = headp->next,*followp = headp;/ while(searchp != NULL) followp = searchp;searchp = searchp->next;delete followp; /释放空间的语句headp->next=NULL;void Cskillstudy:exchange2nums(int &num1,int &num2)/* *函数功能:两个整型数据的交换 */int temp;temp = num1;num1 = num2;num2 = temp;/本功能过于基本且简单,所以三行合在一行/class interfacebasepublic:Cskillstudy Cskillstudyonface; /定义一个对象Cskillstudyonfacevoid clearscreen(void);void showmenu(void);void processmenu(void);void showcuttingline(void);void interfacebase:clearscreen(void) system("cls");void interfacebase:showcuttingline(void)/* *函数功能:绘制系统窗口封面显示时的分割线 */for(int i = 0;i < CUTTINGLINESTART+CUTTINGLINELENGTH;i+)if(i<CUTTINGLINESTART)cout<<" " /前面的空格显示elsecout<<"=" /真正的分割线cout<<endl;void interfacebase:showmenu(void) cout<<"="<<endl;cout<<" C+语言常见知识点复习系统 "<<endl;cout<<"="<<endl; cout<<"软件功能说明: "<<endl; cout<<" 用菜单的方式管理数个C+语言必须掌握的"<<endl; cout<<"程序构造知识点,为数据结构的程序设计做"<<endl; cout<<"好准备。 "<<endl; cout<<"="<<endl; cout<<" 功能菜单 "<<endl; cout<<"="<<endl; cout<<" 1.两个整数加法运算 "<<endl; cout<<" 2.统计正负数或零的个数 "<<endl; cout<<" 3.数组数据的累加 "<<endl;cout<<" 4.组合数的计算 "<<endl;cout<<" 5.求多个数据的最大值和最小值 "<<endl;cout<<" 6.三个数据的排序 "<<endl;cout<<" 7.链表的三个结点的挂链和数据显示 "<<endl;cout<<" 8.文件链表数组等切换,数据全部加100 "<<endl;cout<<" 0.结束程序 "<<endl;cout<<"="<<endl;cout<<"请输入您的选择:"void interfacebase:processmenu(void)int returnvalue;int num1, num2, num3;/用于基本测试数据int arrayARRAYMAXLENTH, arraylenthnow, arrayposnow;char menuchoice; cin >>menuchoice;switch(menuchoice) /根据用户的选择进行相应的操作case '1':cout<<"请输入两个整数(空格隔开):"cin>>num1>>num2;/下面的调用学习C中实现多数据进入、单数据回返的函数调用num3 = Cskillstudyonface.addinteger(num1, num2);showcuttingline();cout<<num1<<" + "if(num2 >= 0)cout<<num2;elsecout<<"("<<num2 <<") "cout<<" = "<<num3<<endl;showcuttingline();break;case '2':/下面的调用是向给定的数组中输入数据,并返回数组数据和数据个数Cskillstudyonface.getarraynums(array, arraylenthnow);/下面的调用学习C中实现多个数据传入和多个数据传出的函数调用Cskillstudyonface.countnums(array, arraylenthnow, num1, num2, num3);showcuttingline();cout<<"正数的个数:"<<num1<<endl;cout<<"负数的个数:"<<num2<<endl;cout<<"零 的个数:"<<num3<<endl;showcuttingline();break;case '3':Cskillstudyonface.getarraynums(array, arraylenthnow);showcuttingline();/下面的调用学习C中实现用数组来管理数据,数组名作为参数传进去,返回一个计算结果num3 = Cskillstudyonface.accumulator(array, arraylenthnow);for(arrayposnow = 1;arrayposnow < arraylenthnow;arrayposnow+)if(arrayarrayposnow >= 0)cout<< arrayarrayposnow<<" + "elsecout<<"("<<arrayarrayposnow<<") + "cout<<arrayarrayposnow<<" = "<<num3<<endl;showcuttingline();break;case '4':cout<<"请输入两个正整数n、m(空格隔开,n>=m):"cin>>num1>>num2;/下面的调用学习C中实现组合数的计算num3 = Cbinationnum(num1, num2);showcuttingline();if(num3 != -1)cout<<"组合计算结果为 C(n'm) = "<

    注意事项

    本文(c++复习知识点总结.doc)为本站会员(模**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开