第一篇:C++复习题 程序填空
2009-2010学年第一学期《C++程序设计》期末考试复习题周景春
程序填空(10分)
1.使执行结果为100 #include
public:
Test(int aa){(○1)}
int Getx(){
(○2)
} private:int x;};
void main(){
Test xx(100);
cout< 答案:○1 X=aa ○return X 2.下面程序是应用C++多态性,计算矩形面积。在横线上填写适当语句使程序正确进行并得到给定程序结果.运行结果: 长:10 宽:20 矩形面积:200 半径:3 圆面积:28.26 # include virtualvoidshow_area()=0;};class Rectangle :public Shape{ pulic: Rectangle(double ll,double ww){L=ll;W=ww;} voidshow_area()(○3) private: float L,W;}; class Circle:public Shape{ Public: Circle(double rr){○} void show_area() cout<<”半径:”< 面 积:”<<3.14*R*R< doubleR;};voidmain(){Shape *p;Rectangle ○;CircleC(3); P&r; p->show_area();P=&c; p->show_area();} } 答案: ○cout<<”:长”< 一:'CRecordset' : base class undefined 解决方法:在工程的StdAfx.h头文件中添加:#include 二: m_dlg.m_database.Open(_T(“addresslist”));// 这个在编译时会出现错误,解决办法:可以同上:#include 三:建了一个控件,但想在类向导里面定义该控件的函数时找不到控件ID号(原因:是因为修改了主对话框的ID号) 主对话框.h 中把emun{中改成相应的ID_Dlg} 四:设置窗体背景的颜色: 在主窗体APP文件里代码:SetDialogBkColor(RGB(200,223,200),RGB(0,0,255)); 五:CAddressDlg::OnClose() 这个函数里面有KillTimer(0).六:连接数据库,m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);//从数据库中查找,输入的密码是否正确 七:当控件在类向导里没有显示其ID号时,将其属性里的组勾选即可~ 说明:这里跟三不同 八:不能访问类查看信息文件 解决办法 解决办法为:删除掉目录中clw及ncb文件,再打开,就可以了。 九:当单击右键没看到“Add Windows Message Handler”时,更换.clw/.ncb文件即可 十:单步调试到RefreshData()时总是出现“FROM 语法错误” 解决办法:完成MainDlg()里面的显示工作区表格的代码后,这个问题没有了。 十一:Visual Assist X这是一个软件,可以帮助C++有个更友好的显示界面。 十二:实现窗体的伸缩功能: OnRadioSearch();SizeWindow(); 十三:Address工程里,当点击右边修改记录时,会出现系统报错 解决办法: 对修改记录所需弹出的窗口进行完整,像在类向导里面添加处理各种消息的函数 十四:AboutDlg弹出窗口设计一直说AboutDlg 最后新建了一个CAboutdlg1,并修改源代码,最后功能实现了 初步查找原因:元工程里面缺少的类CAboutDlg定义在AddressDlg.cpp里面,这才是原因,CAboutDlg应该需要定在Aboutdlg.h里面才行~ 嗯!验证了,就是这个原因。 其实没有这么复杂:只要按照错误的提示建立自己的类啊、头文件啊、CPP文件就好了~~~ 十五:AddInfo窗体录入数据出错:说“姓名一定要填写!然后出现系统错误”解决办法: 一下两个地方的 // NOTE: the ClassWizard will add member initialization here需要填写!!: 1.CAddInfoDlg::CAddInfoDlg(CWnd* pParent /*=NULL*/) : CDialog(CAddInfoDlg::IDD, pParent) 2.void CAddInfoDlg::DoDataExchange(CDataExchange* pDX) 这里如果缺少1,会出现下面的系统错误: 由于将在索引、主关键字、或关系中创建重复的值,请求对表的改变没有成功。改变该字段中的或包含重复数据的字段中的数据,删除索引或重新定义索引以允许重复的值并再试一次。 十六:模糊查询及精确查询均用不了:都显示“请输入关键字” 在差错过程中完整如下代码后出现系统错误 BOOL CMainDlg::PreTranslateMessage(MSG* pMsg) 十七:组合框设置默认值实现不了~ 可实现的方法(但是在我的程序里没用!) //默认“姓名”项被选中 m_ctrlfield.SetCurSel(0); 成功实现,关键:将SetCurSel()函数放在AddString()后面就可以了 十八:当加入DoDataExchange(CDataExchange* pDX)时中的代码时,运行报系统错误,编译没问题,已移植问题文件夹~ 相关发现:在定义整形变量时有一种整形变量的description是: int with validation(FOREIGN VALIABLE)这种变量的定义方法是 在DoDataExchange()函数中使用如下语句: DDX_FieldText(pDX, IDC_CATNUM, m_pSet2->m_cat, m_pSet2); 当在CTestDBDoc.h文件中申明CMyRSet m_MyRSet;后便可以定义上述变量。 十八_2: DDX_FieldText()不知道怎么产生; 十九:ADOTest窗口弹不出来 解决方法:在建立MFC工程的时候将选项里的Base类由CView改为CFormView 二十:如何定义_ConnectionPtr型变量 在stdafx.h文件中加入代码:#import “c:program filescommon filessystemadomsado15.dll” no_namespace rename(“EOF”,“adoEOF”) 见博客:#post 二十一:当写到try{}是出现错误 解决方法:在后面添加catch{}代码,因为try与catch对应__try与__finally;try模块后面要跟上catch 二十二:ADOTest连接数据库失败 原因:ADOTest1.cpp中 hr = m_pConnection->Open(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb”,“",”",adModeUnknown);///连接数据库 数据库test.mdb没有建立。 二十三:ADOTest删除按键为灰色框扭按不下去。无语了:原来是没有选中要被删除的选项 不过要将OnItemchangedUserlist()中的代码添加完全 二十四:Address的Login对话框类中的消息处理函数WM_Close有什么用WM_CLOSE是可选的,可以给你一个机会决定关不关 WM_DESTROY你没有得选择,因为DestroyWindow已经调用,窗口已经开始销毁。 二十五:使用CDataBase类定义对象时出现问题,原因是没有定义这个类在添加CPersonSet类后问题很多很多:有26个此类错误 见“一” 二十六:出现如:'m_database' : is not a member of 'CAddInfoDlg'的错误提示时应在CAddInfoDlg中定义m_database量 二十七:点击查询后没有反应,不管精确查询还是模糊查询 原来是OnRadio1()中的 m_bsearchflag没有赋值 针对我们这学期学的c++,假期进行了五天的实习。第一天听老师讲实习内容和提示的时候觉得思路挺明确的一个程序,哪有传说中的那么难。下午和同学讨论的时候觉得很有目的,只要按部就班的完成各步操作就可以了,有难度的也只是第二步。这一步要进行判断,这就需要多个输出函数;还要冒泡法给工作排序,工资的计算不是在类中完成的——挺棘手的一个问题。 第二天上机的时候也很快完成了第一步,觉得还行,慢慢来五天完全可以完成。后来也就没怎么好好思考,没想到第二天遇到麻烦了,编不出第二步了。第三天下午也没调试好,第一步输入的数据在第二步统计的时候怎么也数不出来,我从头至尾研究了多次,没发现一点问题,请舍友帮我检查也说没错,到了傍晚还是看不出来。哎!又找一个人给我看了看,竟然错得那么幼稚,类外定义了全局对象,在数据输入put()函数里又重新定义了对象,这样在put()输入的数据无法用到其他函数中,自然统计的时候都是默认值了。 就这么一个小小的错误整得我一天一晚上寝食难安。 编程序时深深感受到要不得半点马虎,有时少一个“}”或“<”都会导致程序语法错误;由于编程序经常要变换输入法,很容易输进中文字符,这也会导致语法错误;调用类里重名函数时要注明属于哪个类的。 第三天的时候第二步基本都编出来了,傍晚那时我没检查出错误来的时候,实在是把我急坏了,借了台电脑,在那安静专心的研究程序,舍友帮我检查出错误来之后,编程序有了感觉,那时已经22:00多了,竟然没有一丝睡意。 后来舍友们陆续睡觉了,可我就是不愿睡。可能是出于自尊心需要,别人都编出来了,自己编不出来,让我无法接受;也可能是第二步出来了急于尽快搞定。从19:00到凌晨4:00一直在那儿编程序了,一次次地听到铃声响竟然没有上床睡觉的冲动,满脑袋只有一个想法:认真编程序,争取晚上搞定。后来差不多了,只有备份不怎么完善,当时电脑已经用了好长时间了,实在不忍心一直用人家的电脑,只好关机睡觉了。 这几天可以说是两耳不闻窗外事,一心只顾编程序了,电话都懒得打,只想尽快把程序搞定,晚上没有电脑用,我们三个女生就去网吧,只是那儿没有vusual-c++,只好作罢。 虽然我们一直在编程序,觉得挺累的,其实还有比我们更累的——我们的老师。我们是每天只有半天的实习时间,可是老师却整天在机房里,看得出来,老师连坐下休息的时间都没有,刚要喝点水,立马就被一个同学叫去了,实习完那天下午看见老师都不想走路了。太累了,一天站7小时,还一直给别人检查程序,太忙了。想想老师这么认真,我们还有什么理由不认真呢? 只有五天的实习,却让我受益匪浅:这不仅是一次对我们的c++掌握和运用的熟练程度的检查,更是一次磨练我们耐性、培养认真态度的机会。这次实习让我深刻体会到“细节决定成败,态度决定一切”;更让我 从 老师身上学到了很多在以后工作中需要的优秀品质。相信这会在我今后的学习和以后的工作很有帮助。 通过完成本次面向对象程序设计的任务,使我熟练和掌握了上学期所学的有关visual c++中的一些主要知识点和应用点,如类的定义,类的实现,对象的定义,类的继承等等。可以所学有所学,所有所用,不至于自己所学知识由于没有经历可用过程,而放弃对它的兴趣。 第一天上课时候听老师讲,第一反应是这可怎么做了。当时有些迷茫。但是事在人为,下午回去之后在宿舍苦心研究,终于在整体上有了一定的把握。我们可以先定义一个基类,再派生三个子类,然后在类外定义函数。有人数规定,我们就定义相应长度的对象数组,最后在实现程序功能时,用函数调用就行。 于是当晚很快就完成了第二天的预习报告,上机调试时也没什么大问题,就这样第二天顺利通过。 虽说接下来的统计没那么容易,但就顺着数据顺利输入的喜悦心情,我还是较好的完成了这个任务。在类外定义一个函数用来输出雇员的基本情况,表头,表尾直接在统计函数中输出,也就是在统计函数中调用函数。打印与统计有异曲同工之妙,所以在统计做出之后,打印自然而然的也就很快完成了。 接下来的数据备份中,遇到了一个小问题,一开始以为也是函数中调用打印函数中用的那函数。其实不然,如若那样,又变成了打印。那我们就直接输出,但详细资料是受保护的,不能直接输出,那还得调用函数。于是在每个类中的公共成员中定义了直接返回的函数,接下来顺利完成了备份。调用头文件 里的exit(int)函数,可以用if()语句进行判断是否确定退出。程序顺利完成。 面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。 此次,应用程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。这些问题,并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。 当然,此次任务的完成,也体现出同学之间的团结精神。所遇种种难以解决的问题,大家都会把它当作共同遇到的问题,在一起共同探讨,共同发挥自己所学和所知,投入式的互相帮助和解决困难。 /* 头文件 */ #include #include #include char lt[10];//开车时间 char at[10];//到达时间 int count;//票数 }s[N];/* 全局变量 */ int i;//输入计数器 int m=0;//合计计数器 char l[20];//纠错空间 /* 函数声明 */ void INPUT();//输入车次信息 void PRINTF();//输出车次信息 void save();//保存车次信息 void read();//读取车次信息 void search();//查找车次信息 void dingpiao();//订票信息 void tuipiao();//退票信息 void WRONG();//纠错模块 ///////////////////////////////////////////////////////////////////////////////////////主函数 void main(){ int j;do { system(“cls”);//清屏语句 printf(“ *************************************************************n”);printf(“ 欢迎进入火车票务管理系统 n”);printf(“ *************************************************************”);printf(“ n 请输入选项 nn”);printf(“ 1.添加列车信息 nn” “ 2.查找 nn” “ 3.订票 nn” “ 4.退票 nn” “ 5.退出 nn”);printf(“ *************************************************************nn”);printf(“请选择: ”);scanf(“%d”,&j);gets(l); switch(j){ case 1: INPUT();//调用输入模块 break;case 2:search();//调用查找模块 break;case 3:dingpiao();//调用订票模块 break;case 4:tuipiao();//调用退票模块 break;case 5:;break;default:WRONG();break;} }while(j!=5);//判断结束 printf(“n 王志强 1241班 201210913124 n ”);printf(“n--------”); printf(“n 正在退出,请按任意键退出”); printf(“n--------n ”);}//主函数结束 //////////////////////////////////////////////////////////////////////////////////////////输入模块 void INPUT(){ int y; system(“cls”);printf(“n ====================欢迎进入 录入火车时刻信息 界面====================nn”);for(i=0;i printf(“请输入车次号: ”);scanf(“%s”,&s[i].code);//读取车次号 printf(“请输入站数: ”);scanf(“%s”,&s[i].data);//读取站数 printf(“请输入起始站: ”);scanf(“%s”,s[i].lp);//读取起始站 printf(“请输入终点站: ”);scanf(“%s”,s[i].ap);//读取终点站 printf(“请输入开车时间: ”);scanf(“%s”,s[i].lt);//读取开车时间 printf(“请输入到达时间: ”);scanf(“%s”,s[i].at);//读取到达时间 printf(“请输入车票数: ”);scanf(“%d”,&s[i].count);//读取票数 m++; printf(“第%d个信息已经输完.按任意键继续,按 0 结束: ”,m);scanf(“%d”,&y);gets(l);if(y==0){ save();//将结构体信息存盘 PRINTF();//输出输入的列车信息 printf(“n 按任意键返回上级菜单: ”);gets(l);break;} } } ////////////////////////////////////////////////////////////////////////保存模块程序 void save(){ FILE *fp,*fp1;//定义文件指针 if((fp=fopen(“chen.dat”,“wb”))==NULL)//打开文件并判断是否出错 { printf(“创建文件失败!nn”);//打印出错提示 getchar();return;} if((fp1=fopen(“hao.dat”,“wb”))==NULL)//打开文件并判断是否出错 { printf(“创建文件失败!nn”);//打印出错提示 getchar();return;} for(i=0;i printf(“向文件输入数据失败!nn”);fprintf(fp1,“%d”,m);fclose(fp);//关闭文件 fclose(fp1);//关闭文件 } ///////////////////////////////////////////////////////////////////////文件读取模块 void read(){ FILE *fp,*fp1;//定义文件指针 if((fp=fopen(“chen.dat”,“rb”))==NULL)//打开文件,并判断是否出错 { printf(“出错,请检查文件是否存在,按任意键返回住菜单”);//打印出错提示 getchar();} if((fp1=fopen(“hao.dat”,“rb”))==NULL)//打开文件并判断是否出错 { printf(“创建文件失败!nn”);//打印出错提示 getchar();return;} fscanf(fp1,“%d”,&m);fclose(fp1);//关闭文件 for(i=0;i //////////////////////////////////////////////////////////////////////////////查询模块 void search(){ char name1[20];char name2[20];char ii[10];int nk;char no[10];do { system(“cls”);//清屏语句 printf(“nn ====================欢迎进入 查询火车时刻信息 界面====================n”); printf(“n ++++++++++++++++++请选择查找方式++++++++++++++++++nn”); printf(“ ----1.显示所有列车信息 2.按车次查询 3.按始发站查询----n”); printf(“ -----4.按终点站查询 5.返回主菜单----n”); printf(“n 请选择: ”);scanf(“%d”,&nk);//读取查找方式 gets(l);if(nk==5)break; switch(nk){ case 1:PRINTF();//调用打印模块 break;case 2: printf(“请输入车次号:n”);scanf(“%s”,&no);//车次号 break;case 3: printf(“请输入始发站名称:n”);scanf(“%s”,name1);//读取始发站 break;case 4: printf(“请输入终点站名称:n”);scanf(“%s”,name2);//终点站 break;default: WRONG(); break;} read();//调用读取函数 for(i=0;i search();//调用查询模块 printf(“请输入您要订的车票数以回车键结束:”);scanf(“%d”,&n);//读取所订机票数 if(n<0){ system(“cls”);WRONG();//scanf(“%s”,l);//gets(l); break;} if(s[i].count!=0&&s[i].count>=n)//判断是否出错 { s[i].count=s[i].count-n;//调用保存函数 system(“cls”);printf(“订票成功!nn”);printf(“ntt按任意键返回主菜单: ”);scanf(“%s”,l); break;} if(s[i].count break;} printf(“是否继续?(y/n):n”);//判断是否继续订票 scanf(“%s”,a);}while(!strcmp(a,“y”));//判断结束 } ///////////////////////////////////////////////////////////////////////////////退票模块 void tuipiao(){ int n;char a;do { search();//调用查询模块 printf(“请输入您要退的机票数目:n”);scanf(“%d”,&n);//输入所退票数 gets(l);if(n<0)//判断票数是否有效 { WRONG(); break;} s[i].count=s[i].count+n;do { system(“cls”);//借鉴而来的清屏语句,好用! printf(“nn-->退票成功<--”);printf(“nn-->继续 y,返回主菜单 n <--”); a=getchar(); gets(l); if(a!='y'&&a!='n') WRONG(); }while(a!='y'&&a!='n');}while(a!='n');//判断并跳出循环 } ///////////////////////////////////////////////////////////////////////////////////////纠错模块 void WRONG(){ system(“cls”);//借鉴而来的清屏语句,好用! printf(“nn--->!!输入错误,请按任意键返回!!<---”);gets(l);} 针对我们这学期学的c++,假期进行了五天的实习。第一天听老师讲实习内容和提示的时候觉得思路挺明确的一个程序,哪有传说中的那么难。下午和同学讨论的时候觉得很有目的,只要按部就班的完成各步操作就可以了,有难度的也只是第二步。这一步要进行判断,这就需要多个输出函数;还要冒泡法给工作排序,工资的计算不是在类中完成的——挺棘手的一个问题。 第二天上机的时候也很快完成了第一步,觉得还行,慢慢来五天完全可以完成。后来也就没怎么好好思考,没想到第二天遇到麻烦了,编不出第二步了。第三天下午也没调试好,第一步输入的数据在第二步统计的时候怎么也数不出来,我从头至尾研究了多次,没发现一点问题,请舍友帮我检查也说没错,到了傍晚还是看不出来。哎!又找一个人给我看了看,竟然错得那么幼稚,类外定义了全局对象,在数据输入put()函数里又重新定义了对象,这样在put()输入的数据无法用到其他函数中,自然统计的时候都是默认值了。 就这么一个小小的错误整得我一天一晚上寝食难安。 编程序时深深感受到要不得半点马虎,有时少一个“}”或“<”都会导致程序语法错误;由于编程序经常要变换输入法,很容易输进中文字符,这也会导致语法错误;调用类里重名函数时要注明属于哪个类的。 第三天的时候第二步基本都编出来了,傍晚那时我没检查出错误来的时候,实在是把我急坏了,借了台电脑,在那安静专心的研究程序,舍友帮我检查出错误来之后,编程序有了感觉,那时已经22:00多了,竟然没有一丝睡意。 后来舍友们陆续睡觉了,可我就是不愿睡。可能是出于自尊心需要,别人都编出来了,自己编不出来,让我无法接受;也可能是第二步出来了急于尽快搞定。从19:00到凌晨4:00一直在那儿编程序了,一次次地听到铃声响竟然没有上床睡觉的冲动,满脑袋只有一个想法:认真编程序,争取晚上搞定。后来差不多了,只有备份不怎么完善,当时电脑已经用了好长时间了,实在不忍心一直用人家的电脑,只好关机睡觉了。 这几天可以说是两耳不闻窗外事,一心只顾编程序了,电话都懒得打,只想尽快把程序搞定,晚上没有电脑用,我们三个女生就去网吧,只是那儿没有vusual-c++,只好作罢。 虽然我们一直在编程序,觉得挺累的,其实还有比我们更累的——我们的老师。我们是每天只有半天的实习时间,可是老师却整天在机房里,看得出来,老师连坐下休息的时间都没有,刚要喝点水,立马就被一个同学叫去了,实习完那天下午看见老师都不想走路了。太累了,一天站7小时,还一直给别人检查程序,太忙了。想想老师这么认真,我们还有什么理由不认真呢? 只有五天的实习,却让我受益匪浅:这不仅是一次对我们的c++掌握和运用的熟练程度的检查,更是一次磨练我们耐性、培养认真态度的机会。这次实习让我深刻体会到“细节决定成败,态度决定一切”;更让我从老师身上学到了很多在以后工作中需要的优秀品质。相信这会在我今后的学习和以后的工作很有帮助。 通过完成本次面向对象程序设计的任务,使我熟练和掌握了上学期所学的有关visual c++中的一些主要知识点和应用点,如类的定义,类的实现,对象的定义,类的继承等等。可以所学有所学,所有所用,不至于自己所学知识由于没有经历可用过程,而放弃对它的兴趣。 第一天上课时候听老师讲,第一反应是这可怎么做了。当时有些迷茫。但是事在人为,下午回去之后在宿舍苦心研究,终于在整体上有了一定的把握。我们可以先定义一个基类,再派生三个子类,然后在类外定义函数。有人数规定,我们就定义相应长度的对象数组,最后在实现程序功能时,用函数调用就行。 于是当晚很快就完成了第二天的预习报告,上机调试时也没什么大问题,就这样第二天顺利通过。 虽说接下来的统计没那么容易,但就顺着数据顺利输入的喜悦心情,我还是较好的完成了这个任务。在类外定义一个函数用来输出雇员的基本情况,表头,表尾直接在统计函数中输出,也就是在统计函数中调用函数。打印与统计有异曲同工之妙,所以在统计做出之后,打印自然而然的也就很快完成了。 接下来的数据备份中,遇到了一个小问题,一开始以为也是函数中调用打印函数中用的那函数。其实不然,如若那样,又变成了打印。那我们就直接输出,但详细资料是受保护的,不能直接输出,那还得调用函数。于是在每个类中的公共成员中定义了直接返回的函数,接下来顺利完成了备份。调用头文件 面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。 此次,应用程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。这些问题,并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。 当然,此次任务的完成,也体现出同学之间的团结精神。所遇种种难以解决的问题,大家都会把它当作共同遇到的问题,在一起共同探讨,共同发挥自己所学和所知,投入式的互相帮助和解决困难。第二篇:C++程序笔记
第三篇:c++程序实习报告
第四篇:火车订票系统c++程序
第五篇:c++程序毕业实习报告