您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > C++上机实验报告(指针)
C++上机实验报告实验名称:指针专业班级:姓名:学号:实验日期:目录1.实验目的2.实验内容3.程序代码4.调试结果5.实验心得1.实验目的(1)通过实验进一步掌握指针的概念,会定义和使用指针变量;(2)能正确使用数组的指针和指向数组的指针变量;(3)能正确使用字符串的指针和指向字符串的指针变量;(4)能正确使用引用型变量。2.实验内容编程序并上机调试运行程序(要求用指针或引用处理)。(1)输入3个整数,按由小到大的顺序输出。编译一个程序,用指针变量作为参数。(2)在上题的基础上将程序改为:输入3个字符串,按由小到大的顺序输出。(3)用引用指针变量作为形参,实现3个整数由小到大输出。(4)有n个人围成一圈,顺序排号。从第1个人开始报数(从1~3报数),凡是到3的人退出圈子,问最后留下的人原来排在第几号。(5)在主函数中输入10个字符串。用另一个函数最它们排序。然后在主函数输出这10个已排好的字符串。要求用以下方法编程:Ⅰ.指向一维数组的指针座函数参数;Ⅱ.用string数组方法。3.程序代码(1)#includeiostreamusingnamespacestd;intmain(){voidswap(int*p1,int*p2);intn1,n2,n3;int*p1,*p2,*p3;coutinputthreeintegersn1,n2,n3:;cinn1n2n3;p1=&n1;p2=&n2;p3=&n3;if(n1n2)swap(p1,p2);if(n1n3)swap(p1,p3);if(n2n3)swap(p2,p3);coutNow,theorderis:n1n2n3endl;return0;}voidswap(int*p1,int*p2){intp;p=*p1;*p1=*p2;*p2=p;}(2)Ⅰ.用字符数组方法的源程序#includeiostreamusingnamespacestd;intmain(){voidswap(char*,char*);charstr1[20],str2[20],str3[30];coutinputthreeline:endl;gets(str1);gets(str2);gets(str3);if(strcmp(str1,str2)0)swap(str1,str2);if(strcmp(str1,str3)0)swap(str1,str3);if(strcmp(str2,str3)0)swap(str2,str3);coutendlNow,theorderis:endl;coutstr1endlstr2endlstr3endl;return0;}voidswap(char*p1,char*p2){charp[20];strcpy(p,p1);strcpy(p1,p2);strcpy(p2,p);}Ⅱ.用string方法的源程序(程序中使用了指针和引用)#includeiostream#includestringusingnamespacestd;intmain(){voidchange(string&,string&);stringstr1=,str2=,str3=;char*p1=&str1[0],*p2=&str2[0],*p3=&str3[0];coutinputthreeline:endl;gets(p1);gets(p2);gets(p3);if(str1str2)change(str1,str2);if(str1str3)change(str1,str3);if(str2str3)change(str2,str3);coutendlNow,theorderis:endl;coutstr1endlstr2endlstr3endl;return0;}voidchange(string&st1,string&st2){stringst;st=st1;st1=st2;st2=st;}(3)#includeiostreamusingnamespacestd;intmain(){voidexchange(int*,int*,int*);inta,b,c,*p1,*p2,*p3;cinabc;p1=&a;p2=&b;p3=&c;exchange(p1,p2,p3);coutabcendl;return0;}voidexchange(int*q1,int*q2,int*q3){voidswap(int*,int*);if(*q1*q2)swap(q1,q2);if(*q1*q3)swap(q1,q3);if(*q2*q3)swap(q2,q3);}voidswap(int*pt1,int*pt2){inttemp;temp=*pt1;*pt1=*pt2;*pt2=temp;}(4)#includeiostreamusingnamespacestd;intmain(){inti,k,m,n,num[50],*p;coutinputnumberofperson:n=;cinn;p=num;for(i=0;in;i++)*(p+i)=i+1;i=0;k=0;m=0;while(mn-1){if(*(p+i)!=0)k++;if(k==3){*(p+i)=0;k=0;m++;}i++;if(i==n)i=0;}while(*p==0)p++;coutThelastoneisNO.*pendl;return0;}(5)Ⅰ.指向一维数组的指针最函数参数的源程序#includeiostreamusingnamespacestd;intmain(){voidsort(char(*p)[6]);inti;charstr[10][6];char(*p)[6];coutinput10strings:endl;for(i=0;i10;i++)cinstr[i];p=str;sort(p);coutNow,thesequenceis:endl;for(i=0;i10;i++)coutstr[i]endl;return0;}voidsort(char(*s)[6]){inti,j;chartemp[6],*t=temp;for(i=0;i9;i++)for(j=0;j9-i;j++)if(strcmp(s[j],s[j+1])0){strcpy(t,s[j]);strcpy(s[j],s[+j+1]);strcpy(s[j+1],t);}}Ⅱ.用string数组方法的源程序#includeiostream#includestringusingnamespacestd;intmain(){voidsort(string*);inti;stringstr[10],*p=str;coutinput10strings:endl;for(i=0;i10;i++)cinstr[i];sort(p);coutNow,thesequenceis:endl;for(i=0;i10;i++)coutstr[i]endl;return0;}voidsort(string*s){inti,j;stringtemp;for(i=0;i9;i++)for(j=0;j9-i;j++)if(s[j]s[j+1]){temp=s[j];s[j]=s[+j+1];s[j+1]=temp;}}4.调试结果(1)inputthreeintegersn1,n2,n3:54-122Now,theorderis:-12254(2)inputthreelines:Istudyveryhard.Clanguageisveryinteresting.Heisaprofessor.Now,theorderis:Clanguageisveryinteresting.Heisaprofessor.Istudyveryhard.(3)1268761287(4)inputnumberofperson:n=8ThelastoneisNo.7(5)input10strings:Now,thesequenceis:ChinaBurmaJapanChinaKoreaEgyptEgyptGhanaNepalItalyBurmaJapanGhanaKoreaSudanLibyaItalyNepalLibyaSudan5.实验心得指针同数组一样,是C++中一个重要的概念,一个重要的知识点。虽然指针的概念比较复杂,若是真正掌握,使用起来会比较灵活方便。不过也正是如此,我们在编译程序的时候滥用符号,乱用搭配或是套用函数等等情况普遍出现。另外,对于各种类型的指针也不太能很好的分清楚,以及各种与指针有关的函数,数组与指针,字符串与指针等也是我们学习指针这一节的难点与重点。所以,我觉得掌握指针的使用,其前提是了解并且能够理清其相关的原理,熟记指针数据类型,指针运算及各种指针变量的特点与用法。诚然,引用型变量也是如此。多动手,多练习,同时也要注意分析程序的各个成分及其原理,能掌握一个程序完整的运行顺序明确其结果。
本文标题:C++上机实验报告(指针)
链接地址:https://www.777doc.com/doc-4124721 .html