《C++程序设计教程 第2版》教学素材习题08答案.docx
《《C++程序设计教程 第2版》教学素材习题08答案.docx》由会员分享,可在线阅读,更多相关《《C++程序设计教程 第2版》教学素材习题08答案.docx(13页珍藏版)》请在冰豆网上搜索。
《C++程序设计教程第2版》教学素材习题08答案
习题8答案
1.参考答案
#include
#include
#include
#defineN4
structstudent
{
charnum[10];
charname[20];
intsc;
};
voidmain()
{
voidInput(studentstuds[],intn);
voidOutput(studentstuds[],intn);
intMax(studentstuds[],intn);
inti;
studentstuds[N];
Input(studs,N);
i=Max(studs,N);
Output(studs,N);
cout<<"×î¸ß·ÖѧÉúµÄѧÉúÐÅϢΪ£º"<cout<cout<cout<}
voidInput(studentstuds[],intn)
{
inti;
for(i=0;i{
cout<<"ÇëÊäÈëµÚ"<
";
cin>>studs[i].num;
cout<<"ÇëÊäÈëµÚ"<
";
cin>>studs[i].name;
cout<<"ÇëÊäÈëµÚ"<
";
cin>>studs[i].sc;
}
}
voidOutput(studentstuds[],intn)//×¢Ò⺯Êý¶¨ÒåµÄ·½·¨,Êä³ö½á¹ûÒªÕûÆë»®Ò»
{
inti;
cout<for(i=0;i{
cout<cout<cout<}
}
intMax(studentstuds[],intn)
{
inti,k;
k=0;
for(i=1;iif(studs[k].sck=i;
returnk;
}
2.参考答案
#include
#include
intdaytab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
structdata
{
intyear,month,day;
}dt;
intday_of_year(intyear,intmonth,intday)
{
inti,leap;
leap=((year%4==0&&year%100!
=0)||year%400==0);
for(i=1;iday+=daytab[leap][i];
returnday;
}
voidinver(chars[],int&year,int&month,int&day)
{
inti=0;
while(isdigit(s[i]))
{
year=year*10+s[i]-'0';
i++;
}
i++;
while(isdigit(s[i]))
{
month=month*10+s[i]-'0';
i++;
}
i++;
while(isdigit(s[i])&&s[i])
{
day=day*10+s[i]-'0';
i++;
}
}
voidmain()
{
chars[20];
cout<<"输入日期(年-月-日):
";
cin>>s;
dt.year=0;
dt.month=0;
dt.day=0;
inver(s,dt.year,dt.month,dt.day);
cout<
}
3.参考答案
#include
#include
#include
#defineN4
structstudent
{
charnum[10];
charname[20];
intsc[5];
intaver;
};
voidmain()
{
voidInput(studentstuds[],intn);
voidOutput(studentstuds[],intn);
studentstuds[N];
Input(studs,N);
Output(studs,N);
}
voidInput(studentstuds[],intn)
{
inti,j;
for(i=0;i{
cout<<"请输入第"<
";
cin>>studs[i].num;
cout<<"请输入第"<
";
cin>>studs[i].name;cout<<"请输入第"<
";
for(j=0;j<5;j++)
cin>>studs[i].sc[j];
}
}
voidOutput(studentstuds[],intn)
{
inti,j;
cout<cout<for(i=0;i{
cout<cout<for(j=0;j<5;j++)
cout<cout<}
}
4.#include
#include
#include
#defineN4
structaddress_list
{
charnum[10];
charname[20];
charaddr[80];
intphonenum;
charmobilenum[10];
charemail[30];
};
voidmain()
{
voidInput(address_liststuds[],intn);
voidOutput(address_liststuds[],intn);
address_liststuds[N];
Input(studs,N);
Output(studs,N);
}
voidInput(address_liststuds[],intn)
{
inti;
for(i=0;i{
cout<<"请输入第"<
";
cin>>studs[i].num;
cout<<"请输入第"<
";
cin>>studs[i].name;
cout<<"请输入第"<
";
cin>>studs[i].addr;
cout<<"请输入第"<
";
cin>>studs[i].phonenum;
cout<<"请输入第"<
";
cin>>studs[i].mobilenum;
cout<<"请输入第"<
";
cin>>studs[i].email;
}
}
voidOutput(address_liststuds[],intn)
{
inti;
cout<cout<for(i=0;i{
cout<cout<cout<cout<}
}
5.#include
#include
structcoordinate
{
doublex;
doubley;
doublez;
};
voidmain()
{
voidPrint(coordinatex);
coordinateInput();
doubledistance(coordinatex,coordinatey);
coordinatea,b;
doubledist;
cout<<"请输入第1个点的坐标:
"<a=Input();
cout<<"请输入第2个点的坐标:
"<b=Input();
dist=distance(a,b);
cout<<"第1个点的坐标:
";
Print(a);
cout<<"第2个点的坐标:
";
Print(b);
cout<<"这两点的距离为:
"<}
coordinateInput()
{
coordinatea;
cout<<"请输入该坐标的x点:
";
cin>>a.x;
cout<<"请输入该坐标的y点:
";
cin>>a.y;
cout<<"请输入该坐标的z点:
";
cin>>a.z;
returna;
}
voidPrint(coordinatea)
{
cout<<"("<}
doubledistance(coordinatea,coordinateb)
{
doubledist;
dist=sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)+(a.z-b.z)*(a.z-b.z));
returndist;
}
6.参考答案
#include
#include
structcomplex
{
doublereal;
doubleimag;
};
voidmain()
{
voidPrint(complex&x);
voidInput(complex&x);
complexadd(complexx,complexy);
complexsub(complexx,complexy);
complexx,y,z;
cout<<"请输入第1个复数:
"<Input(x);
cout<<"请输入第2个复数:
"<Input(y);
cout<<"第1个复数为:
";
Print(x);
cout<<"第2个复数为:
";
Print(y);
z=add(x,y);
cout<<"相加后的复数为:
";
Print(z);
z=sub(x,y);
cout<<"相减后的复数为:
";
Print(z);
}
voidInput(complex&x)
{
cout<<"请输入复数的实部:
";
cin>>x.real;
cout<<"请输入复数的虚部:
";
cin>>x.imag;
}
voidPrint(complex&x)
{
cout<if(x.imag>0)cout<<'+';
cout<}
complexadd(complexx,complexy)
{
complexz;
z.real=x.real+y.real;
z.imag=x.imag+y.imag;
returnz;
}
complexsub(complexx,complexy)
{
complexz;
z.real=x.real-y.real;
z.imag=x.imag-y.imag;
returnz;
}
7.参考答案
#include
voidmain()
{
intn;
enum{sun,mon,tue,wed,thu,fri,sat}day;
charweekday[7][7]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
cout<<"输入间隔天数:
";
cin>>n;
day=sun;
cout<<"今天是"<}
8.#include
#include
voidmain()
{
enumcolor{Red,Blue,Green};
colori,j,k,pri;
intn,loop;
n=0;
for(i=Red;i<=Green;i=color(int(i)+1))
for(j=Red;j<=Green;j=color(int(j)+1))
if(i!
=j)
{
for(k=Red;k<=Green;k=color(int(k)+1))
if((k!
=i)&&(k!
=j))
{
n=n+1;
cout<for(loop=1;loop<=3;loop++)
{
switch(loop)
{
case1:
pri=i;break;
case2:
pri=j;break;
case3:
pri=k;break;
default:
break;
}
switch(pri)
{
caseRed:
cout<caseBlue:
cout<caseGreen:
cout<default:
break;
}
}
cout<}
}
cout<}