C++ PRIMER PLUS(第六版)第二至第五章课后编程练习答案.doc
第二章:开始学习C+/ex2.1-display your name and address#include<iostream>int main(void)using namespace std;cout<<"My name is liao chunguang and I live in hunan chenzhou.n”;/ex2.2-convert the furlong units to yard uints-把浪单位换位码单位#include<iostream>double fur2yd(double);int main()using namespace std;cout<<"enter the distance measured by furlong units:"double fur;cin>>fur;cout<<"convert the furlong to yard"<<endl;double yd;yd=fur2yd(fur);cout<<fur<<" furlong is "<<yd<<" yard"<<endl;return 0;double fur2yd(double t)return 220*t;/ex2.3-每个函数都被调用两次#include<iostream>void mice();void see();using namespace std;int main()mice();mice();see();see();return 0;void mice()cout<<"three blind mice"<<endl;void see()cout<<"see how they run"<<endl;/ex2.4#include<iostream>int main() using namespace std; cout<<"Enter your age:" int age; cin>>age; int month; month=age*12; cout<<age<<" years is "<<month<<" months"<<endl; return 0;/ex2.5-convert the Celsius valve to Fahrenheit value#include<iostream>double C2F(double);int main()using namespace std;cout<<"please enter a Celsius value:"double C;cin>>C;double F;F=C2F(C);cout<<C<<" degrees Celsius is "<<F<<" degrees Fahrenheit."<<endl;return 0;double C2F(double t)return 1.8*t+32; /ex2.6-convert the light years valve to astronomical units-把光年转换为天文单位#include<iostream>double convert(double);/函数原型int main()using namespace std;cout<<"Enter the number of light years:"double light_years;cin>>light_years;double astro_units;astro_units=convert(light_years);cout<<light_years<<" light_years = "<<astro_units<<" astronomical units."<<endl;return 0;double convert(double t)return 63240*t;/1 光年=63240 天文单位 /ex2.7-显示用户输入的小时数和分钟数#include<iostream>void show();main()using namespace std;show();return 0;void show()using namespace std;int h,m;cout<<"enter the number of hours:"cin>>h;cout<<"enter the number of minutes:"cin>>m;cout<<"Time:"<<h<<":"<<m<<endl;第三章:处理数据/ex3.1将身高用英尺(feet)和英寸(inch)表示#include<iostream>const int inch_per_feet=12;/ const常量-1feet=12inches-1英尺=12英寸int main()using namespace std;cout<<"please enter your height in inches:_bbb"/ b表示为退格字符int ht_inch;cin>>ht_inch;int ht_feet=ht_inch/inch_per_feet;/取商int rm_inch=ht_inch%inch_per_feet;/取余cout<<"your height is "<<ht_feet<<" feet,and "<<rm_inch<<" inchesn"return 0;/ex3.2-计算相应的body mass index(体重指数)#include<iostream>const int inch_per_feet=12;const double meter_per_inch=0.0254;const double pound_per_kilogram=2.2;int main()using namespace std;cout<<"Please enter your height:"<<endl;cout<<"First,enter your height of feet part(输入你身高的英尺部分):_b"int ht_feet;cin>>ht_feet;cout<<"Second,enter your height of inch part(输入你身高的英寸部分):_b"int ht_inch;cin>>ht_inch;cout<<"Now,please enter your weight in pound:_bbb"double wt_pound;cin>>wt_pound;int inch;inch=ht_feet*inch_per_feet+ht_inch;double ht_meter;ht_meter=inch*meter_per_inch;double wt_kilogram;wt_kilogram=wt_pound/pound_per_kilogram;cout<<endl;cout<<"Your pensonal body information as follows:"<<endl;cout<<"身高:"<<inch<<"(英尺inch)n"<<"身高:"<<ht_meter<<"(米meter)n"<<"体重:"<<wt_kilogram<<"(千克kilogram)n"double BMI;BMI=wt_kilogram/(ht_meter*ht_meter);cout<<"your Body Mass Index(体重指数) is "<<BMI<<endl;return 0;/ex3.3 以度,分,秒输入,以度输出#include<iostream>const int minutes_per_degree=60;const int seconds_per_minute=60;int main()using namespace std;cout<<"Enter a latitude in degrees,minutes,and seconds:n"cout<<"First,enter the degrees:"int degree;cin>>degree;cout<<"Next,enter the minutes of arc:"int minute;cin>>minute;cout<<"Fianlly,enter the seconds of arc:"int second;cin>>second;double show_in_degree;show_in_degree=(double)degree+(double)minute/minutes_per_degree+(double)second/minutes_per_degree/seconds_per_minute;cout<<degree<<" degrees,"<<minute<<" minutes,"<<second<<"seconds ="<<show_in_degree<<" degreesn"return 0;/ex3.4#include<iostream>const int hours_per_day=24;const int minutes_per_hour=60;const int seconds_per_minute=60;int main()using namespace std;cout<<"Enter the number of seconds:"long seconds;cin>>seconds;int Day,Hour,Minute,Second;Day=seconds/seconds_per_minute/minutes_per_hour/hours_per_day;Hour=seconds/seconds_per_minute/minutes_per_hour%hours_per_day;Minute=seconds/seconds_per_minute%minutes_per_hour;Second=seconds%seconds_per_minute;cout<<seconds<<"seconds = "<<Day<<" days,"<<Hour<<" hours,"<<Minute<<" minutes,"<<Second<<" secondsn"return 0;/ex3.5#include<iostream>int main() using namespace std; cout<<"Enter the world population:" long long world_population; cin>>world_population; cout<<"Enter the population of the US:" long long US_population; cin>>US_population; double percentage; percentage=(double)US_population/world_population*100; cout<<"The population of the US is "<<percentage<<"% of the world population.n" return 0;/ex3.6 汽车耗油量-美国(mpg)or欧洲风格(L/100Km)#include<iostream>int main() using namespace std; cout<<"Enter the miles of distance you have driven:" double m_distance; cin>>m_distance; cout<<"Enter the gallons of gasoline you have used:" double m_gasoline; cin>>m_gasoline; cout<<"Your car can run "<<m_distance/m_gasoline<<" miles per gallonn" cout<<"Computing by European style:n" cout<<"Enter the distance in kilometers:" double k_distance; cin>>k_distance; cout<<"Enter the petrol in liters:" double k_gasoline; cin>>k_gasoline; cout<<"In European style:"<<"your can used "<<100*k_gasoline/k_distance<<" liters of petrol per 100 kilometersn" return 0;/ex3.7 automobile gasoline consumption-耗油量-欧洲风格(L/100Km)转换成美国风格(mpg)#include<iostream>int main()using namespace std;cout<<"Enter the automobile gasoline consumption figure inn"<<"European style(liters per 100 kilometers):"double Euro_style;cin>>Euro_style;cout<<"Converts to U.S. style(miles per gallon):"<<endl;cout<<Euro_style<<" L/100Km = "<<62.14*3.875/Euro_style<<" mpgn"return 0;/ Note that 100 kilometers is 62.14 miles, and 1 gallon is 3.875 liters. /Thus, 19 mpg is about 12.4 L/100Km, and 27 mpg is about 8.7 L/100Km.Enter the automobile gasoline consumption figure inEuropean style(liters per 100 kilometers):12.4Converts to U.S. style(miles per gallon):12.4 L/100Km = 19.4187 mpgPress any key to continue/ ex3.7 automobile gasoline consumption-耗油量-美国风格(mpg)转换成欧洲风格(L/100Km)#include<iostream>int main()using namespace std;cout<<"Enter the automobile gasoline consumption figure inn"<<"U.S. style(miles per gallon):"double US_style;cin>>US_style;cout<<"Converts to European style(miles per gallon):"<<endl;cout<<US_style<<" mpg = "<< 62.14*3.875/US_style<<"L/100Kmn"return 0;/ Enter the automobile gasoline consumption figure inU.S. style(miles per gallon):19Converts to European style(miles per gallon):19 mpg = 12.6733L/100KmPress any key to continue第四章 复合类型/ex4.1 display the information of student#include<iostream>const int Asize=20;using namespace std;struct student/定义结构描述char firstnameAsize;char lastnameAsize;char grade;int age;void display(student);/函数原型放在结构描述后int main()cout<<"what is your first name?"<<endl;student lcg;/创建结构变量(结构数据对象)cin.getline(lcg.firstname,Asize);cout<<"what is your last name?"<<endl;cin.getline(lcg.lastname,Asize);cout<<"what letter grade do you deserve?"<<endl;cin>>lcg.grade;cout<<"what is your age?"<<endl;cin>>lcg.age;display(lcg);return 0;void display(student name)cout<<"Name: "<<name.firstname<<","<<name.lastname<<endl;cout<<"Grade:"<<char(name.grade+1)<<endl;cout<<"Age:"<<name.age<<endl;/ex4.2 use the string-class instead of char-array#include<iostream>#include<string>int main()using namespace std;string name,dessert;cout<<"Enter your name: n"getline(cin,name); cout<<"Enter your favorite dessert: n"getline(cin,dessert); cout<<"I have some delicious "<<dessert;cout<<" for you, "<<name<<".n"return 0;/有时候会遇到需要按下两次回车键才能正确的显示结果,这是vc+6.0的一个BUG,更改如下:else if (_Tr:eq(_E)_C, _D) _Chg = true; _I.rdbuf()->sbumpc();/修改后的 break; ex4.3 输入其名和姓,并组合显示#include<iostream>#include<cstring>const int Asize=20;int main()using namespace std;char fnameAsize;char lnameAsize;char fullname2*Asize+1;cout<<"Enter your first name:"/输入名字,存储在fname数组中cin.getline(fname,Asize);cout<<"Enter your last name:"/输入姓,存储在lname数组中cin.getline(lname,Asize);strncpy(fullname,lname,Asize);/把姓lname复制到fullname空数组中strcat(fullname,", ");/把“, ”附加到上述fullname尾部strncat(fullname,fname,Asize);/把fname名字附加到上述fullname尾部fullname2*Asize='0'/为防止字符型数组溢出,在数组结尾添加结束符 cout<<"Here's the information in a single string:"<<fullname<<endl;/显示组合结果return 0;/ex4.4 使用string对象 存储、显示组合结果#include<iostream>#include<string>int main()using namespace std;string fname,lname,attach,fullname;cout<<"Enter your first name:"getline(cin,fname);/note:将一行输入读取到string类对象中使用的是getline(cin,str) /它没有使用句点表示法,所以不是类方法cout<<"Enter your last name:"getline(cin,lname);attach=", "fullname=lname+attach+fname;cout<<"Here's the information in a single string:"<<fullname<<endl;return 0;/ex4.5 declare a struct and initialize it 声明结果并创建一个变量#include<iostream>const int Asize=20;struct CandyBarchar brandAsize;double weight;int calory;int main()using namespace std;CandyBar snack="Mocha Munch",2.3,350;cout<<"Here's the information of snack:n"cout<<"brand:"<<snack.brand<<endl;cout<<"weight:"<<snack.weight<<endl;cout<<"calory:"<<snack.calory<<endl;return 0;/ex4.6 结构数组的声明及初始化#include<iostream>const int Asize=20;struct CandyBarchar brandAsize;double weight;int calory;int main()using namespace std;CandyBar snack3="Mocha Munch",2.3,350,"XuFuJi",1.1,300,"Alps",0.4,100; for(int i=0;i<3;i+)/利用for循环来显示snack变量的内容cout<<snacki.brand<<endl<<snacki.weight<<endl<<snacki.calory<<endl<<endl;return 0;/ex4.7 pizza披萨饼#include<iostream>#include<string>const int Size=20;struct pizza/声明结构char companySize;double diameter;double weight;int main()using namespace std;pizza pie;/创建一个名为pie的结构变量cout<<"What's the name of pizza company:"cin.getline(pany,Size);cout<<"What's the diameter of pizza:"cin>>pie.diameter;cout<<"What's the weight of pizza:"cin>>pie.weight;cout<<"company:"<<pany<<endl;cout<<"diameter:"<<pie.diameter<<"inches"<<endl;cout<<"weight:"<<pie.weight<<"ounches"<<endl;return 0;/ex4.8 pizza pie 披萨饼 使用new创建动态结构#include<iostream>#include<string>const int Size=20;struct pizza/声明结构char companySize;double diameter;double weight;int main()using namespace std;pizza *pie=new pizza;/使用new创建动态结构cout<<"What's the diameter of pizza:"cin>>pie->diameter;cin.get();/读取下一个字符cout<<"What's the name of pizza company:"cin.get(pie->company,Size);cout<<"What's the weight of pizza:"cin>>pie->weight;cout<<"diameter:"<<pie->diameter<<" inches"<<endl;cout<<"company:"<<pie->company<<endl;cout<<"weight:"<<pie->weight<<" ounches"<<endl;delete pie;/delete释放内存return 0;/ex.4.9 使用new动态分配数组方法1#include<iostream>#include<string>using namespace std;struct CandyBarstring brand;double weight;int calory;int main()CandyBar *snack= new CandyBar3;snack0.brand="A"/单个初始化由new动态分配的内存snack0.weight=1.1;snack0.calory=200;snack1.brand="B"snack1.weight=2.2;snack1.calory=400;snack2.brand="C"snack2.weight=4.4;snack2.calory=500;for(int i=0;i<3;i+)cout << " brand: " << snacki.brand << endl;cout << " weight: " << snacki.weight << endl;cout << " calorie: " << snacki.calory << endl<<endl;delete snack; return 0;/ex.4.10 数组方法1#include <iostream>int main() using namespace std; const int Size = 3; int successSize; cout<<"Enter your success of the three times 40 meters running:n"cin >> success0>>success1>>success2; cout<<"success1:"<<success0<<endl;cout<<"success2:"<<success1<<endl;cout<<"success3:"<<success2<<endl;double average=(success0+success1+success2)/3;cout<<"average:"<<average<<endl; return 0; /ex.4.10 array方法2#include <iostream>#include <array>int main() using namespace std;array<double,4>ad=0; cout<<"Enter your success of the three times 40 meters running:n"cin >> ad0>>ad1>>ad2; cout<<"success1:"<<ad0<<endl;cout<<"success2:"<<ad1<<endl;cout<<"success3:"<<ad2<<endl;ad3=(ad0+ad1+ad2)/3;cout<<"average:"<<ad3<<endl; return 0; 第五章 循环和关系表达式/ex.5.1#include <iostream>int main() using namespace std; cout<<"Please enter two integers: " int num1,num2; cin>>num1>>num2; int sum=0; for(int temp=num1;temp<=num2;+temp)/or temp+ sum+=temp; cout<<"The sum from "<<num1<<" to "<<num2<<" is "<<sum<<endl; return 0;/ex.5.2#include <iostream>#include<array>int main() using namespace std;array<long double,101>ad=0; ad1=ad0=1L;for(int i=2;i<101;i+)adi=i*adi-1;for(int i=0;i<101;i+)cout<<i<<"! = "<<adi<<endl; return 0;/ex.5.3#include <iostream>int main() using namespace std; cout<<"Please enter an integer: " int sum=0,num; while(cin>>num)&&num!=0) sum+=num; cout<<"So far, the sum is "<<sum<<endl; cout<<"Please enter an integer: " return 0;/ex.5.4#include <iostream>int main() using namespace std; double sum1,sum2; sum1=sum2=0.0; int year=0; while(sum2<=sum1) +year; sum1+=10; sum2=(100+sum2)*0.05+sum2; cout<<"经过"<<year<<"年后,Cleo的投资价值才能超过Daphne的投资价值。"<<endl; cout<<"此时,Cleo的投资价值为"<<sum1<<",而Daphne的投资价值为"<<sum2<<endl; return 0; /ex.5.5#include <iostream>const int MONTHS = 12;const char* monthsMONTHS="January","Februar