C++ 程序设计报告书.docx
《C++ 程序设计报告书.docx》由会员分享,可在线阅读,更多相关《C++ 程序设计报告书.docx(17页珍藏版)》请在冰豆网上搜索。
C++程序设计报告书
C++程序设计报告书
课程名:
c++程序课程设计
课程号:
DB0605101
学院:
经济管理学院
专业:
信息管理与信息系统
班级:
信管141
姓名:
张萌
学号:
201400654115
一、前言
现代社会飞速发展,世界也不断变化,人类的生活随着科技的发展也发生着惊天动地的变化。
作为新时代的大学生,我们应该不断努力学习科学文化知识,以适用社会的发展要求。
而C++语言作为一种计算机语言,无疑是我们将来工作不可或缺的一项技能,但只是书本上的知识是远远不够的,我们应该将从和课本上的理论知识应用并付诸到实践中,通过不断的尝试,在尝试中发现错误解决问题,并不断创新,最后能熟练的运用所学的知识,充分掌握这种技能。
C++语言知识博大精深,有必要对C++语言的专著进行研究学习,多阅读别人的程序代码、多动手实践操作与设计。
此次课程设计是让同学们在独立完成设计、编写、调试应用程序及编写文档的任务的过程中,及时巩固已学的知识,补充未学的知识点,提高程序设计的能力。
针对C++语言中的重点和难点内容,如数组和函数进行训练,并且能充分发挥独立自主的学习能力,对于在程序设计中和调试中遇到的问题,应积极和同学交流,互相学习,共同进步。
学好C++语言,就必须进一步掌握运用C++进行程序设计的能力,和运用面向过程及面向对象的程序设计思想。
学海之路何其宽广,有必要让我们孜孜不倦的求索下去。
二、实习时间
2015年12月21日—2016年1月8日
三、实习软件平台简介
C++程序设计包括编写源代码、编译、连接和运行等过程。
这些过程都可以在集成开发环境中完成。
集成开发环境(IntegratedDevelopingEnvironment,IDE)是应用于用户界面等,是可以完成创建、调试、编辑程序等操作的编程环境。
C++集成开发环境有多种,本实验所应用的实习软件平台是在Windows平台下运行C++的集成开发环境MicrosoftVisualC++6.0。
MicrosoftVisualC++6.0,简称VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。
VisualC++是一个功能强大的可视化软件开发工具。
VisualC++6.0不仅是一个C++编译器,而且是一个基于Windows操作系统的可视化集成开发环境。
VisualC++6.0由许多组件组成,包括编辑器、调试器以及程序向导AppWizard、类向导ClassWizard等开发工具。
这些组件通过一个名为DeveloperStudio的组件集成为和谐的开发环境。
四、设计内容及过程
实验1熟悉VC++的集成环境
1、实验内容与步骤
使用VisualC++6.0对一个C++程序进行编辑、编译、连接和运行。
⑴分析
VisualC++6.0中程序的开发过程与其它高级语言的开发过程相仿,都要经过编辑、编译、连接和运行四个步骤。
⑵步骤
①编辑,编辑是将C++源程序输入计算机的过程。
在VisualC++6.0主界面下,点击“文件”菜单,选择“新建”菜单项,即可出现“新建”对话框。
在“文件”标签页下,选择C++SourceFile。
在选项卡右面的“文件名”编辑框里输入文件名如“Exa”,在“位置”编辑框里输入文件路径。
点击“确定”按钮。
将出现编辑窗口。
编辑窗口里输入C++源程序并保存文件。
②编译
编译是使用系统提供的编译器将文本文件Exa.cpp生成机器语言的过程,结果为Exa.obj,由于没有得到系统分配的绝对地址,还不能直接运行。
选择“组建”菜单下的编译Exa.cpp,计算机将完成对当前源程序的编译。
按提示建立默认工程空间。
编译无错时,将源程序Exa.cpp编译为目标文件Exa.obj。
③连接
连接是将目标文件Exa.obj转换为可执行文件Exa.exe的过程。
选择“组建”菜单下的组建Exa.exe。
连接无错时,将目标文件Exa.obj连接为Exa.exe。
④运行
运行是执行可执行文件Exa.exe,屏幕输出运行结果。
选择“组建”菜单下执行Exa.exe。
实验2项目文件的建立
1、实验内容与步骤
⑴内容
先建立项目文件,然后将源程序添加到项目中。
学习if、if-else、switch等选择语句的使用和选择结构的嵌套使用,。
⑵步骤
在VisualC++6.0主界面中,选择菜单“文件”菜单,选择“新建”菜单项,在“新建”对话框中选择“工程”选项卡,在它的列表框中,选择Win32ConsoleApplication列表项,在屏幕右边的Projectname编辑框中输入项目名称,如“Exa”,在“位置”编辑框中指定该文件所在的位置,然后单击“确定”按钮。
进入一个Win32应用程序向导对话框。
选中默认选项“一个空工程”选项。
单击或“完成”系统将显示AppWizard的创建信息,单击“确定”按钮,在主界面根据下题键入程序。
某百货公司为了让促销,采用购物打折的办法。
1000元以上者,按九五折优惠;2000元以上者,按九折优惠;3000元以上者,按八五折优惠;5000以上者,按八折折优惠。
编写程序,输入购物款数,计算并输出优惠价(要求用switch语句编写)
键入程序如下:
#include
intmain(intargc,char**argv)
{
intamount=0;
scanf("%d",&amount);//输入顾客购买的总额
intstatus=amount/1000;
switch(status)
{
case0:
break;
case1:
amount=amount*0.95;break;
case2:
amount=amount*0.90;break;
case3:
amount*=0.85;break;
default:
amount*=0.80;break;
}
printf("%d\n",amount);//打印出打折后的总额
return0;
}
2、实验结果如下图
3、实验总结
此次实验中编译的语句较多,我犯得最多的错误就是在码字时漏掉分号或者是输入的分号是中文格式的分号,不受软件识别。
在此期间老师还反复强调“细节决定成败”,平时练习时要更认真细心一些,才能避免这些不应该犯的低级错误。
实验3循环程序设计
1、实验内容与步骤
⑴内容:
掌握循环结构while、do-while、for的使用,了解转向语句的使用,学习循环结构的嵌套使用。
⑵步骤:
有一个数列,其前三项分别为1、2、3,从第四项开始,每项均为其相邻的前三项之和的1/2,问:
该数列从第几项开始,其数值超过1200。
分析:
这是一个累加求和的问题,仔细分析各项,可以发现从第.四项开始,各项的值为f4=(f1+f2+f3)/2,键入程序如下:
#include
#include
intmain()
{
intf1=1,f2=2,f3=3,i=3,n;
for(n=4;i<=1200;n++)
{
i=(f1+f2+f3)/2;
f1=f2;
f2=f3;
f3=i;
}
cout<<"n="<return0;
}
2、实验结果如下图:
3、实验总结
这道题属于“递推”类型题目,要在数字之间总结出公式加入程序,从中考察到我们的逻辑思维能力,这种题应该多加思考,才能得出正确的公式条件。
实验4函数的应用
1、实验内容与步骤
⑴内容:
掌握函数声明、定义和调用的方法;了解函数调用的实参与形参的传递,以及参数默认值的设置;掌握重载函数的实现方法。
理解递归和嵌套函数的概念、定义与调用。
⑵步骤:
编写程序,求两个自然数m和n的最大公约数和最小公倍数。
分析:
最小公倍数=m×n/最大公约数;最大公约数就是能同时整除m和n的最大正整数,可用辗转相除法求解。
计算两个数的最大公约数的方法是:
求两个数(m、n)相除的余数r(r=m/nm>n),当余数不为零时,m取n的值,n取r的值,再求两个数相除的余数,反复进行直到余数为零,除数n是最大公约数。
键入程序如下:
#include
intfun1(intc,intd)
{
intr;
r=c%d;
while(r!
=0)
{
c=d;
d=r;
r=c%d;
}
returnd;
}
voidmain()
{
intm,n,e,d;
cout<<"输入m和n的值"<cin>>m>>n;
e=fun1(m,n);
d=m*n/e;
cout<<"最大公约数为:
"<cout<<"最小公倍数为:
"<}
2、实验结果如下图:
3、实验总结
通过对函数的实习,我对函数的定义和应用有了更加深入的了解,并且对函数的编写有了极大的兴趣,除以上解题思路外,我用递归调用的方法同样实现了程序编写。
程序如下
#include
intfun1(intc,intd)
{
intr;
r=c%d;
if(r!
=0)
{
c=d;
d=r;
fun1(c,d);
}
returnd;
}
voidmain()
{
intm,n,e,d;
cout<<"mn=";
cin>>m>>n;
e=fun1(m,n);
d=m*n/e;
cout<<"最大公约数为:
"<cout<<"最小公倍数为:
"<}
实验5数组的应用
1、实验内容与步骤
⑴内容:
.掌握数组定义和初始化的方法,熟悉使用字符数组处理字符串处理的方法。
⑵步骤:
应用一维数组,对10个数进行冒泡排序,使其按照从大到小的顺序输出。
分析:
n个数冒泡排序的方法是将第一个数与其后面的数逐个进行比较,发现大者进行交换,完成后最大的数就放到了第一个的位置;第二个数与其后面的数逐个进行比较,发现大者进行交换,完成后次大的数就放到了第二个的位置;如此循环,直到第n-1个数与第n个数进行比较,发现大者进行交换,键入程序如下:
#include
voidmain()
{
inta[10];//A
inti,j,t;
cout<<"Inputtendata:
"<for(i=0;i<10;i++)
{//B
cin>>a[i];
}
for(i=0;i<=8;i++)
{
for(j=i+1;j<=9;j++)
{
if(a[i]t=a[i];
a[i]=a[j];
a[j]=t;
}
}
}
cout<<"sorteddata:
"<for(i=0;i<=9;i++)cout<<"a["<
}
2、实验结果如下图:
应用二维数组打印如图所示杨辉三角形。
分析:
由杨辉三角形可以看出每行数存在以下规律:
每行数据的个数与行序相同;每行的第一个数和最后一个数均为1;中间的数为上一行同一列的