c++课程设计Word文档格式.docx
- 文档编号:17195292
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:29
- 大小:605.51KB
c++课程设计Word文档格式.docx
《c++课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《c++课程设计Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
游戏开始时,计算机请人输入山的总数(n)和每次允许搬山的最大数目(k)。
然后请人先开始,人输入了需要搬走的山的数目后,计算机马上输出它搬多少座山,并提示尚余多少座山。
双方轮流搬山直到最后一座山搬完为止。
计算机显示谁是赢家,并问人是否要继续比赛。
若人不想玩了,可以输入山的总数为0,计算机便会告诉人共完了几局,双方胜负如何。
首先设计计算机参加游戏的算法,计算机每次搬山时应遵循如下原则:
(1)当:
剩余山的数目-1<
=可移动的最大数k时,计算机要移(剩余山的数目-1)座,以便将最后一座山留给人。
(2)对于任意正整数x,y,一定有:
0<
=x%(y+1)<
=y
在有n座山的情况下,计算机为了将最后一座山留给人,而且又要控制每次搬山的数目不超过最大数k,它应搬山的数目要满足下列关系:
搬山数量=(当前所剩的山数-1)%(k+1)
如果算出结果为0,即整除无余数,则规定只搬一座山,以防止冒进后发生问题。
(3)、涉及内容:
主要为while循环语句,if与elseif判断语句。
五.题目四:
圆括号和大括号是否匹配的程序
编写程序,读取任何文本文件,查看圆括号和大括号是否匹配,即只允许成对出现,并按正常的方式排列。
例如,下面是正确的例子:
({((…)(…))}())
注意,两个大括号{}之间的圆括号()是按适当的方式成对出现的。
不正确的例子有:
{(})或{)(}
(2)、题目分析:
本题目主要是作两个标志,当读取到左括号时就表为“-1”,读到右括号时就为“1”,其它符号为“0”。
(3)、运行结果:
六.综合题:
通讯录管理
(1)、任务要求:
编写一个简单的通讯录管理程序。
通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。
基本要求
程序应提供的基本基本管理功能有:
1)添加:
即增加一个人的记录到通信录中
2)显示:
即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
3)存储:
即将通讯录信息保存在一个文件中。
4)装入:
即将文件中的信息读入程序。
5)查询:
可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。
6)修改:
可修改一个人的除姓名外其它信息。
(2)、设计过程:
1.模版图
2.该程序主要参考了《c语言高级编程》中的案例,但由于为c语言与c++在程序代码上有很大差别,故转换颇为麻烦。
要编译本程序需要很多函数,做起来很是辛苦,有时做好了却总会有许许多多的错误,标点、字母都是经常出错的地方。
不过我学会了用word工具去修改错误,因为这里有查找、替换功能,不用自己那么费力的找。
在程序做好后,运行也没出错,但显示的时候总是乱来,数字与汉字该分开时却没有分开,这个错误我将之命名为“光明中隐藏的黑暗”,因为检测时没有错误,所以看不出代码哪里错了,运行结果却不如人意。
一开始我以为是分配的字符数不够,也就是位置不足的意思,后来经过一系列的调整,还是失败了。
没办法后来就上网查,问同学老师才知道是代码中缺少了换行符这些东西,说实在还真不知道还有这些符号。
(3)、设计特点和结果:
1.运行平台:
vc++2005,c++6.0
2.特点:
界面简洁,操作简单,功能完整。
3.运行结果:
4.心得:
在大一的这第二个学期,我们学习的c++,但由于时间的限制,在上课时间里很少有多少时间去弄c++编程。
再加上我们刚接触,学到的多半是皮毛,做起程序来有多少会棘手。
此次c++课程设计,由于指导教师的精心教导,我们学会了如何用C++编写简单的应用程序。
首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试。
程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询。
根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;
进一步加深对C++语言的理解和掌握。
理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力。
我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力。
通过此次课程设计,不仅对我的学习提供了帮助,而且在意志力方面也得到了锻炼。
像最后一道综合题,上千的符号数,在上课时间要编要输,课余时间还要抽时间弄。
不过现在我明白了,没有足够的耐力和信心是很难去面对c++的那堆代码的。
七.参考文献:
(1)、《c语言高级编程》王为青、刘变红编著
(2)、《c++程序设计》杨长兴、刘卫国编著
(3)、《c++实训教程》杨学明、余建军编著
(4)、《VisualC++2008入门经典》蒋玲玲张云译
附:
代码
1、余弦
#include<
iostream.h>
math.h>
voidmain()
{
doublex,y;
//x为横坐标,y为纵坐标
inti;
//i为行数
for(y=1;
y>
=-1;
y-=0.1)
{
x=acos(y)*10;
//用反余弦计算出x的相应坐标,并放大10倍
for(i=1;
i<
x;
i++)
cout<
<
"
"
;
//其它处打印空白
}
*"
//打印左边的点
for(;
62-x;
\n"
//打印右边的点,并换行
}
2、余弦与直线
iostream>
cmath>
usingnamespacestd;
intmain()
doubley;
intx,m,n,z;
for(z=0;
z<
=20;
z++)//对于第一个y坐标进行计算并在一行中打印图形
y=0.1*z;
//y:
屏幕行方向坐标
m=acos(1-y)*10;
//m:
cos(x)曲线上y点对应的屏幕列坐标
n=45*(y-1)+31;
//n:
直线上y点对应的列坐标
for(x=0;
x<
=62;
x++)//x:
屏幕列方向坐标
if(x==m&
&
x==n)
cout<
+"
//直线与cos(x)相交时打印"
elseif(x==n)
cout<
//打印不相交时的直线图形
elseif(x==m||x==62-m)
//打印不相交时的cos(x)图形
elsecout<
//其它情况打印空格
endl;
return0;
3、搬山游戏
intnum=1;
//记录局数
intmanwin=0,computerwin=0;
//记录计算机和人赢的次数
intm=1;
//游戏循环的判断条件
charch='
y'
while(m!
=0)
{//设置重复玩游戏的循环
intn;
intk;
欢迎进行搬山游戏——第"
num<
局\n"
请输入山的总数(n>
0):
cin>
>
n;
m=n;
if(n==0)
{//如果输入0座山,就跳出循环,总结游戏结果
num--;
continue;
请输入每次允许搬山的最大数目(0<
k<
n<
):
k;
while(k<
=0||k>
=n)
{
不合法输入,请重新输入每次允许搬山的最大数目(0<
开始游戏!
while(n!
{//循环人与电脑对战
inta,b;
//人搬山
请您输入您要移走的山的数目:
a;
while(a<
=0||a>
k||a>
n){
您输入的数量不符合规定,请重新输入:
n-=a;
b=(n-1)%(k+1);
//计算机搬山数量=(当前所剩的山数-1)%(k+1)
您移动了"
a<
座山,还剩"
座山\n"
{//判断人是否输
computerwin++;
YouLose!
\n\n"
//计算机搬山
elseif(b==0)
{//如果b=0,则只搬一座山
n-=1;
计算机移动了1座山,还剩"
{//判断计算机是否输
manwin++;
ComputerLose!
else
{//否则计算机搬山数=(当前所剩的山数-1)%(k+1)
n-=b;
计算机移动了"
b<
座山,还剩"
num++;
//局数增加
//询问玩家是否想继续,'
则继续下一轮,'
n'
则跳出循环,总结比赛结果
Doyouwanttocontinue?
(y/n):
ch;
while(ch!
='
ch!
N'
Y'
)
不合法输入,Doyouwanttocontinue?
if(ch=='
||ch=='
m=0;
游戏结束!
共玩了:
局您赢了:
manwin<
局计算机赢了:
computerwin<
//总结比赛结果
4、括号匹配
#include<
stack>
string>
shortjudge(charc){
switch(c){
case'
('
:
['
{'
return-1;
//开放符号,即左括号
)'
]'
}'
return1;
//封闭符号,即右括号
default:
//其他符号
}
}
boolmatch(chara,charb){
switch(b){
return(a=='
)?
true:
false;
returnfalse;
intmain(){
stringinput;
charc;
stack<
char>
Stack;
cout<
输入一个字符串:
cin>
input;
string:
iteratorp=input.begin();
while(p!
=input.end()){
c=*p;
switch(judge(c)){
case-1:
Stack.push(c);
break;
case0:
case1:
if(Stack.empty()==true)
缺少左括号!
<
endl;
if(match(Stack.top(),c)==true)
Stack.pop();
else{
括号不匹配!
++p;
if(Stack.empty()==false)
缺少右括号!
else
匹配成功!
5、通讯管理系统
iomanip>
fstream>
cstdlib>
classbook
public:
book();
//默认构造函数
charinter_face();
//首页
voidadd_person();
//添加联系人
voiddel_person();
//删除联系人
voidshow_all();
//显示所有联系人
voidalter();
//修改信息
voidselect();
//查询联系人
voidsave_new();
//保存新增加的联系人
private:
stringname;
//姓名
stringaddress;
//地址
stringnumber;
//电话号码
stringpost;
//邮编
stringqq;
//QQ号
};
book:
book()
name="
\0"
address="
number="
post="
qq="
charbook:
inter_face()
system("
cls"
);
\t\t★★★★★★★★★★★★★★★★★★★★★★★★★★"
endl
\t\t※※"
\t\t※通迅录※"
endl
\t\t※1.添加新联系人.4.修改信息.※"
\t\t※2.删除联系人.5.查询联系人.※"
\t\t※3.显示所有联系人.6.关闭通迅录.※"
endl<
\t\t\t选择:
;
charchoose;
choose;
fflush(stdin);
returnchoose;
voidbook:
add_person()
根据下面提示输入新联系人信息"
姓名:
name;
电话:
number;
QQ:
qq;
邮编:
post;
地址:
address;
save_new();
新联系人信息已经保存好!
!
pause"
del_person()
ofstreamoutData("
temp.txt"
ios:
out);
ifstreaminData("
pbook.txt"
in);
//
if(!
outData||!
inData)
对不起!
找不到文件!
return;
stringsign;
你要删除输入姓名或电话号:
sign;
stringstr1;
boolflag=true;
stringstr;
while(inData>
name>
number)
getline(inData,str);
if((sign==name)||(sign==number))
你想删除的联系人:
str1<
setiosflags(ios:
left)<
setw(17)<
name
number<
str<
flag=false;
outData<
if(flag)
联系人中没你找的人!
while(getline(inData,str))
outData.close();
inData.close();
ofstreamout("
ifstreamin("
if(!
out||!
in)
对不起不能打开文件!
while(getline(in,str))
out<
out.close();
in.close();
这个人的信息已经从你的通迅录中删除!
show_all()
ios:
没有找到文件!
stringrecord;
while(getline(inData,record))
所有联系人信息如下:
record<
你的通迅录中没有联系人!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 课程设计