西安交通大学实验报告课程计算机程序设计实验名称标准库和输入输出流第1页共页系别材料科学与工程实验日期2014年12月18日专业班级组别实验报告日期2014年12月22日姓名学号报告退发(订正、重做)同组人_________________________________教师审批签字一.实验目的(1)掌握C++语言输入和输出操作的方法;(2)掌握C++的流和流类库的使用方法。二.实验内容(-)实验题目一:按下列各式输出圆周率的值。33.13.143.1413.14153.141593.1415923.14159261.程序源代码#includeiostream#includeiomanip#includecmathusingnamespacestd;intmain(){doublepi=3.141592653;intplaces;coutsetiosflags(ios::fixed)调用成员函数方法设置精度:endl;for(places=0;places=9;places++){cout.precision(places);coutpi'\n';}cout使用流操作符方法设置精度:\n;for(places=0;places=9;places++)coutsetprecision(places)pi'\n';return0;}3.实验结果(二)实验题目二:读取一个C++源程序文件(少于1000行),在每一行前边添加行号后在屏幕上输出。要求行号占四个字符位置,源程序除了右移4个字符外其他不变。1.程序源代码#includeiostream#includefstreamusingnamespacestd;intmain(){ifstreamin(nn.cpp);//”nn.cpp”为本程序的源文件if(!in){coutCannotopenthefile.\n;return1;}chara[100];for(inti=1;i=1000;i++){in.getline(a,100);if(a[0]!='\0'){couta;cout\riendl;}}in.close();return0;}2.实验结果(三)实验题目三:一个文本文件有多行信息,编写程序读取其内容,统计最长的一行信息和最短的一行信息各有多少个字符。1.程序源代码#includeiostream#includefstreamusingnamespacestd;intmain(){ifstreamin(d:\\vvvvv.txt);if(!in){coutCannotopenthefile.\n;return1;}chara[100];intmax=0,min=100,minl=100,maxl=0;for(inti=1;i=1000;i++){in.getline(a,100);if(a[0]!='\0'){intj=0;cout;while(a[j]!='\0'){couta[j];j++;}if(jmax){max=j;maxl=i;}if(jmin){min=j;minl=i;}cout\rjendl;}}in.close();cout第maxl行字符数最多,有max个字符endl;cout第minl行字符数最少,有min个字符endl;return0;}3.实验结果(四)实验题目四:实验题目四:已知一个文件内容是某公司雇员的信息,每行的内容依次是编号,姓名,籍贯,年龄:001011刘强上海19001012王刚山西28001013李红四川25……编写程序,首先将文件中小于22岁的人依次在屏幕上显示,并计算这些人的平均年龄然后输出(四舍五入)。然后再将文件中的上海人依次显示在屏幕上,统计他们的人数后输出。1.程序源代码#includeiostream#includefstream#includecmath#includeiomanip#includestringusingnamespacestd;intmain(){ifstreamin(d:\\vpvpv.txt);if(!in){coutfailtoopenthefile!endl;return1;}charbiaohao[10];charname[20];charjiguan[5];intage;intj=0,i=0;doubleaver_age=0;cout年龄在22岁以下的有:endl;while(in){inbiaohaonamejiguanage;if(in){if(age22){j++;aver_age=aver_age+age;coutbiaohaonamejiguanageendl;}}}aver_age=aver_age/j;cout这j人的平均年龄setiosflags(ios::fixed)setprecision(0)aver_ageendl;ifstreamin1(d:\\vpvpv.txt);if(!in1){coutfailtoopenthefile!endl;return1;}while(in1){in1biaohaonamejiguanage;if(in1){if(strcmp(jiguan,上海)==0){i++;coutbiaohaonamejiguanageendl;}}}cout这i人的籍贯为上海endl;in.close();in1.close();return0;}2.实验结果(五)实验题目五:已知一个C++原程序文件,该文件包括很多注释,这些注释都有“//”引导。编写程序,去掉注释后写入新文件out.cpp,同事将文件的内容在屏幕上输出。1.程序源代码#includeiostream#includefstreamusingnamespacestd;intmain(){ifstreamin(d:\\pp.cpp);ofstreamout;out.open(d:\\out.cpp);if(!out){coutCannotopengradefile.\n;return1;}if(!in){coutCannotopengradefile.\n;return1;}charch[100];while(in){for(inti=1;i160;i++){intj=0;in.getline(ch,100);if(ch[0]=='\0')break;while(ch[j]!='/'&&ch[j+1]!='/'&&ch[j]!='\0'){outch[j];coutch[j];j++;}outendl;coutendl;}}in.close();out.close();return0;}2.实验结果(六)实验题目六:一个文本文件由英文字母组成,读取该文件,将文件中的字符串“abc”换为“xyz”后写入新文件out.txt中,同事将新文件的内容在屏幕上输出。1.程序源代码#includeiostream#includefstreamusingnamespacestd;intmain(){ifstreamin(d:\\aaass.txt);ofstreamout;out.open(d:\\out.txt);if(!out){coutCannotopengradefile.\n;return1;}if(!in){coutCannotopengradefile.\n;return1;}charch[100],sr[100];while(in){for(inti=1;i160;i++){intj=0;in.getline(ch,100);while(ch[j]!='\0'){if(ch[j]=='a'&&ch[j+1]=='b'&&ch[j+2]=='c'){ch[j]='x';ch[j+1]='y';ch[j+2]='z';}outch[j];coutch[j];j++;}outendl;coutendl;}}in.close();out.close();return0;}2.实验结果(七)实验题目七:一个文本文件中有一些整数,这些整数用逗号分开,个数不超过20个。编程读取该文件,想办法得到这些整数,计算所有数字的平均值并在屏幕上输出。1.要点分析可以是伪代码或流程图2.程序源代码#includeiostream#includecmath#includefstream#includestdlib.husingnamespacestd;intmain(){ifstreamin(d:\\5.txt);if(!in){coutCannotopengradefile.\n;return1;}charch[20][20];inttemp[20],i=0,m=0;intnum=0;while(in){for(inti=0;i20;i++){if(ch[i]!='\0')in.getline(ch[i],20,',');}}while(ch[num][0]!='\0'){temp[num]=atoi(ch[num]);m+=temp[num];num++;}cout总和为mendl;cout平均数为m/numendl;in.close();return0;}3.实验结果实验题目八:找出100以内的勾股数,输出到文件gouku中。所谓勾股数指找出三个数满足A2+B2=C2,并且ABC。要求将三个勾股数的计算公式A^2+B^2=C^2输出到文件中的每一行,例如:3^2+4^2=5^29+16=251.程序源代码#includeiostream#includefstreamusingnamespacestd;intmain(){ofstreamout;out.open(d:\\gouku.txt);if(!out){coutCannotfindthisfile!\n;}inta,b,c;for(a=1;a71;a++){for(b=a+1;b100;b++){for(c=b+1;c100;c++){if((a*a+b*b)==(c*c)&&ab&&bc){outa^2+b^2=c^2\t;outa*a'+'b*b'='c*cendl;}}}}out.close();return0;}2.实验结果三.个人小结本次实验的主要内容是C++语言输入和输出操作的方法和C++的流和流类库的使用方法,内容本身比较简单,但是应用前面学过的知识写好各个程序还是有难度。知识的深入也令我越来越领略到这门课的实用性和重要性。我相信经过一个学期的学习,知识储备会达到一个新的高度。上周的优秀实验模板,我主要看了许自宽同学的,非常完美,对于每个实验的要点分析,注释以及最后的实验小结都非常到位,这些是我应该学习的地方。我主要对比了第四,五,七题做法,对题目本身,解决思路,等方面都有了新的认识,结合我们不同的思路和方法,我觉得我们可以把程序写的更加完美!