c++习题.docx
《c++习题.docx》由会员分享,可在线阅读,更多相关《c++习题.docx(43页珍藏版)》请在冰豆网上搜索。
![c++习题.docx](https://file1.bdocx.com/fileroot1/2023-6/3/22ded4e9-1a83-403c-88ad-bbe0a3e0a86f/22ded4e9-1a83-403c-88ad-bbe0a3e0a86f1.gif)
c++习题
C++assignment
(1)
FollowingistheC++assignmentforthisweek.
(1)Writeasimpleprogramtodemonstratethesizesoffundamentaldatatypes,includingint,double,float,char,bool,shortint,longint,etc.usingtheoperator"sizeof()";
(2)Writeafunctionintf(intn)tocalculatethefactorialofn,thencallitinmain()function.
Thesamplesourcecodeswillbepresentednextweek
Hi,
Everyone!
FollowingisthesamplesourcecodesforC++assignment1,forreferenceonly.
(1)
#include
usingnamespacestd;
intmain(){
cout<cout<cout<cout<cout<cout<cout<}
Theoutputofthisprogramis:
1
1
4
2
4
4
8
(2)
#include
usingnamespacestd;
intfactorial(intn){
intfac=1;
for(inti=2;i<=n;i++)
fac*=i;
returnfac;
}
intmain(){
cout<<"Pleaseinputn:
";
intn;
cin>>n;
cout<<"Resultoff("<return0;
}
C++assignment
(2)
Hi,
Everyone!
FollowingistheC++assignmentforthisweek.
(1)Inspectthisprogram:
#include
usingnamespacestd;
intmain(){
charc;
for(c=-128;c<127;c++){
cout<<"("<<(int)c<<","<}
cout<<"("<<(int)c<<","<getchar();
}
WhatistheoutputThedatatypecharcanbeconsideredasintegerwithsinglebyte.HowtooutputacharvariableasanintegerHowtooutputanintegerasacharWhatisASCII
(2)Inspectthisprogram:
#include
usingnamespacestd;
intmain()
{
intnum;
cout<num=2;
cout<<(num<<1)<intn=5;
if(num==2&&n==5)
cout<<"good"<num=-2;
num<<=1;
if(num==-4&&n==5)
cout<<"anothergood"<getchar();
}
CanyouimagintheoutputIsyourideacorrectIfavariableisnotinitialized,whatisitsvalueLeftshiftoperationandstandardoutputoperationarebothrepresentedas<<,so,howtodistinguishthemLeftshiftby1bitmeansmultiplyingby2,doesn'titHowaboutrightshiftoperation
(3)Writeafunctionthatoutputsacharvariableasabinarysequence。
(4)Outputaminusvalueasabinarysequence.Makeclearwhatthetwo's-complementis,andcheckitactually.
(5)Writeafunctionthatoutputsafloatvariableasabinarysequence。
(Pointersareusedinthisfunction.Asktheteachingassistantfordetail.)
(6)Writeaprogramthatoutputsthegreatestcommondivisoroftwointegersandtheleastcommonmultipleoftwointegers.
Sourcecode:
outputafloatasabinarysequence
(2013-03-2020:
16:
20)
分类:
Hi,
Everyone!
Thefollowingisthesamplesourcecodeforoneproblemgiventheotherday:
howtooutputafloatvariableasabinarysequence.Pleasestudyitandcomparewithyourworks.
#include
usingnamespacestd;
//outputasinglebyteasabinarysequence
voidBinaryOut(charc){
unsignedchartmp=0x80;
for(inti=0;i<8;i++){
if(c&tmp)
cout<<1;
else
cout<<0;
tmp>>=1;
}
}
//outputseveralcontiguousbytesformagivenaddress,withthehighestbyteontheleftmost
voidshow(char*p,intlen){
for(inti=len-1;i>=0;i--){
BinaryOut(*(p+i));
}
}
intmain(){
floatd=-28.0;
show((char*)&d,sizeof(d));//usingtype-casttofetchbytes
getchar();
}
C++assignment(3)
(2013-03-2514:
46:
37)
分类:
Hi,
Everyone!
FollowingistheC++assignmentforthisweek.
(1)Inspectthisprogram:
#include
usingnamespacestd;
intmain(){
intx=5,y=8;
x=sizeof(y++);
cout<cout<getchar();
}
WhatistheoutputIsitthesameasyouhaveexpectedDoyouknowtheconcepts"Compile-time"and"Run-time"
(2)Inspectthisprogram:
#include
usingnamespacestd;
voidBinaryOut(charc){
unsignedchartmp=0x80;
for(inti=0;i<8;i++){
if(c&tmp)
cout<<1;
else
cout<<0;
tmp>>=1;
}
cout<}
intmain(){
charch=-1;
BinaryOut(ch);
ch=127;
BinaryOut(ch);
getchar();
}
Theprogramcanoutputacharvariableasabinarysequence.Ifwechangethedatatypeoftmpintochar,doesthisprogramstillworkWhynotHowtooutputavariableofarbitrarytypeasabinarysequence
(3)Inspectthisprogram:
#include
#include
usingnamespacestd;
intmain()
{
cout<<"Whatisyourname"
<strings;
cin>>s;
cout<<"Hello"<
getchar();
}
ThereisaclassnamedstringintheC++standardlibrary,whosefunctionalityisprovidingsomeusefuloperationswithtextstrings.Thisisonlyaverysimpleexample.YoucanconsultC++documentationfordetail.
(4)Inspectthisprogram:
//CStringExample
#include
#include
intmain()
{
chars[]="hello";
chart[]={'w','o','r','l','d','!
','\0'};
//modifythestringsdirectly,replacehwithH
s[0]='H';
//comparestrings
if(strcmp(t,"world!
")==0)
{
strcpy(t,"World!
");//notecapitalW
}
char*u=strcat(s,t);
//willoutput"HelloWorld!
"
std:
:
cout<
:
endl;
std:
:
cout<<"Thisstringis"<<<"characterslong."<:
endl;
}
ThisisanexampleabouttraditionalC-stylestring.Pleasenotethattheheaderfileiscstring,andyoucanusestring.hinstead.Inthisheaderfile,somefamousstring-relatedfunctionsstartingwithstraredeclared,suchasstrlen(),strcat(),strcpy()andsoon.Youcantrymoreofthembyyourself。
(5)Inspectthisprogram:
//Usingvariableswithautomaticconversion
#include
intmain()
{
intx,y;
x=6.23;//xbecomes6
cout<<"x="<charc='w';//(see)
cout<<"c="<x=c;//xbecomestheinteger
//equivalentof‘w’whichis119
cout<<"x="<y=2.110;//ybecomes2
doubled;//(see)
d=y;//dbecomes2.0
cout<<"d="<constfloatpi=3.14159;
//(see)
//pi=223.34;//wouldbeanerror
}
Youcangetsomeideaoftheprincipleoftypecast(typeconvertion)inC++.
(6)Inputsomeparagraphsthroughkeyboard,andcalculatethelinesandwordscontainedinthem.
Hint:
usecin.get()ratherthancin>>toreadcharacters.
(2013-04-0109:
44:
40)
分类:
Hi,
Everyone!
FollowingistheC++assignmentforthisweek.
(1)Inspectthisprogram:
#include
usingstd:
:
cout;
usingstd:
:
cin;
usingstd:
:
endl;
intmain(){
intyear;
cout<<"Inputyear:
"<cin>>year;
if(year%4==0&&year0!
=0
||year@0==0)
cout<elsecout<return0;
}
Isitabsolutelynecessarytowrite"usingnamespacestd"whenreferencesomeidentifierinstd(suchascin,cout,andsoon)
Infact,ifyoujustneedtousecininyourprogram,youcanuse"usingstd:
:
cin;"tointroduceitseperately.Youcantrythewaytointroducesomeotheridentifierinthenamespacestd.
(2)Inspectthisprogram:
#include
usingnamespacestd;
intmain(){
floatnum1,num2;
charop;
cout<<"Inputoperand1,perator,operand2:
"<cin>>num1>>op>>num2;
switch(op){
case'+':
cout<case'-':
cout<case'*':
cout<case'/':
cout<default:
cout<";}
return0;
}
Thisisamini-calculatorprogram.Pleasemodifyit,andwhenweinput"2^3",itcangivetheresultof3rdpowerof2。
(3)Inspectthisprogram:
#include
usingnamespacestd;
constintn=100;//nisaconstantvariable
intmain(){
inti=1,sum=0;//Initializationforloop
while(i<=n){
sum+=i;
i++;//modificationtocontrollingvariable
}
cout<<"sum="<return0;
}
Thisprogramcangivetheresultof"1+2+...+100".Pleasewriteafunction:
intsum(intn),togivetheresultof"1+2+...+n".And,invokeitinmain()tocalculatethesummationfrom1to100.
(4)Insepcttheprogram:
intmain(){
inti,num,subscript;
intdigit[5];
cout<<"Inputainteger:
"<cin>>num;
cout<<"Theoriginalnumberis:
"<subscript=0;//subscriptofthearray
do{digit[subscript]=num;
num=num/10;
subscript++;
}while(num>0);
for(i=0;i
num=num*10+digit[i];
cout<<"Thenumberafterreversionis:
"<return0;
}
Thisisaprogramtooutputaintegerreversely.Pleasemodifytheprogramto:
(1)Withoutusingarray,andcandealwithintegerswitharbitrarylength;
(2)Usingonlyoneloop.
(5)Inspecttheprogram:
#include
usingnamespacestd;
intmain()
{
constintm=5;
intA[m]={};
inti;
for(i=0;i
cout<}
cout<intB[m]={1,2};
for(i=0;i
cout<
}
getchar();
}
WhatistheoutputIsitthesamewithwhatyou'veexpetedWhatistheruletoinitiateanarryusing"{}"
(6)Inspecttheprogram:
#include
usingnamespacestd;
intmain()
{
boolbvar;
inti=5,j=5;
bvar=i==j;
cout<cout<getchar();
}
WhatistheoutputIsitthesamewithwhatyou'veexpetedInfact,operator==takesprecedenceoveroperator=,andthevalueofaboolvariableisfrom{0,1}.
(7)Writeafunction:
intmax3(intx,inty,intz)toreturnthemaximumofthreeintegers,usingoperator:
.
C++assignment(5)
(2013-04-0814:
37:
36)
分类:
Hi,
Everyone!
FollowingistheC++assignmentforthisweek.
(1)Writeaprogramtoprintthefollowinggraph: