江苏科技大学
课程实践报告
设计题目: 计算机程序设计实践(VC++)
设计时间20011-3-6 至2011-3-13
学院(系): 机械工程
专业班级: 机制3班
学生姓名: 郑杰学号0940202329 指导老师:石亮
2011年03月
任务一
一、实践任务
3.建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。
二、系统设计
1、类的描述与定义
(1)私有数据成员
●float array[20]:一维整型数组。
●int n:数组中元素的个数。
(2)公有成员函数
●MOVE(float b[],int m):构造函数,初始化成员数据。
●void average():输出平均值,并将数组中的元素按要求重新放置。
●void print():输出一维数组。
2、主要函数设计
在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。
三、系统测试
void main()
{
float b1[]={1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3};
int num;
num=sizeof(b1)/sizeof(float);
MOVE s(b1,num);
s.average();
s.print();
}
四、实践小结
通过本题我学会了平均值的求法以及一组数的排序。
五、参考文献
[1]齐志昌。软件工程。北京:高等教育出版社,2004
[2]钱雪忠。数据库与SQL Sever 2005 教程。北京:清华大学出版社,2007
[3]张荣梅,梁晓林等。Visual C++实用教程。北京:中国铁道出版社,2008
[4]张岳新。Visual C++ 程序设计。苏州:苏州大学出版社,2007
[5]祁云嵩,刘永良,华伟。Visual C++ 程序设计解析与训练。华东理工大学出版社,2006
六、源程序清单
#include
class MOVE{
private:
f loat array[20];
i nt n;
public:
M OVE(float b[],int m)
{
for(int i=0;i { array[i]=b[i]; } n=m; } v oid average(); v oid print(); ~MOVE() {}; }; void MOVE::average() { float ave=0; int i,j; for(i=0;i { ave+=array[i]; } ave/=n; cout< float turn[20]; j=0; for(i=0;i { if(array[i]<=ave) { turn[j]=array[i]; j++; } } j=0; for(i=0;i { if(array[i]>ave) { turn[n-1-j]=array[i]; j++; } } for(i=0;i { array[i]=turn[i]; } } void MOVE::print() { for(int i=0;i { cout< } } void main() { float b1[]={1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}; int num; num=sizeof(b1)/sizeof(float); MOVE s(b1,num); s.average(); s.print(); } 任务二 一、实践任务 6.定义一个字符串类String,实现判断该字符串是否为回文字符串。所谓回文字符串,是指该字符串左右对称。例如字符串“123321”是回文字符串。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●char *str; ●int y:标记是否为回文字符串。 (2)公有成员函数 ●String (char *s) :构造函数,用给定的参数s初始化数据成员str。y初始化 为0。 ●void huiwen () :判断str所指向的字符串是否为回文字符串。 ●void show( ) :在屏幕上显示字符串。 2、主要函数设计 在主程序中定义字符串char s[]=”ababcedbaba”作为原始字符串。定义一个String类对象test,用s初始化test,完成对该类的测试。 三、系统测试 void main()//测试; { char s[]="ababcedbaba"; String test(s); test.huiwen(); test.show(); } 四、实践小结 掌握判断回文字符串的一般形式。 五、参考文献 [1]齐志昌。软件工程。北京:高等教育出版社,2004 [2]钱雪忠。数据库与SQL Sever 2005 教程。北京:清华大学出版社,2007 [3]张荣梅,梁晓林等。Visual C++实用教程。北京:中国铁道出版社,2008 [4]张岳新。Visual C++ 程序设计。苏州:苏州大学出版社,2007 [5]祁云嵩,刘永良,华伟。Visual C++ 程序设计解析与训练。华东理工大学出版社,2006 六、源程序清单 #include #include class String{ private: char*str; int y; public: S tring(char*s) { int n=strlen(s); str=new char[n+1]; strcpy(str,s); y=0; } v oid huiwen(); v oid show(); ~String() {if(str) delete []str;} }; void String::huiwen()//判断str所指向的字符串是否为回文字符串; { int n,judge=0; n=strlen(str); for(int i=0;i<(n/2);i++) { if(str[i]==str[n-1-i]) judge++; } if(judge==i) y=1; } void String::show()//输出; { if(y==1) cout<<"y=1,?该字符串是回文数"< else cout<<"y=0,该字符串不是回文数"< void main()//测试; { char s[]="ababcedbaba"; String test(s); test.huiwen(); test.show(); } 任务三 一、实践任务 7.建立一个类PHALANX ,生成并显示一个折叠方阵。折叠方阵如下图所示。折叠方阵的生成过程为:起始数置于方阵的左上角,然后从起始数开始递增,依次折叠构成方阵。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ● int (*p)[20]:指向按照折叠规律存放方阵的二维整型数组。 ● int startnum :折叠方阵的起始数。 ● int n :存放方针的层数。 (2)公有成员函数 ● PHALANX (int s, int m ):构造函数,初始化成员数据。 ● void process():生成起始数为startnum 的n 行方阵。 ● void print():输出折叠方阵。 ● ~ PHALANX( ):析构函数。 2、主要函数设计 在主程序中对该类进行测试。 三、系统测试 void main() { int s1,m1; cout<<"请输入该折叠方阵的起始数和行数"; cin>>s1>>m1; PHALANX test(s1,m1); test.process(); … test.print(); } 四、实践小结 根据折叠方阵的产生方式进行相应的逻辑循环实现。 五、参考文献 [1]齐志昌。软件工程。北京:高等教育出版社,2004 [2]钱雪忠。数据库与SQL Sever 2005 教程。北京:清华大学出版社,2007 [3]张荣梅,梁晓林等。Visual C++实用教程。北京:中国铁道出版社,2008 [4]张岳新。Visual C++ 程序设计。苏州:苏州大学出版社,2007 [5]祁云嵩,刘永良,华伟。Visual C++ 程序设计解析与训练。华东理工大学出版社,2006 六、源程序清单 #include class PHALANX{ private: i nt(*p)[20]; i nt startnum; i nt n; public: P HALANX(int s,int m) { startnum=s; n=m; p=new int[m][20]; } v oid process(); v oid print(); ~PHALANX() {if(p) delete[]p;} }; void PHALANX::process()//生成起始数为stratnum的n行螺旋方阵;{ int turn; turn=p[0][0]=startnum; int i,j; for(int k=n-2;k>=0;k--)//按照折叠方阵的生成过程进行赋值; { for(i=0,j=n-k-1;i p[i][j]=++turn; i--; j--; for(;j>=0;j--) p[i][j]=++turn; } } void PHALANX::print() { for(int i=0;i { for(int j=0;j { cout< } cout< } } void main() { int s1,m1; cout<<"请输入该折叠方阵的起始数和行数"; cin>>s1>>m1; PHALANX test(s1,m1); test.process(); test.print(); } 任务四 一、实践任务 11.建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串等长)。 例如将字符串“abcde” 交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●char str1[80] :存放被插入的字符串。 ●char str2[40] :存放待插入的字符串。 (2)公有成员函数 ●STRING (char *s1, char *s2 ):构造函数,用s1和s2初始化str1和str2。 ●void process():将str2中的字符串插入到str1中。 ●void print():输出插入后的字符串。 2、主要函数设计 在主程序中定义STRING类的对象test对该类进行测试。 三、系统测试 void main()//测试 { S TRING test("ABCDE","abcde"); t est.process(); t est.print(); } 四、实践小结 发现字符插入的规律,再依次放入相应字符位置。 五、参考文献 [1]齐志昌。软件工程。北京:高等教育出版社,2004 [2]钱雪忠。数据库与SQL Sever 2005 教程。北京:清华大学出版社,2007 [3]张荣梅,梁晓林等。Visual C++实用教程。北京:中国铁道出版社,2008 [4]张岳新。Visual C++ 程序设计。苏州:苏州大学出版社,2007 [5]祁云嵩,刘永良,华伟。Visual C++ 程序设计解析与训练。华东理工大学出版社,2006 六、源程序清单 #include #include class STRING{ private: c har str1[80];//存放被插入的字符串; c har str2[40];//存放待插入的字符串; public: S TRING(char*s1,char*s2) { strcpy(str1,s1); strcpy(str2,s2); } v oid process(); v oid print(); }; void STRING::process() { i nt i,j; i nt n=strlen(str1); i f(strlen(str2)>strlen(str1)) {//当待插入的字符串ABCDEFG比被插入的字符串abcde长或相等时,逻辑算法:abcde->a b c d e->空格处依次插入ABCDEFG->aAbBcCdDeEFG; for(i=n-1;i>0;i--) { str1[i+i]=str1[i];//被插入的字符串由最后一位开始各位向后移动i位; } for(i=1,j=0;i<2*n;i+=2,j++) { str1[i]=str2[j];//在空出的位置处依次插入字符串; } i--; for(;j<=strlen(str2);j++,i++) { str1[i]=str2[j];//将过长额字符串放入被插入的字符串尾部,完成插入; } } e lse//当待插入的字符串abcde比被插入的字符串ABCDEFG短时,逻辑算法:ABCDEFG->A B C D E FG->空格处插入abcde->AaBbCcDdEeFG; { for(i=n;i>strlen(str2)-1;i--) { str1[i+strlen(str2)]=str1[i];//比待插入的字符串长的部分均向后移strlen(str2)位; } for(i=strlen(str2)-1;i>0;i--) { str1[i+i]=str1[i];//之前的部分均向后移i位; } for(i=1,j=0;i<2*strlen(str2);i+=2,j++) { str1[i]=str2[j];//将待插入的字符串插入空格处,完成插入; } } } void STRING::print()//输出插入后的字符串 { c out<<"插入后的字符串为:"< } void main()//测试 { S TRING test("ABCDE","abcde"); t est.process(); t est.print(); } 任务五 一、实践任务 27.建立一个类NUM,求指定数据范围内的所有素数(质数)。提示:素数定义是“只能被1和它本身整除的整数”,即质数。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●int data[10]:依次存放原始数据。 ●int prime[10]:存放指定数据内所求出的所有素数。 ●int num:存放素数个数。 (2)公有成员函数 ●NUM(int n[ ]):构造函数,用参数n初始化data,同时初始化num为0。 ●int isprime (int x ):判断x是否为素数。若是素数,返回1,否则,返回0。 ●void process( ):求指定data数组中的所有素数,把它们依次存放在数组 prime中,并将求出的素数个数赋给num。 ●void print( ):输出求出的素数个数及所有素数,每行输出4个素数。 2、主要函数设计 在主函数中完成对该类的测试。定义NUM类对象test,通过test调用成员函数完成求素数及输出素数的工作。原始数据为{4,5,9,11,36,29,31,101,56,199}。 三、系统测试 void main() { i nt n[]={4,5,9,11,36,29,31,101,56,199}; N UM test(n); t est.process(); t est.print(); } 四、实践小结 应熟练掌握质数的判断方法 五、参考文献 [1]齐志昌。软件工程。北京:高等教育出版社,2004 [2]钱雪忠。数据库与SQL Sever 2005 教程。北京:清华大学出版社,2007 [3]张荣梅,梁晓林等。Visual C++实用教程。北京:中国铁道出版社,2008 [4]张岳新。Visual C++ 程序设计。苏州:苏州大学出版社,2007 [5]祁云嵩,刘永良,华伟。Visual C++ 程序设计解析与训练。华东理工大学出版社,2006 六、源程序清单 #include #include class NUM{ private: i nt data[10]; i nt prime[10]; i nt num; public: N UM(int n[]) { for(int i=0;i<10;i++) data[i]=n[i];//依次存放原始数据; num=0; } i nt isprime(int x); v oid process(); v oid print(); }; int NUM::isprime(int x)//判断x是否为素数。若是素数,返回1,否则,返回0; { i f(x>1) { if(x==2||x==3) return 1; else { for(int i=2;i<=sqrt(x);i++) { if(x%2==0) return 0; } if(i>sqrt(x)) return 1; } } e lse return 0; } void NUM::process()//求指定data数组中的所有素数,把它们依次存放在数组prime中,并将求出的素数个数赋给num; { f or(int i=0,j=0;i<10;i++) { if(isprime(data[i])) { prime[j]=data[i];//存放指定数据内所求出的所有素数; j++; num++;//存放素数个数; } } } void NUM::print()//输出求出的素数个数及所有素数,把它们依次存放在数组prime中,并将求出的素数个数赋给num; { c out<<"素数个数为:"< f or(int i=0;i { cout< if((i+1)%4==0) cout< } c out< } void main() { i nt n[]={4,5,9,11,36,29,31,101,56,199}; N UM test(n); t est.process(); t est.print(); } 任务六 一、实践任务 32.建立一个类SUM,使用二维数组输入“Follow me”,“BASIC”,“Great wall”,“Fortran”,“Pascal”,将它们按从小到大的顺序排列后输出。 二、详细设计 1、类的描述与定义 (1)私有数据成员 ●int *p[5]:存放二维数组每行的字符串的地址。 (2)公有成员函数 ●SUM(int d[5][5]):构造函数,初始化成员数据。 ●void process1():对二维数组中存放的字符串进行排序。 ●void print():输出二维数组中排好序的字符串。 2、主要函数设计 在主程序中对该类进行测试。 三、系统测试 void main() { //每个字符串的值为该字符串的首元素地址,故将每个地址值转换为整型数值保存在整型数组中; I nt d[5][5]={{int("Follow me")},{int("BASIC")},{int("Great wall")},{int("Fortran")},{int("Pascal")}}; S UM test(d); c out<<"原字符串为:"< t est.print(); t est.process1(); c out<<"排好序的字符串为:"< t est.print(); } 四、实践小结 掌握各数据类型之间的转化。 五、参考文献 [1]齐志昌。软件工程。北京:高等教育出版社,2004 [2]钱雪忠。数据库与SQL Sever 2005 教程。北京:清华大学出版社,2007 [3]张荣梅,梁晓林等。Visual C++实用教程。北京:中国铁道出版社,2008 [4]张岳新。Visual C++ 程序设计。苏州:苏州大学出版社,2007 [5]祁云嵩,刘永良,华伟。Visual C++ 程序设计解析与训练。华东理工大学出版社,2006 六、源程序清单 #include #include class SUM{ private: i nt*p[5];//存放二维数组每行的字符串的地址; public: S UM(int d[5][5]) { for(int i=0;i<5;i++) p[i]=(int*)d[i][0];//整型数组每行第0列保存字符串的地址(为int类型),故在赋值时需要转换为int*类型; } v oid process1(); v oid print(); }; void SUM::process1()//对二维数组中存放的字符串进行排序; { i nt*t; f or(int i=0;i<5;i++) { for(int j=i+1;j<5;j++) { if(strcmp((char*)p[i],(char*)p[j])>0)//将int*类型数据转换为char*类型,才可利用strcmp()函数对该地址值上的字符串比较,排序; { t=p[i]; p[i]=p[j]; p[j]=t; } } } } void SUM::print() { f or(int i=0;i<5;i++) { cout<<(char*)p[i]< } c out< } void main() { //每个字符串的值为该字符串的首元素地址,故将每个地址值转换为整型数值保存在整型数组中; I nt d[5][5]={{int("Follow me")},{int("BASIC")},{int("Great wall")},{int("Fortran")},{int("Pascal")}}; S UM test(d); c out<<"原字符串为:"< t est.print(); t est.process1(); c out<<"排好序的字符串为:"< t est.print(); } 实 验 报 告 二级学院:信息与工程学院 系别:计算机科学与技术系 专业:信息管理与信息系统 课程名称:高级语言程序设计 班级:姓名: 实验名称: 电话订餐信息处理 实验目的: 题目要求: 一个小饭馆的生意非常红火,要想用餐必须提前一天打电话预订,假设我们是饭馆负责接受电话预订的服务员,我们需要做些什么呢?首先,需要准备一张大小适当的白纸,等待顾客的电话。李红最先打进了电话,她预约第2天中午12点用餐,用餐人数5人,服务员在纸上做了如下记录:“李红 12点 5人”;接着,刘娜、汪涵、孙杰和赵君分别来了电话,服务员根据他们的要求做了记录,此时纸上记录的内容是: 李红 12点 5人 刘娜 11点 2人 汪涵 11点20分 3人 孙杰 10点30分 5人 赵君 13点20分 6人 孙杰随后又来电话,将用餐时间推后一个小时,那么记录的内容也应该做相应的修改。刘娜来用餐以后,可以将其信息从纸上划去 编写程序处理电话订餐的情况 实验步骤: 首先建立结构体类型,然后函数声明,编写主函数,定义函数,调用函数。完成后,对程序进行调试,确定所编写的程序是否能够运行。 实验内容: #include<> #include<> #define max 30 struct guest { intnum; char name[40]; char time[20]; int sum; }guestlink[max]; void insert(int *p); void inquire(int); void change(int); void dele(int *p); void show(int); void main() { inti; int count=0; do {0 printf("1.......插入\n"); printf("2.......查询\n"); printf("3.......修改\n"); printf("4.......删除\n"); printf("5.......显示\n"); printf("6.......退出\n"); scanf("%d",&i); switch(i) { case 1: insert(&count);break; case 2: inquire(count);break; case 3: change(count);break; case 4: dele(&count);break; case 5: show(count);break; case 6:break; default:printf("输入错误!");break; } }while(i!=6); } Record the situation and lessons learned, find out the existing problems and form future countermeasures. 姓名:___________________ 单位:___________________ 时间:___________________ 社会实践活动报告 编号:FS-DY-20645 社会实践活动报告 今天我很荣幸,能在这里代表我们高二一班就社区服务的话题与大家进行交流。 从高一开学至今,我班一直坚持社区服务活动,这其中的酸甜苦辣都成了我们社会实践中的宝贵财富。 高一刚开学,我们就进行了第一次社区服务活动。在团支书的带领下,大家利用课余时间,兴致勃勃的来到和平区老年公寓。一想到自己可以以微薄的力量回馈社会,大家都十分高兴。为了让公寓里的老爷爷老奶奶们,能够舒适的安享晚年,大家都干得十分卖力。虽然当时夏天的热度还未消散,但大家都无怨无悔的挥洒汗水,擦玻璃,擦桌子,扫地,擦地,浇花,虽然都是些简单的工作,但大家都认真对待,做到精益求精。看到老人们的生活环境焕然一新,一种成就感顿时从大家的心底萌生出来。我们的表现受到了公寓负责人以及老人们的赞赏,大家还利用休息的间隙与老人们亲切 的交谈,询问老人的身体情况以及生活情况,同时向他们宣传一中的优良校风以及日新月异的发展变化。在一片愉快的氛围中,我们结束了此次的社会实践活动,伴着夕阳的余辉大家踏上了回家的路,当晚风轻柔的抚过我们的面颊时,那种温暖的感觉依然在心中荡漾。 这次以后,我们就把这个“习惯”延续了下来,团支书进行了进一步的统筹安排,把大家分成几个小组,选出每组组长,保证每一次的活动都能达到良好的效果。大家的热情也逐渐高涨起来,牺牲自己的课余时间,进行社区服务。虽然有的同学家住得很远,但他们还是坚持参加活动,珍惜这锻炼自己的机会。 不久以后,我们搬到了华苑的天津中学进行学习,每天坐班车来回需要一个小时,大家都十分辛苦,但是就是这样的困难也没有熄灭我们的热情。我们又联系到了马场道文静里居委会,每周由团支书带领,打出租车去进行社区服务。那时正值寒冬,在捡白色垃圾的时候大家的手都冻红了,但是没有一个人叫苦叫累,我们的毅力受到了居委会主任的表扬,虽然辛苦但是大家的心里都是甜甜的。 社会实践课程报告 在这学期,我们开设了大学生社会实践课程,我认为这门课的开设非常的有必要。不仅对我们接触社会有着积极的影响,更是在学校的有意识指引下,去完成了不少对社会发展有益的活动。这同时对我们身心发展有着正面积极的影响。也意味着在今后学习生活中,我们更能发挥在实践中掌握的能力和心态,来迎接社会和现实对我们的挑战。这对社会、对我们是双赢的事情。 在今中国经济飞速发展,国内外经济不断变化,机会越来越多的同时,也出现了更多的问题,有了更多更艰巨的挑战,这也就对人才的要求越来越高。我们不仅要学好课本里的知识,还要主动走进社会,积极在实践中学习其他的东西,不断增加自己的经验,全方面武装自己,才能在这个社会有立足之地甚至拥有不败之地。 在志愿活动中,我理解了身为一名以后将踏入社会的社会人,必须要努力工作才能赢得他人的尊重。而工作也绝不能莽撞自负,要听取领导者的号令,若莽撞行事,很可能会使计划与现实产生很大的偏离。更是要对自己的能力有正确清醒的认识,能做什么,不能做什么。在最需要自己的岗位上去奉献自己的价值,这才是实现自己人生价值的最好方式。 社会实践给我的上的课,不仅仅于此,更是有对社会工作的一些亲身体验。这些亲身的体验,比起在课堂上老师口中讲述的理论知识,来的更加实在,是我是人生中宝贵的财富。 大学是一个小社会,步入大学就等于步入半个社会。我们不再是象牙塔里不能受风吹雨打的花朵,通过社会实践的磨练,我们深深地认识到社会实践是一笔财富。社会是一所更能锻炼人的综合性大学,只有正确的引导我们深入社会,了 解社会,服务于社会,投身到社会实践中去,才能使我们发现自身的不足,为今后走出校门,踏进社会创造良好的条件;才能使我们学有所用,在实践中成才,在服务中成长,并有效的为社会服务,体现大学生的自身价值。今后的工作中,是在过去社会实践活动经验的基础上,不断拓展社会实践活动范围,挖掘实践活动培养人才的潜力,坚持社会实践与了解国情,服务社会相结合,为国家与社会的全面发展出谋划策。身为大学生,要为祖国的发展,实现中华民族的伟大复兴,全面建成小康社会,贡献自己的一份力量。 最后感谢社会实践课程对我的积极影响,愿今后每一位学子也能同我一样,在社会实践课程中感触颇深,化作他们身体力行经验的一部分。 设计报告 一,实验目的: 通过上机实习,熟练掌握循环语句、选择语句、指针以及结构体的运用技巧。在实习中通过 实际操作,编写程序,发现问题,最后解决问题,提升对c语言实用性的理解,在实践中巩固各知 识点。 C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点,上 机实习可以帮助我们更好地理解这种结构式的 中级语言以及其各式各样的数据类型和高效率 的运算程序,为我们进一步学习C++打下坚实基 础。 同时,在实习过程中,通过互相发现问题,共同解决问题,不仅锻炼了我们的合作能力,而 且也让我们发现了一些自己的个人误区以及其 他人容易犯的错误,从而在今后的学习中更加谨 慎,达到事半功倍的效果;通过询问老师,也让 我们养成了不耻下问的好习惯,这将很有利于以 后的学习。 闲乐-一个人闲。不如大家一块儿乐https://www.sodocs.net/doc/128226367.html, 二,总体设计: 1,学生成绩排名 1,流程图: <通过冒泡法对数组进行排序> <测试时由于循环语句循环次数的错误导致部分数据没有排序,修改FOR语言中的条件即可调试成功>c语言实践报告
社会实践活动报告范本
社会实践课程 活动报告
C语言实习报告