版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西安交通大学实验报告
课程计算机程序设计实验名称标准库和输入输出流第1页共25页
系别实验日期2014年6月7日
专业班级组别实验报告日期2014年6月7日
姓名学号报告退发(订正、重做)
同组人教师审批签字
一、实验目的
掌握C++语言输入和输出操作的方法、流和流类库的使用方法。
二、实验内容
(一)第一题:编写一个程序,分别用不同的域宽(0~10)打印
出整数12345和浮点数1.2345。观察当域宽小于数值的实际需要
域宽时会发生什么状况。
1.源程序代码:
#include<iostream>
usingnamespacestd;
voidmain()
intWIDTH;
for(WIDTH=10;WIDTH>0;WIDTH—)
cout<〈〃域宽、精度为〃<<Wn)TH<〈〃:\n〃
cout.precision(WIDTH);〃全局作用
cout.width(WIDTH);〃只起一次作用
cout«12345«,,\nz,«l.2345«endl;
2.实验结果:
SBC:\windows\system32\...|0||
城宽、精度为10:7
12345
1.2345
域宽、精度为9:=
12345
1.2345
域宽、精度为8:
12345
1.2345
域宽、精度为7:
12345
1.2345
域宽、精度为6:
12345
1.2345
域宽、精度为5:
12345
1.2345
域宽、精度为4:
12345
1.234
域宽、精度为3:
12345
1.23
域宽、精度为2:
12345
1.2
域宽、精度为1:
12345
1
请按任意键继续.•.
▼
4IfHI►
3.结论:
⑴域宽不够时会自动补足。
⑵精度只需一次定义则一直有效。
(3)域宽需要每次输出时均进行定义
(二)第二题:编写一个程序,将华氏温度0度~212度转化为浮点
型摄氏温度,浮点精度为3.转换公式为如下:
Celsius=5.0/9.0*(Fahrenheit-32);
输出用两个右对齐序列,摄氏温度前面加上正负号。
1.源程序代码:
#include<iostream>
usingnamespacestd;
voidmain()
(
doubleCelsius,Fahrenheit;
cout.precision(3);
cout«〃转换结果为:\n〃;
for(Fahrenheit=O;Fahrenheit<=212;Fahrenheit++)
(
cout.unsetf(ios::showpos);
Celsius=5.0/9.0*(Fahrenheit-32);
cout.setf(ios::showpos);
cout〈<Celsius<〈”度\n〃;
)
2.实验结果:
SBC:\windows\system32\cmd.exe|CD||Bl|rfaw|
转换结果为:
华氏0度=摄氏T7.8度
华氏1度=摄氏T7.2度
华氏2度=摄氏-16.7度
华氏3度=摄氏-16.1度
华氏4度=摄氏T5.6度
华氏5度=摄氏-15度
华氏6度=摄氏-14.4度
华氏7度=摄氏T3.9度
华氏8度=摄氏-13.3度
华氏9度=摄氏-12.8度
华氏10度=摄氏T2.2度
华氏11度=摄氏TL7度
华氏12度=摄氏-11.1度
华氏13度=摄氏-10.6度
华氏14度=摄氏T0度
图C:\windows\system32\cmd.exe|UI||回Hw-I
华氏195度=摄氏-90.6度
华氏196度=谡氏-91.1度
华氏197度=宗氏-91.7度
华氏198度=摄氏-92.2度
华氏199度=费氏-92.8度
华氏200度=摄氏,93.3度
华氏201度=景氏-93.9度
华氏202度=索氏+94.4度
华氏203度=摄氏-95度
华氏204度=景氏-95.6度
华氏205度=摄氏+96.1度
华氏206度=费氏-96.7度
华氏207度=摄氏-97.2度
华氏208度=索氏-97.8度
华氏209度=摄氏,98.3度
华氏210度;景氏,98.9度
华氏211度二强氏-99.4度
华氏212度=摄氏+100度
请按任意键继续...
(三)第三题:编写一个程序,打印出ASCH字符集中码值为
33~126的字符的ASCH码表。要求输出十进制值、八进制值、十六进
制值以及码值所表示的字符。
1.源程序代码:
#include<iostream>
usingnamespacestd;
voidmain()
(
inta;
charw;
cout«〃字符八进制十进制十六进制\n〃;
for(a=33;a<=126;a++)
(
w=a;
cout<<w<<,,\t/z<<oct<<a<</,\t/z<<dec<<a<<,,\t,,<<hex«a<<endl;
2.实验结果:
QBC:\windows\system32\cmd.exe|
字符八进制十进制十六进制
I
,,4133
4234
433523
$443624
I_J
%453725
&463826
473927
(504028
)014129
*52422a
一53432b
?54442c
-55452d
56462e
57472f
0604830
1614931
?625032
3635133
4645234
5655335
6665436
670037
8705638
9715739
*72583a
73593b
/
\74603c▼
4nr□►
OSC:\windows\system32\cmd.exe-IlBIlrf3»l
d14410064>
e14510165
f14610266
g14710367
h15010468
i15110569
j1521066a
k1531076b
11541086c
m1551096d
n1561106e
o1571116f
p16011270
q16111371三
r16211472
s16311573u
t16411674
u16511775
v16611876
w16711977
x17012078
y17112179
z1721227a
{1731237b
1741247c
1751257d
1761267e
请按任意键继续...
▼
*Lmi►
四、第四题:修改例11-2中的程序,重载〉运算符,使其能够直接
使用cin语句输入Date类对象。
1.源程序代码:
//日期类定义date.h
#ifndefDATE_H
#defineDATEH
Sinclude<iostream>
usingnamespacestd;
classDate
friendostream&operator<<(ostream&,constDate&);
friendistream&operator»(istream&,Date&);
intday,month,year;
voidIneDay();〃日期增加一天
intDayCalcOconst;//距基准日期的天数
staticconstintdays]];〃每月的天数
public:
Date(inty,intm,intd);〃构造函数
Date(intm,intd);〃构造函数,年默认为系统当前年份
DateO;〃构造函数,默认为系统日期
voidSystemDate();
voidSetDate(intyy,intmm,intdd);〃日期设置
voidSetDate(intmm,intdd);〃日期设置,年默认为系统年份
boolIsLeapYear(intyy)const;//是否闰年?
boolIsEndofMonthOconst;//是否月末?
voidprint_ymd()const;〃输出日期yymmdd
voidprint_mdy()const;〃输出日期mm_dd_yy
constDate&operator+(intdays);//日期增加任意天
constDate&operator+=(intdays);//日期增加任意天
intoperator-(constDate&ymd)const;//两个日期之间的天数
voidShow(Date&da);
);
#endif
//Date类成员函数定义date,cpp
Sinclude<iostream>
Sinclude<time.h>
Sinclude"date.h〃
usingnamespacestd;
constintDate::days[]={0,31,28,31,30,31,30,
31,31,30,31,30,31);
〃构造函数
Date::Date(inty,intm,intd){SetDate(y,m,d);)
Date::Date(intm,intd){SetDate(m,d);}
Date::Date(){SystemDate();}
voidDate::SystemDate()
{〃取得系统日期
tm*gm;
time_tt=time(NULL);
gm=gmtime(&t);
year=1900+gm->tm_year;
month=gm->tm_mon+1;
day=gm->tm_mday;
voidDate::SetDate(intyy,intmm,intdd)
(
month=(mm>=1&&mm<=12)?mm:1;
year=(yy>=1900&&yy<=2100)?yy:1900;
if(month==2&&IsLeapYear(year))
day=(dd>=1&&dd<=29)?dd:1;
else
day=(dd>=1&&dd<二days[month])?dd:1;
)
voidDate::SetDate(intmm,intdd)
(
tm*gm;
time_tt=time(NULL);
gm=gmtime(&t);
month=(mm>=1&&mm<=12)?mm:1;
year=1900+gm->tm_year;
if(month==2&&IsLeapYear(year))
day=(dd>=1&&dd<=29)?dd:1;
else
day=(dd>=1&&dd<=days[month])?dd:1;
)
constDate&Date::operator+(intdays)
{〃重载+
for(inti=0;i<days;i++)
IneDay();
return*this;
)
constDate&Date::operator^(intdays)
{〃重载+=
for(inti=0;i<days;i++)
IneDay();
return*this;
}
intDate::operator-(constDate&ymd)const
{〃重载-
intdays;
days=DayCalc()-ymd.DayCalc();
returndays;
)
boolDate::IsLeapYear(inty)const
if(y%400==0i|(y%100!=0&&y%4==0)
returntrue;
returnfalse;
)
boolDate::IsEndofMonth()const
{
if(month==2&&IsLeapYear(year))
returnday==29;〃二月需要判断是否闰年
else
returnday==days[month];
)
voidDate::IneDay()
(〃日期递增一天
if(IsEndofMonth())
if(month==12){//年末
day=1;
month=1;
year++;
}
else{//月末
day=1;
month++;
}
elseday++;
)
intDate::DayCalc()const
(
intdd;
intyy=year-1900;
dd=yy*365;
if(yy)dd+=(yy-l)/4;
for(inti=l;i<month;i++)
dd+=days[i];
if(IsLeapYear(year)&&(month>2))
dd++;
dd+=day;
returndd;
)
voidDate::print_ymd()const
(
cout<<year<<"-"«month<<"-"«day<<endl;
)
voidDate::print_mdy()const
char*monthName[12]={"January”,
rebruary,March,Apri1,May,June,
“July","August","September","October”,
“November","December");
cout<<monthName[month-1]<X''
«day<<"、"<<year<<endl;
)
voidDate::Show(Date&da)
(
if(day==da.day&&month==da.month)
cout<</zHappyBirthday!,z;
else
(
if(da-Date::Date()<0)
da.year++;
cout<<,zItwillbeyourbirthdayafter,z<<da-Date::Date()«z,
days!;
)
)
ostream&operator«(ostream&output,constDate&d)
(
staticchar*monthName[12]=
(
〃丁〃
January,
“February”,
“March”,
"April",
"May",
〃T〃
June,
〃July〃,
“August”,
“September”,
“October”,
“November”,
“December”
};
output«monthName[d.month-1]'<<d.day<<〃,〃<<d・year;
returnoutput;
)
istream&operator»(istream&in,Date&d)//
{
inta,b,c;
in»a>>b>>c;
d.year=a;
d.month=b;
d.day=c;
returnin;
)
〃main.cpp修改例-9中的程序,重载〉运算符,使其能够直接使用cin语句输入
Date类对象。
Sinclude<iostream>
Sinclude"date.h〃
usingnamespacestd;
intmain()
(
Datetoday,Olympicday(2004,8,13);
cout<<"Today(thecomputer'sday)is:/z<<today<<endl;//
today+=365;//
cout<<"After365days,thedateis:z,<<today«endl;
Datetestday(2,28);
cout<<"thetestdateis:,,«testday<<endl;//
Datenextday=testday+1;
cout<<"thenextdateis:,z«testday<<endl;//
today.SystemDateO;
cout«”theAthensOlympicGamesopendayis:/,<<01ympicday<<endl;
cout<<"Andafter〃<<Olympicday-today
«〃days,theAthensOlympicGameswillopen.z,«endl;
Datebirthday;
cout。〃输入出生年月日:〃;
cin>>birthday;
cout<<〃输入的是:/z«birthday<<endl;
return0;
)
2.实验结果:
SBC:\windows\system32\cmd.exe|o
Today(thecomputer,sday)is:April11,2014-
After365days,thedateis:April11,2015□
thetestdateis:February28,2014
thenextdateis:March1,2014
theAthensOlympicGamesopendayis:August13,2004
Andafter_3528days,theAthensOlympicGaineswillopen.
输入出生年月日:200011
输入的是:January1,2000
请按任意键继续•...
五、第五题:编写一个程序,可以读入一个C++语言的源文件,每一
行加上行号后保存到另一个后缀为.pm的同名文件中。
1.源程序代码:
Sinclude<fstream>
Sinclude<string>
#include<iostream>
usingnamespacestd;
intmain()
(
strings,name,namel;
cout«”请输入源C++文件的名称(不含有后缀名):〃;
cin>>name;
namel=name+,/.prn〃;
name+=z,.cpp〃;
ifstreamread(name.c_str());〃读取的文件,用name,cstr()是将string
的char*类型转换成const的类型,不然会出错
fstreamwrite;
write,open(namel.c_str(),ios::trunc/*创建文件*/1ios::out/*写文件
*/);〃输出的文件,创建文件并写文件
inti=0;
if(!read)
cout<<z,Cannotopeninput
return0;
}〃如果打开输入文件失败
if(!write)
cout<</zCannotopenoutputfile\n”;
return0;
}〃如果打开输出文件失败
while(getline(read,s))〃逐行读取文件中数据到字符串s中
write〈〈++i<Xs〈〈endl;〃输出读取文件的信息到目标文件
read,close();
write.close0;〃关闭文件
cout«/z目标文件生成成功!(和源文件同目录)“<<endl;
return0;
2.实验结果:
实验前:
实验后:
hao.pm-记事本
文件(B编辑但格式9)查看凹帮助(H)
2
3#include<fstream/
4usingnainespacestd;
5intmain。
6{
7charch;
8inti=l;““
9ifstreamin(//hao.cpp,y,ios::binary);
10ofstreamout(〃hao.prn");
11if(1out)
12(〃,
13cout«y/Cannotopenthefile//«endl;
14return1;
15)
16if(lin)
17{“.
18cout«”Cannotopenthethefilez/«e
19return1;
20)
21out«i«,\t";
22while(in)
23{
24in.get(ch);
25if(in)out<<ch;
26if(ch-3\n)
27{out«i+l«,\t";
28i++;
29}
30)
31out.close();
32return0;
}
六、第六题:将一个文本文件内容用凯撒尔方法加密,密钥是4。即
文本文件中字母用其后第4个字母代替,若是数字则用其后第4个数
字代替。例如文本文件原内容为“RedAndBlack2008",加密后
文本文件内容为“VihErhFpego6442”。(提示:先用记事本创
建一个文本文件,其内容应该是有意义的英文句子,然后以只读方式
打开,加密后的内容写入另一个文本文件中。)
1.源程序代码:
#include<iostream>
#include<fstream>
usingnamespacestd;
charjiami(charch);
intmain()
(
ifstreamin(〃test.txt〃);
ofstreamout("test1.txt,z);
if(!in)
(
cout«z,Cannotopenthefile.,,«endl;
return1;
)
if(!out)
{
cout<<z,Cannotopenthefile.,z«endl;
return1;
}
charch;
while(in)
(
in.get(ch);
ch=jiami(ch);
if(in)out<<ch;
)
in.closeO;
out.close();
return0;
)
charjiami(charch)
(
if(ch>='0'&&ch<='9')
(
if(ch>,5,)ch=ch-6;
elsech+=4;
}
elseif(ch>=,a"&&ch<=,z,)
(
=,
if(ch>w')ch二ch+4,z'+'a,-1;
elsech+=4;
)
elseif(ch>='A'&&ch〈二'Z')
(
if(ch>=,W,)ch=ch+4-'Z'+'A'-1;
elsech+=4;
returnch;
)
2.实验结果:
加密前:
Change[heUnchangeable.
GoodEvening,everyone.Itj-smypleasuretogivethisspeechtoday.
Thetopicofmyspeechis,changetheunchangeable.P
Asisknowntousall,wealwaysmeetwithalIkindsofdifficulties
andotherthingsthatcannotbechangedinourIife.TheyarejustIike
stumblingblocksonourroad,whichpreventusfromabetterIife.
Butdoesitmeanthatwecandonothingbutacceptthefactand
reaIizethatalIthesethingsareunchangeable?Here,Iwanttoshare
astorywithyou,whichmightgiveyoutheanswer.
HaveyoueverheardofthestoryofNickVujicis,afamousAustralia
speakerwhowasbornwithoutIimbs?WhenhewasaIittIeboy,heoften
feltverydepressedandevenwantedtosuicideforthechiIdrenaround
himoftensaidthathewasamonsterandalwaysIaughathim.Itseemed
thathiswassounluckyandnearlyeveryonethoughtthathisunfortunate
Iifewouldbeunchangeable.Butinfact,withtheencouragementofhis
parents,hesuddenlyrealizedthathecouldalsoIiveabetterIife
thanordinarypeoplealthoughhewasnotthesameasthem.Sofromthen
on,hebegantotrytodoanythingthathewantedtodo,including
writing,playingfootbalIFswimmingandmanyotherthings,whichseemed
tobeimpossibleforhim.Andintheend,hegottv/obachelorj-sdegrees
andbecameafamousspeaker.|
Thankyou!?
加密后:
GlerkiXIiYrglerkiefpi^
KsshIzirmrk,izivcsri.Mx*wqctpiev/yvixskmzixlmv/wtiigIxshec.XIixstmg
sjqcwtiigImw,glerkixliyrglerkiefpi.
Ewmworsarxsywepp,aiepaecwqiixamxleppomrhwsjhmjjmgypxmiwerhsxliv
xlmrkv/xlexgerrsxfiglerkihmrsyvpmji.XIicevinywxpmoiwxyqfpmrkfpsgowsr
syvvseh,aImgItvizirxywjvsqefixxivpmji.P
Fyxhsiwmxqierxlexaigerhsrsxlmrkfyxeggitxxlijegxerhviepmdixlex
eppxliwixlmrkweviyrglerkiefpi?Livi,Maerxxswleviewxsvcamxlcsy.aImgI
qmklxkmzicsyxlierwaiv.
LezicsyizivIievhsjxliwxsvcsjRmgoZynmgmw.ejeqsywEywxvepmewtieoiv
aIsaewfsvramxIsyxpmqfw?AlirIiaewepmxxpifsc.Iisjxirjipxzivchitviwwih
erhiziraerxihxswymgmhijsvxligImphvirevsyrhImqsjxirwemhxlexIiaewe
qsrwxiverhepaecv/peyklexImq.MxwiiqihxlexImwaewwsyrpygocerhrievpc
izivcsrixlsyklxxlexImwyrjsvxyrexipmjiasyphfiyrglerkiefpi.Fyxmrjegx.
amxlxliirgsyvekiqirxsjImwtevirxw,IiwyhhirpcviepmdihxlexIigsyphepv/s
pmziefixxivpmjixlersvhmrevctistpiepxlsyklIiaewrsxxliweqiewxliq.Ws
jvsqxlirsr.IifikerxsxvcxshsercxlmrkxlexIiaerxihxshs,mrgpyhmrk
avmxmrk,tpecmrkjssxfepp,wamqqmrkerhqercsxlivxlmrkw.aImgIwiiqihxsfi
mqtswwmfpijsvImq.Erhmrxliirh,Iiksxxasfeglipsv,v/hikviiwerhfigeqie
jeqsywwtieoiv.~
Xlerocsy!^
(七)第七题:(必作题)找出100以内的勾股数,输出到文件gouku
中。所谓勾股数指找出三个数满足A2+B2X2,并且A〈B<C。要求将三
个勾股数的计算公式A'2+B"2=C^2输出到文件中的每一行,例如
3c2+412=5”9+16=25。
1.源程序代码:
#include<iostream>
#include<fstream>
#include<iomanip>
usingnamespacestd;
intmain()
(
ofstreamout(,zgougu.txt");
if(!out)
cout«/zCannotopenthefile.\n〃;
return1;
for(inti=0;i<101;i++)
for(intj=i+l;j<101;j++)
for(intk=j+l;k<101;k++)
{
if==k*k)
(
out.setf(ios::left);
out«setw(3)«i<<setw(3)«j<<setw(3)«k;
out«,\tJ«i«,«2«?«2«?=«2«endl;
)
)
out.close();
return0;
)
2.实验结果:
P453"+4A2=5”一
512135A2+123132
68106*2+8^2=10*2^
724257^2+24^2=25*2^
815178*2+15^2=17*2^
912159^2+12^2=15*2^
940419-2+40-2=412〃
10242610^2+24*2=26^2^
1160611厂2+60-2=6厂2"
12162012A2+16320,22
12353712^2+35*2=37*2^
13848513^2+84*2=85*2^
14485014c2+483502
15202515^2+20^2=25^2^
15
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度公共交通枢纽车位销售及运营管理协议4篇
- 2025年车库产权转让合同(含车位租赁权及管理费)4篇
- 2025年度新型建筑材料全球铺货销售合同范本4篇
- 2025年度脚手架租赁与施工安全承包合同4篇
- 二零二五年度二手搅拌车买卖及二手车辆改装定制合同2篇
- 2025年度环保项目资金回收催收保密协议4篇
- 2025年电力设备大件运输及电网接入服务合同4篇
- 2025年度暖气片销售培训与服务合同
- 2025年中国国际电路租赁行业市场前景预测及投资战略研究报告
- 2025年度船舶建造环境保护合同范本4篇
- 春节联欢晚会节目单课件模板
- 中国高血压防治指南(2024年修订版)
- 糖尿病眼病患者血糖管理
- 抖音音乐推广代运营合同样本
- 2024年电信综合部办公室主任年度述职报告(四篇合集)
- 微机原理与接口技术考试试题及答案(综合-必看)
- 湿疮的中医护理常规课件
- 初中音乐听课笔记20篇
- NUDD新独难异 失效模式预防检查表
- 内蒙古汇能煤电集团有限公司长滩露天煤矿矿山地质环境保护与土地复垦方案
- 排水干管通球试验记录表
评论
0/150
提交评论