C++程序设计实验报告自考本科.docx
《C++程序设计实验报告自考本科.docx》由会员分享,可在线阅读,更多相关《C++程序设计实验报告自考本科.docx(13页珍藏版)》请在冰豆网上搜索。
C++程序设计实验报告自考本科
河南省高等教育自学考试
计算机及其应用专业
(本科段)
C++程序设计
实验考核报告
姓名sdfsd准考证号sdfdf所属地市dfsf
实验地点实验日期
实验总成绩指导教师签名
实验单位(实验室)意见:
主考院校审核意见:
年月日
河南科技大学
2010年
目录
一、实验报告要求----------------------------------------------------------------1
二、C++程序初步----------------------------------------------------------------2
三、建立自己的栈---------------------------------------------------------------5
四、日期显示---------------------------------------------------------------------8
实验报告要求
1、实验报告应包括以下内容:
(1)、程序清单
(2)、实验结果
(3)分析与讨论
2、实验报告应写明实验名称、班号、实验者姓名、学号、将实验报告整理装订好,按指导教师规定的时间上交。
基本实验方法
本实验环节要求学生能够顺利完成C++课程的实验操作
实验所用器件、设备的简单介绍
所有实验使用Windows、Linnux操作系统
实验一C++程序设计初步
一、实验学时:
2学时
二、实验目的:
·通过本实验让学生掌握基本的编辑、编译和运行程序的方法及C++的基本知识。
·理解封装和数据隐藏的软件工程概念。
·能够建立C++的抽象数据类型
·理解怎样建立、使用和撤销类型的对象。
·能够控制对类的数据成员和成员函数的访问。
·动态分配内存。
三、实验设备:
本实验在Windows或linux操作系统下,运行VC++6.0语言。
四、C++程序初步
1、C++程序和语句
(1)预处理命令。
如#include命令和#define命令。
(2)声明部分。
如对数据类型和函数的声明,以及对变量的定义。
(3)函数。
包括函数首部和函数体,在函数体中包含着若干声明语句和执行语句。
2、C++的输入与输出
C++的输入输出是用“流”(stream)的方式实现的。
C++通过流进行的输入输出操作如下图所示。
程序
插入
输出流
提取
输入流
3、程序清单
typedefstructCStashTag{
intsize;//Sizeofeachspace
intquantity;//Numberofstoragespaces
intnext;//Nextemptyspace
}CStash;
#include“CLib.h“//包含库的接口
#include
#include
#include
#include
usingnamespacestd;
intmain(){
CStashintStash,stringStash;
inti;
char*cp;
ifstreamin;
stringline;
constintbufsize=80;
initialize(&intStash,sizeof(int));//初始化
for(i=0;i<100;i++)
{add(&intStash,&i);}
for(i=0;i{cout<<"fetch(&intStash,"<
<<*(int*)fetch(&intStash,i)<}
initialize(&stringStash,sizeof(char)*bufsize);
in.open("CLibTest.cpp");
assert(in);
while(getline(in,line))
{add(&stringStash,line.c_str());}
i=0;
while((cp=(char*)fetch(&stringStash,i++))!
=0)
{cout<<"fetch(&stringStash,"<
<}
cleanup(&intStash);//清除
cleanup(&stringStash);//显式清除
}
动态分配数组:
intsize;
cin>>size;
int*array=newint[size];
(二)、实验中出现的问题及解决方法
1、熟悉程序中用到的一些基本要素(常量、变量、运算符、表达式等),他们是构成程序的基本成分。
2、编写简单程序所必须掌握的一些内容。
实验二建立自己的栈
一、实验学时:
2学时
二、实验目的:
·通过本实验让学生自己建立一个连续存储的栈,使学生能够掌握类、类对象、类的构造函数和析构函数的使用。
·理解数据抽象与抽象数据类型(ADT)的表示方法。
三、实验设备:
本实验在Windows或linux操作系统下,运行VC++6.0语言。
四、建立自己的栈
1、程序清单
#include
#include
#include
#include
#defineSTACK_INIT_SIZE10
#defineSTACKINCREMENT10
#defineOK0;
#defineERROR-1;
structStack{
char*base;
char*top;
intcount;
intstacksize; //stack表示的是当前已经分配的存储空间,以元素为单位
};
structStackhead;
//取栈顶元素
char*GetTop()
{
structStack*S;
char*e=(char*)malloc(sizeof(char));
S=&head;
if(S->base==S->top)
{
printf("栈空/n");
exit(0);
}
*e=*(S->top-1); //top指向的是栈顶的下一个位置
returne;
}
//插入元素e为新的栈顶元素
intPush(char*e)
{
structStack*S;
S=&head;
if((S->top-S->base)==S->stacksize) //如果栈满的话则追加空间
{
head.base=(char*)realloc(head.base,(head.stacksize+STACKINCREMENT)*sizeof(char));
if(!
head.base)
exit(0);
head.top=head.base+head.stacksize;
head.stacksize=head.stacksize+STACKINCREMENT;
}
*S->top++=*e;
returnOK;
}
//当栈顶不为空时,删除栈顶元素
charPop()
{
structStack*S;
S=&head;
if(S->top==S->base)
exit(0);
return(*--S->top);
}
voidprint()
{
structStack*S;
S=&head;
char*p;
p=(char*)malloc(sizeof(char));
if(S->base==S->top)
{
printf("空栈/n");
exit(0);
}
while(S->base!
=S->top)
{
*p=Pop();
printf("p->%c/n",*p);
p=(char*)malloc(sizeof(char));
p++;
}
}
intmain()
{
charbuf[30],*z;
inti,count;
head.base=(char*)malloc(STACK_INIT_SIZE*sizeof(char));
if(!
head.base)
exit(0);
head.top=head.base;
head.stacksize=STACK_INIT_SIZE;
head.count=0;
//构造栈
for(i=0;i<15;i++)
{
scanf("%c",&buf[i]);
getchar();
Push(&buf[i]);
head.count++;
}
printf("构造栈成功:
/n");
print();
//读栈顶元素
count=head.count;
while(count)
{
++head.top;
count--;
}
z=GetTop();
printf("取出的栈顶元素是:
%c/n",*z);
print();
count=head.count;
while(count)
{
++head.top;
count--;
}
//删除栈顶元素
printf("成功删除栈顶元素:
%c/n",Pop());
head.count--;
print();
free(head.base);
return0;
}
2、实验中出现的问题及解决的方法
(1)数据结构相关理论知识。
(2)堆栈的原理及应用。
实验三日期显示
一、实验学时:
2学时
二、实验目的:
·通过本实验让学生进一步熟悉C++的面向对象特征,掌握基本的面向对象程序设计方法。
·能够动态的建立和撤销对象。
·能够指定CONST对象和CONST成员函数。
·理解静态数据成员和静态成员函数。
·一个类可以做为其它类的成员。
三、实验设备:
本实验在Windows或linux操作系统下,运行VC++6.0语言。
四、显示日期
(一)、实验目的
面向对象程序设计的特点,类与对象的应用。
CONST对象和CONST成员函数,静态数据成员和静态成员函数的应用方法。
(二)、程序清单
#include
#include
#include"dos.h"
#include
structtime
{
intt_h;
intt_m;
intt_s;
}t;
voidmain()
{
cout<<"请调整当前时间/小时:
";
cin>>t.t_h;
cout<<"请调整当前时间/分钟:
";
cin>>t.t_m;
cout<<"请调整当前时间/秒钟:
";
cin>>t.t_s;
while
(1)
{
cout<<"当前时间为:
";
cout<"<"<if(t.t_s==59&&t.t_m!
=59)
{t.t_m++;t.t_s=0;}
elseif(t.t_s==59&&t.t_m==59&&t.t_h!
=23)
{t.t_m=0;t.t_s=0;t.t_h++;}
elseif(t.t_s==59&&t.t_m==59&&t.t_h==23)
{t.t_s=0;t.t_m=0;t.t_h=0;}
elset.t_s++;
Sleep(1000);
system("cls");
}
}
(三)、实验中出现的问题及解决的方法
#include
#include
voidmain(void)
{
chardbuffer[9];
chartbuffer[9];
_strdate(dbuffer);
printf("Thecurrentdateis%s\n",dbuffer);
_strtime(tbuffer);
printf("Thecurrenttimeis%s\n",tbuffer);
}