您好,欢迎访问三七文档
江苏科技大学课程实践报告设计题目:程序设计(VC++)实践设计时间:2018-2-26至2018-3-2学院:xxxxxx专业班级xxxxxxx学生姓名:xxxx学号xxxxxxx指导老师:严熙基础题第二题:实验目的:建立类练习类的使用;练习类内说明类外定义;练习调用函数;;for循环语句实验内容:试建立一个类SP,求f(n,k)=1^k+2^k+3^k+....+n^k,另有辅助函数power(m,n)用于求m^n。具体要求如下:(1)私有成员数据。intn,k:存放公式中n和k的值(2)公有成员函数SP(intn1,intk1):构造函数,初始化成员数据n和k。intpower(intm,intn):m^n。intfun():求公式的累加和。voidshow():输出求得的结果。(3)在主程序上定义对象s,对该类进行测试。实验编码:#includeiostream.hclassSP{intn,k;public:SP(intn1,intk1){n=n1;k=k1;}intpower(intm,intn);intfun();};intSP::power(intm,intn){ints=1;for(;n;){s=s*m;n=n-1;}returns;}intSP::fun(){intt=0;for(inti=1;i=n;i++){t=t+power(i,k);}returnt;}voidmain(){intn,k;cout请输入nendl;cinn;cout请输入kendl;cink;SPs(n,k);intt=s.fun();cout测试结果为tendl;}实验结果:实践小结:类内说明类外定义的时候千万不能忘了全局运算符。基础题第三题:实验目的:创建移动数据的类;对数组进行移动转移;加深对数组的理解;实验内容:建立一个类MOVE,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平均值的元素放到数组的右边。具体要求如下:(1)私有数据成员floatarray[20]:一维整型数组。intn:数组中元素的个数。(2)公有成员函数MOVE(floatb[],intm):构造函数,初始化成员数据。voidaverage():输入平均值,并将数组中的元素按要求重新放置。voidprint():输出一维数组。(3)在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试实验编码:#includeiostream.hclassMOVE{private:floatarray[20];intn;public:MOVE(floatb[],intm){for(inti=0;im;i++){array[i]=b[i];}n=m;}voidaverage();voidprint();~MOVE(){};};voidMOVE::average(){floatave=0;inti,j;for(i=0;in;i++){ave+=array[i];}ave/=n;cout平均值为aveendl;floatturn[20];j=0;for(i=0;in;i++){if(array[i]=ave){turn[j]=array[i];j++;}}j=0;for(i=0;in;i++){if(array[i]ave){turn[n-1-j]=array[i];j++;}}for(i=0;in;i++){array[i]=turn[i];}}voidMOVE::print(){for(inti=0;in;i++){coutarray[i]'';}}voidmain(){floatb1[]={1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3};intnum;num=sizeof(b1)/sizeof(float);MOVEs(b1,num);s.average();s.print();}实验结果:实践小结:本来以为程序很容易实现还不进行排序应该很容易就写出来了,但是事实证明不进行排序的话更难实现功能。基5:实验目的:实现绝对回文数功能;练习类内说明类外定义;设计二进制算法;私有和公有函数的编写;实验内容:定义一个类Palindrome,实现绝对回文数。设计一个算法实现对任意整型数字判断是否为绝对回文数。所谓绝对回文数,是指十进制数和二进制数均对称的数。具体要求如下:(1)私有数据成员intn:整型数字。inty:标记是否为回文数。(2)公有成员函数Palindrome(intx):构造函数,根据x参数初始化数据成员n,y初始化为0。voidhuiwen():判断数n是否为绝对回文数。voidshow():若该数为回文数,则在屏幕显示。(3)在主程序中定义inta,由键盘输入数字。定义一个Palindrome类对象p,用a初始化p,完成对该类的测试。实验编码:#includeiostream.hclasspalindrome{intn,y;public:palindrome(intx){n=x;y=0;}voidhuiwen();voidshow();};voidpalindrome::huiwen(){inti=0,j=0;intm;m=n;while(m){m/=10;i++;}m=n;while(m){m/=2;j++;}int*s3=newint[i];int*s2=newint[j];m=n;for(intk=0;ki;k++){s3[i-1-k]=m%10;m/=10;}m=n;for(k=0;kj;k++){s2[j-1-k]=m%2;m/=2;}intnum3=0;for(k=0;ki/2;k++){if(s3[i-1-k]==s3[k])num3++;elsebreak;}intnum2=0;for(k=0;kj/2;k++){if(s2[j-1-k]==s2[k])num2++;elsebreak;}if(num3==(i/2)&&num2==(j/2))y=1;}voidpalindrome::show(){if(y==1)coutn是绝对回文数endl;if(y==0)coutn不是绝对回文数endl;}voidmain(){inta;cout请输入任意整数endl;cina;palindromep(a);p.huiwen();p.show();}实验结果:实践小结:绝对回文数功能比起回文数来说又难了不少,在网上查了一下功能函数才实现了二进制算法的功能。’基础题11题:实验目的:数组间的数据的移动和转换;通过指针在两个数组间的使用来实现交换数据的功能;实验内容:建立一个STRING,将一个字符串交叉插入到另一个字符串中(假定两字符串等长)。例如将字符串“abcde”交叉插入字符串“ABCDE”的结果为“aAbBcCdDeE”或“AaBbCcDdEe”。具体要求如下:(1)私有数据成员charstr1[80]:存放被插入的字符串。charstr2[40]:存放待插入的字符串。(2)公有成员函数STRING(char*s1,char*s2):构造函数,用s1和s2初始化str1和str2。voidprocess():将str2中的字符串插入到str1中。voidprint():输出插入后的字符串。(3)在主程序中定义STRING类的对象test对该类进行测试。实验编码:#includeiostream.h#includestring.hclassSTRING{charstr1[80];charstr2[40];public:STRING(char*s1,char*s2);voidprocess();voidprint();};STRING::STRING(char*s1,char*s2){for(inti=0;i80;i++)str1[i]=s1[i];for(intj=0;j40;j++)str2[j]=s2[j];}voidSTRING::process(){chars[40];strcpy(s,str1);inti=0,j=0;while(str2[i]){str1[j++]=str2[i];str1[j++]=s[i];i++;}str1[j]='\0';}voidSTRING::print(){cout交叉后的字符串为:;coutstr1endl;}voidmain(){charstr1[80],str2[40];cout输入字符串1endl;cin.getline(str1,39);cout输入字符串2endl;cin.getline(str2,39);STRINGtest(str1,str2);test.process();test.print();}实验结果:实验总结:刚开始程序一直崩溃,修改了很多次之后才恢复正常。基础题十七题:实验目的:通过函数实现计算一个数的正弦值;构建多个功能函数相互调用实现功能;实验内容:定义一个类SIN,求(函数我不会打)具体要求如下:(1)私有成员数据。intx:输入公式中x的值,求sin(x)。intn:输入公式中n的值。(2)公有成员函数。SIN(intx,intn):构造函数,用于初始化x和n的值。intpower(intq):求q!的值。intmi(intm,intn):求的值。intfun():用于求SIN(X)的值。voidshow():输出求得的结果。(3)在主程序中定义对象test,对该类进行测试。实验编码:#includeiostream.hclassSIN{doublex;intn;public:SIN(doublex,intn){this-x=x;this-n=n;}doublemi(intm,intn);doublefun();voidshow();doublepower(intq);};doubleSIN::power(intq){ints=1;for(inti=1;i=q;i++){s=s*i;}returns;}doubleSIN::mi(intm,intn){intsum=1;for(inti=1;i=n;i++){sum=sum*m;}returnsum;}doubleSIN::fun(){floats=0;for(inti=1;i=n;i++)s+=mi(-1,i+1)*mi(x,2*i-1)/power(2*i-1);returns;}voidSIN::show(){coutsin(x)的值为fun()endl;}voidmain(){doublex;intn;cout请输入要求的x值endl;cinx;cout请输入公式中的n值endl;cinn;SINtest(x,n);test.show();}实验结果:实验总结:注意输入值的范围,不然很容易出错提2:实验目的:使用类与不同类之间的函数调用问题;实验内容:设计一个电子通信录。其中包括如下类:(1)通信地址类addr。包含公有数据:成员charpost[10];//邮编成员charad[40];//家庭地址构造函数addr(charp[10]=\;成员函数voidsetadd(addra);//用a为当前对象赋值(2)出生年月类birth。包含公有数据:成员intyear;//年份成员intmonth;//月份成员intday;//日期构造函数birth(inty=0,intm=0,intd=0);成员函数voidsetbir(birthb);//用b为当前对象赋值(3)类friends。包含数据:私有成员intnumber;//序号私有成员charname[20];//姓名私有成员charsex;//性别私有成员chartelephone[13];//联系电话公有成员birthbir;//出生年月公有成
本文标题:C++课程设计
链接地址:https://www.777doc.com/doc-4973729 .html