C Primer Plus第6版编程练习答案
Cprimerplus第6版中文版编程练习答案第17章
1、//count.cpp#include <iostream>using namespace std;int main(){char ch;int count = 0;cout << "Enter a string($ to quit):\n";while (cin.get(ch)){if (ch != '$'){count++;cout << ch;}else{cin.putback(ch);break;}}cout << "Count is " << count << endl;system("pause");return 0;}2、//filein.cpp#include <iostream>#include <fstream>#include <cstdlib>int main(int argc, char *argv[]){using namespace std;if (argc == 1){cerr << "Usage: " << argv[0] << " filename[s]\n";exit(EXIT_FAILURE);}ofstream fout(argv[1], ios::out|ios::app);{cerr << "Can't open " << argv[1] << " file for output.\n";exit(EXIT_FAILURE);}char ch;cout << "Enter a string: \n";while (cin.get(ch)){if (ch != '\n')fout << ch;elsebreak;}fout << endl;fout.close();system("pause");return 0;}3、//copy.cpp#include <iostream>#include <fstream>#include <cstdlib>int main(int argc, char *argv[]){using namespace std;if (argc == 1){cerr << "Usage: " << argv[0] << " filename[s]\n";exit(EXIT_FAILURE);}ifstream fin;char ch;fin.open(argv[1], ios::in);if (!fin.is_open()){cerr << "Could not open " << argv[1] << endl;exit(EXIT_FAILURE);}ofstream fout(argv[2], ios::out | ios::trunc);{cerr << "Could not open " << argv[1] << endl;exit(EXIT_FAILURE);}cout << "Here are the current contents of th "<< argv[1] << " file:\n";while (fin.get(ch)){cout << ch;fout << ch;}fin.close();fout.close();system("pause");return 0;}//a.txtAbcdefghijklmnopqrstuvwxyz4、//copy_cat.cpp#include <iostream>#include <fstream>#include <cstdlib>#include <string>using namespace std;const char *file1 = "a.txt";const char *file2 = "b.txt";const char *file3 = "c.txt";int main(){ifstream fin1, fin2;fin1.open(file1);fin2.open(file2);ofstream fout;fout.open(file3, ios_base::out | ios_base::trunc);string s1, s2;if (!fin1.is_open() || !fin2.is_open()){cerr << "Can't open " << file1 << " or " << file2 << endl;exit(EXIT_FAILURE);}if (!fout.is_open()){cerr << "Can't open " << file3 << endl;exit(EXIT_FAILURE);}while (!fin1.eof() && !fin2.eof()){getline(fin1, s1);cout << "File1 " << s1 << endl;getline(fin2, s2);cout << "File2 " << s2 << endl;fout << s1 << " " << s2 << endl;}while (!fin1.eof()){getline(fin1, s1);cout << "More file1 " << s1 << endl;fout << s1 << endl;}while (!fin2.eof()){getline(fin2, s2);cout << "More file2 " << s2 << endl;fout << s2 << endl;}fin1.close();fin2.close();fout.close();system("pause");return 0;}//a.txteggs kites donutsballoons hammersstones//b.txtzero lassitudefinance drama5、//name.cpp#include <iostream>#include <string>#include <set>#include <algorithm>#include <iterator>#include <fstream>const char *file1 = "mat.dat";const char *file2 = "pat.dat";const char *file3 = "matnpat.dat";int main(){using namespace std;string fname1;set<string> A;ifstream finA, finB;finA.open(file1);finB.open(file2);ofstream fout;ostream_iterator<string, char> out1(cout, " "), out2(fout, "\n");fout.open(file3, ios_base::out | ios_base::trunc);if (!finA.is_open() || !finB.is_open()){cerr << "Can't open " << file1 << " or " << file2 << endl;exit(EXIT_FAILURE);}if (!fout.is_open()){cerr << "Can't open " << file3 << endl;exit(EXIT_FAILURE);}while (!finA.eof()){getline(finA, fname1);A.insert(fname1);}cout << "Mat's friends: \n";copy(A.begin(), A.end(), out1);cout << endl;string fname2;set<string> B;while (!finB.eof()){getline(finB, fname2);B.insert(fname2);}cout << "Pat's friends: \n";copy(B.begin(), B.end(), out1);cout << endl;cout << "Union of Mat and Pat's friends: ";set_union(A.begin(), A.end(), B.begin(), B.end(), out1);set_union(A.begin(), A.end(), B.begin(), B.end(), out2);cout << endl;finA.close();finB.close();fout.close();system("pause");return 0;}6、//emp.h#ifndef EMP_H_#define EMP_H_#include <iostream>#include <string>#include <fstream>using namespace std;enum classtype{ Employee, Manager, Fink, Highfink };class abstr_emp{private:string fname;string lname;string job;public:abstr_emp();abstr_emp(const string &fn, const string &ln,const string &j);virtual void ShowAll()const;virtual void SetAll();friend ostream &operator<<(ostream &os, const abstr_emp &e);virtual ~abstr_emp() = 0;virtual void writeall(ofstream &ofs);virtual void getall(ifstream &ifs);};class employee :public abstr_emp{public:employee();employee(const string &fn, const string &ln, const string &j);virtual void ShowAll()const;virtual void SetAll();virtual void writeall(ofstream &ofs);virtual void getall(ifstream &ifs);};class manager :virtual public abstr_emp{private:int inchargeof;protected:int InChargeOf()const { return inchargeof; }int &InChargeOf(){ return inchargeof; } public:manager();manager(const string &fn, const string &ln, const string &j, int ico = 0);manager(const abstr_emp &e, int ico = 0);manager(const manager &m);virtual void ShowAll()const;virtual void SetAll();virtual void writeall(ofstream &ofs);virtual void getall(ifstream &ifs);void getInCharge(){cout << "Enter inchargeof: ";cin >> inchargeof;}void writeInCharge(ofstream &ofs){ofs << inchargeof << endl;}void readInCharge(ifstream &ifs){ifs >> inchargeof;}};class fink :virtual public abstr_emp{private:string reportsto;protected:const string ReportsTo()const{ return reportsto; }string &ReportsTo(){ return reportsto; }public:fink();fink(const string &fn, const string &ln,const string &j, const string &rpo);fink(const abstr_emp &e, const string &rpo);fink(const fink &e);virtual void ShowAll()const;virtual void SetAll();virtual void writeall(ofstream &ofs);virtual void getall(ifstream &ifs);void getReportsTo(){cout << "Enter reportsto: ";cin >> reportsto;}void writeReportsTo(ofstream &ofs){ofs << reportsto << endl;}void readReportsTo(ifstream &ifs){ifs >> reportsto;}};class highfink :public manager, public fink{public:highfink();highfink(const string &fn, const string &ln,const string &j, const string &rpo, int ico = 0);highfink(const abstr_emp &e, const string &rpo, int ico = 0);highfink(const fink &f, int ico = 0);highfink(const manager &m, const string &rpo);highfink(const highfink &h);virtual void ShowAll()const;virtual void SetAll();virtual void writeall(ofstream &ofs);virtual void getall(ifstream &ifs);};#endif//emp.cpp#include "emp.h"abstr_emp::abstr_emp() :fname("no one"), lname("no one"), job("no job") {}abstr_emp::abstr_emp(const string &fn, const string &ln,const string &j) : fname(fn), lname(ln), job(j){}void abstr_emp::ShowAll()const{cout << "Firstname: " << fname << endl;cout << "Lastname: " << lname << endl;cout << "Job is: " << job << endl;}void abstr_emp::SetAll(){cout << "Enter firstname: ";getline(cin, fname);cout << "Enter lastname: ";getline(cin, lname);cout << "Enter position: ";getline(cin, job);}ostream &operator<<(ostream &os, const abstr_emp &e){os << e.fname << " " << e.lname << ", " << e.job << endl;return os;}abstr_emp::~abstr_emp(){}void abstr_emp::writeall(ofstream &ofs){ofs << fname << "\n" << lname << "\n" << job << "\n"; }void abstr_emp::getall(ifstream &ifs){getline(ifs, fname);getline(ifs, lname);getline(ifs, job);}employee::employee() :abstr_emp(){}employee::employee(const string &fn, const string &ln, const string &j) : abstr_emp(fn, ln, j){}void employee::ShowAll()const{abstr_emp::ShowAll();}void employee::SetAll(){abstr_emp::SetAll();}void employee::writeall(ofstream &ofs){ofs << Employee << endl;abstr_emp::writeall(ofs);}void employee::getall(ifstream &ifs){abstr_emp::getall(ifs);}manager::manager() :abstr_emp(){}manager::manager(const string &fn, const string &ln,const string &j, int ico) : abstr_emp(fn, ln, j), inchargeof(ico){}manager::manager(const abstr_emp &e, int ico) : abstr_emp(e), inchargeof(ico) {}manager::manager(const manager &m) : abstr_emp(m){}void manager::ShowAll()const{abstr_emp::ShowAll();cout << "Inchargeof: " << InChargeOf() << endl;}void manager::SetAll(){abstr_emp::SetAll();cout << "Enter inchargeof: ";(cin >> inchargeof).get();}void manager::writeall(ofstream &ofs){ofs << Manager << endl;abstr_emp::writeall(ofs);ofs << inchargeof << endl;}void manager::getall(ifstream &ifs){abstr_emp::getall(ifs);ifs >> inchargeof;}fink::fink() :abstr_emp(){}fink::fink(const string &fn, const string &ln,const string &j, const string &rpo) : abstr_emp(fn, ln, j), reportsto(rpo){}fink::fink(const abstr_emp &e, const string &rpo) : abstr_emp(e), reportsto(rpo){}fink::fink(const fink &e) : abstr_emp(e){}void fink::ShowAll()const{abstr_emp::ShowAll();cout << "Reportsto: " << ReportsTo() << endl;}void fink::SetAll(){abstr_emp::SetAll();cout << "Enter reportsto: ";cin >> reportsto;}void fink::writeall(ofstream &ofs){ofs << Fink << endl;abstr_emp::writeall(ofs);ofs << reportsto << endl;}void fink::getall(ifstream &ifs){abstr_emp::getall(ifs);ifs >> reportsto;}highfink::highfink() :abstr_emp(), manager(), fink(){}highfink::highfink(const string &fn, const string &ln,const string &j, const string &rpo, int ico) : abstr_emp(fn, ln, j), manager(fn, ln, j, ico), fink(fn, ln, j, rpo){}highfink::highfink(const abstr_emp &e, const string &rpo, int ico) : abstr_emp(e), manager(e, ico), fink(e, rpo){}highfink::highfink(const fink &f, int ico) : abstr_emp(f), manager(f, ico), fink(f){}highfink::highfink(const manager &m, const string &rpo) : abstr_emp(m), manager(m), fink(m, rpo){}highfink::highfink(const highfink &h) : abstr_emp(h), manager(h), fink(h){}void highfink::ShowAll()const{abstr_emp::ShowAll();cout << "InChargeOf: ";cout << manager::InChargeOf() << endl;cout << "ReportsTo: ";cout << fink::ReportsTo() << endl;}void highfink::SetAll(){abstr_emp::SetAll();manager::getInCharge();fink::getReportsTo();}void highfink::writeall(ofstream &ofs){ofs << Highfink << endl;abstr_emp::writeall(ofs);manager::writeInCharge(ofs);fink::writeReportsTo(ofs);}void highfink::getall(ifstream &ifs){abstr_emp::getall(ifs);manager::readInCharge(ifs);fink::readReportsTo(ifs);}//useemp.cpp#include "emp.h"const int MAX = 10;const char *file = "a.txt";int main(void){abstr_emp *pc[MAX];char ch;ifstream fin;fin.open(file);int i = 0;if (fin.is_open()){cout << "Here are the current contents of the "<< file << " file:\n";int classtype;i = 0;while ((fin >> classtype).get(ch)){switch (classtype){case Employee:pc[i] = new employee;break;case Manager:pc[i] = new manager;break;case Fink:pc[i] = new fink;break;case Highfink:pc[i] = new highfink;break;}cout << classtype << endl;pc[i]->getall(fin);pc[i++]->ShowAll();}}fin.close();ofstream fout;fout.open(file, ios_base::out | ios_base::app);if (!fout.is_open()){cerr << "Can't open " << file << " file for output.\n";exit(EXIT_FAILURE);}cout << "e to employee, m to manager\n"<< "f to fink, h to highfink\n"<< "q to quit: ";int index = 0;while (cin.get(ch).get() && ch != 'q'&&index < MAX){switch (ch){case'e':pc[index] = new employee;pc[index]->SetAll();index++;break;case'm':pc[index] = new manager;pc[index]->SetAll();index++;break;case'f':pc[index] = new fink;pc[index]->SetAll();index++;break;case'h':pc[index] = new highfink;pc[index]->SetAll();index++;break;default:cout << "Try again";break;}if (index > MAX)break;cout << "e to employee, m to manager\n"<< "f to fink, h to highfink\n"<< "q to quit: ";}for (i = 0; i < index; i++)pc[i]->writeall(fout);fout.close();fin.clear();fin.open(file);if (fin.is_open()){cout << "Here are the current contents of the "<< file << " file:\n";int classtype;i = 0;while ((fin >> classtype).get(ch)){switch (classtype){case Employee:pc[i] = new employee;break;case Manager:pc[i] = new manager;break;case Fink:pc[i] = new fink;break;case Highfink:pc[i] = new highfink;break;}cout << classtype << endl;pc[i]->getall(fin);pc[i++]->ShowAll();}}cout << "Done.\n";system("pause");return 0;}7、//vcopy.cpp#include <iostream>#include <vector>#include <string>#include <iterator>#include <algorithm>#include <fstream>#include <cstdlib>using namespace std;void ShowStr(const string &);void GetStrs(ifstream &, vector<string> &);class Store{ofstream &fout;public:Store(ofstream &os) :fout(os){}void operator()(const string &str);};void Store::operator()(const string &str){size_t len = str.size();fout.write((char *)&len, sizeof(size_t));fout.write(str.data(), len);}int main(){vector<string> vostr;string temp;cout << "Enter strings (empty line to quit):\n";while (getline(cin, temp) && temp[0] != '\0')vostr.push_back(temp);cout << "Here is your input.\n";for_each(vostr.begin(), vostr.end(), ShowStr);ofstream fout("strings.dat", ios_base::out | ios_base::binary);for_each(vostr.begin(), vostr.end(), Store(fout));fout.close();vector<string> vistr;ifstream fin("strings.dat", ios_base::in | ios_base::binary);if (!fin.is_open()){cerr << "Could not open file for input.\n";exit(EXIT_FAILURE);}GetStrs(fin, vistr);cout << "\nHere are the strings read from the file:\n";for_each(vistr.begin(), vistr.end(), ShowStr);system("pause");return 0;}void ShowStr(const string &str){cout << str << endl;}void GetStrs(ifstream &fin, vector<string> &str){char *s;size_t len;while (fin.read((char *)&len, sizeof(size_t))){s = new char[len];fin.read(s, len);s[len + 1] = '\0';str.push_back(s);}}。
C++--primer-plus-(第6版)-中文版编程练习答案
第二章:开始学习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:___\b\b\b";// \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<<" inches\n";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:___\b\b\b";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/mi nutes_per_degree/seconds_per_minute;cout<<degree<<" degrees,"<<minute<<" minutes,"<<second<<"seconds="<<show_in_degree<<" degrees\n";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<<" seconds\n";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 gallon\n";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 kilometers\n";return 0;}//ex3.7 automobile gasoline consumption-耗油量--欧洲风格(L/100Km)转换成美国风格(mpg) #include<iostream>int main(){using namespace std;cout<<"Enter the automobile gasoline consumption figure in\n"<<"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<<" mpg\n";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 in\n"<<"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/100Km\n";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 firstname[Asize];char lastname[Asize];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(stname,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<<","<<stname<<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 fname[Asize];char lname[Asize];char fullname[2*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 尾部fullname[2*Asize]='\0';//为防止字符型数组溢出,在数组结尾添加结束符cout<<"Here's the information in a single string:"<<fullname<<endl;//显示组合结果return 0;}#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <cstring>const int Asize = 20;int main(){using namespace std;char firstname[Asize];char lastname[50];cout << "Enter your first name: ";cin.getline(firstname,Asize);cout << "Enter your last name: ";cin.getline(lastname,50);strcat(lastname,", ");strncat(lastname,firstname,Asize);cout << "Here's the information in a single string: "<< lastname <<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 CandyBar{char brand[Asize];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 CandyBar{char brand[Asize];double weight;int calory;};int main(){using namespace std;CandyBar snack[3]={{"Mocha Munch",2.3,350},{"XuFuJi",1.1,300},{"Alps",0.4,100}};for(int i=0;i<3;i++)//利用for 循环来显示snack 变量的内容{cout<<snack[i].brand<<endl<<snack[i].weight<<endl<<snack[i].calory<<endl<<endl;}return 0;}//ex4.7 pizza 披萨饼#include<iostream>#include<string>const int Size=20;struct pizza//声明结构{char company[Size];double diameter;double weight;};int main(){using namespace std;pizza pie;//创建一个名为pie 的结构变量cout<<"What's the name of pizza company:";cin.getline(pie pany,Size);cout<<"What's the diameter of pizza:";cin>>pie.diameter;cout<<"What's the weight of pizza:";cin>>pie.weight;cout<<"company:"<<pie 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 company[Size];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 CandyBar{string brand;double weight;int calory;};int main(){CandyBar *snack= new CandyBar[3];snack[0].brand="A";//单个初始化由new 动态分配的内存snack[0].weight=1.1;snack[0].calory=200;snack[1].brand="B";snack[1].weight=2.2;snack[1].calory=400;snack[2].brand="C";snack[2].weight=4.4;snack[2].calory=500;for(int i=0;i<3;i++){cout << " brand: " << snack[i].brand << endl;cout << " weight: " << snack[i].weight << endl;cout << " calorie: " << snack[i].calory << endl<<endl;}delete [] snack;return 0;}//ex.4.10 数组—方法1#include <iostream>int main(){using namespace std;const int Size = 3;int success[Size];cout<<"Enter your success of the three times 40 meters running:\n"; cin >> success[0]>>success[1]>>success[2];cout<<"success1:"<<success[0]<<endl;cout<<"success2:"<<success[1]<<endl;cout<<"success3:"<<success[2]<<endl;double average=(success[0]+success[1]+success[2])/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 >> ad[0]>>ad[1]>>ad[2];cout<<"success1:"<<ad[0]<<endl;cout<<"success2:"<<ad[1]<<endl;cout<<"success3:"<<ad[2]<<endl;ad[3]=(ad[0]+ad[1]+ad[2])/3;cout<<"average:"<<ad[3]<<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};ad[1]=ad[0]=1L;for(int i=2;i<101;i++)ad[i]=i*ad[i-1];for(int i=0;i<101;i++)cout<<i<<"! = "<<ad[i]<<endl;return 0;}#include <iostream>#include <array>using namespace std;int main(){array<long double, 101> multiply;multiply[0] = multiply[1] = 1LL;for (int i = 2; i <= 100; i++)multiply[i] = multiply[i-1]*i;cout << multiply[100];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 的投资价值。
C Primer Plus第6版编程练习答案(已下载)
Chapter 2 Programming Exercises欧阳学文PE 2‐1/* Programming Exercise 21 */#include<stdio.h> intmain(void){ printf("GustavMahler\n");printf("Gustav\nMahler\n");printf("Gustav ");printf("Mahler\n");return 0;}PE 2‐3/* Programming Exercise 23 */#include<stdio.h> intmain(void){ int ageyears; /* age inyears */ int agedays; /*age in days *//* large ages may require the longtype */ ageyears = 101; agedays = 365 * ageyears;printf("An age of %d years is %d days.\n", ageyears, agedays); return 0;}PE 2‐4/* Programming Exercise 24 */#include<stdio.h>voidjolly(void);voiddeny(void);intmain(void){ jolly();jolly();jolly();deny();return0; }void jolly(void){printf("For he's a jolly good fellow!\n"); }void deny(void){printf("Which nobody can deny!\n"); }PE 2‐6/* Programming Exercise 26 */#include<stdio.h> intmain(void){ inttoes;toes =10;printf("toes = %d\n", toes);printf("Twice toes = %d\n", 2 * toes);printf("toes squared = %d\n", toes * toes);return 0;}/* or create two more variables, set them to 2 * toes and toes * toes */PE 2‐8/* Programming Exercise 28 */#include<stdio.h>voidone_three(void); voidtwo(void); intmain(void){printf("startingnow:\n");one_three();printf("done!\n");return 0;}void one_three(void){printf("one\n");two();printf("three\n");}void two(void){printf("two\n");}Chapter 3 Programming Exercises PE 3‐2/* Programming Exercise 32 */#include<stdio.h> intmain(void){intascii;printf("Enter an ASCII code: "); scanf("%d", &ascii);printf("%d is the ASCII code for %c.\n", ascii, ascii); return 0;}PE 3‐4/* Programming Exercise 34 */#include<stdio.h> intmain(void){ float num;printf("Enter a floatingpoint value: "); scanf("%f", &num);printf("fixedpointnotation: %f\n", num);printf("exponentialnotation: %e\n", num); printf("p notation: %a\n", num); return 0;}PE 3‐6/* Programming Exercise 36 */#include<stdio.h> intmain(void){float mass_mol = 3.0e23; /* mass of watermolecule in grams */ float mass_qt = 950; /*mass of quart of water in grams */ float quarts;float molecules;printf("Enter the number of quarts of water: ");scanf("%f", &quarts);molecules = quarts * mass_qt / mass_mol;printf("%f quarts of water contain %e molecules.\n", quarts, molecules); return 0;}Chapter 4 Programming ExercisesPE 4‐1/* Programming Exercise 41 */#include<stdio.h> intmain(void){ charfname[40];charlname[40];printf("Enter your first name: "); scanf("%s", fname); printf("Enteryour last name: ");scanf("%s", lname);printf("%s, %s\n", lname, fname); return 0;}PE 4‐4/* Programming Exercise 44 */ #include<stdio.h> intmain(void){ floatheight;charname[40];printf("Enter your height in inches: "); scanf("%f",&height); printf("Enter yourname: "); scanf("%s", name);printf("%s, you are %.3f feet tall\n", name, height / 12.0);return0;}PE 4‐7/* Programming Exercise 47 */#include<stdio.h>#include<float.h> intmain(void){ float ot_f = 1.0/ 3.0; doubleot_d = 1.0 / 3.0;printf(" float values:");printf("%.4f %.12f %.16f\n", ot_f, ot_f, ot_f); printf("double values: ");printf("%.4f %.12f %.16f\n", ot_d,ot_d, ot_d);printf("FLT_DIG: %d\n", FLT_DIG); printf("DBL_DIG: %d\n",DBL_DIG); return 0;}Chapter 5 Programming Exercises PE 5‐1/* Programming Exercise 51 */#include<stdio.h> intmain(void){ const intminperhour = 60;int minutes, hours,mins;printf("Enter the number of minutes to convert: "); scanf("%d", &minutes); while (minutes > 0 ){ hours = minutes/ minperhour; mins =minutes % minperhour;printf("%d minutes = %d hours, %d minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d", &minutes);}printf("Bye\n");return0;}PE 5‐3/* Programming Exercise 53 */#include<stdio.h> intmain(void){ const intdaysperweek = 7;int days, weeks,day_rem;printf("Enter the number ofdays: "); scanf("%d", &days);while (days > 0){ weeks = days /daysperweek; day_rem= days % daysperweek;printf("%d days are %d weeks and %ddays.\n", days, weeks, day_rem);printf("Enter the number of days (0 or less to end): "); scanf("%d", &days);}printf("Done!\n");return 0;}PE 5‐5/* Programming Exercise 55*/ #include <stdio.h>int main(void) /* finds sum of first n integers */{int count,sum;int n;printf("Enter the upperlimit: "); scanf("%d", &n);count = 0;sum = 0;while (count++ < n)sum = sum + count;printf("sum = %d\n",sum); return 0;}PE 5‐7/* ProgrammingExercise 57 */#include <stdio.h>voidshowCube(double x);int main(void) /* finds cube of entered number */ { double val;printf("Enter a floatingpointvalue: "); scanf("%lf", &val);showCube(val); return 0; }void showCube(double x){printf("The cube of %e is %e.\n", x, x*x*x );}Chapter 6 Programming ExercisesPE 6‐1/* pe61.c *//* this implementation assumes the character codes */ /* are sequential, as they are in ASCII. */#include <stdio.h>#define SIZE 26 intmain( void ) { charlcase[SIZE]; int i;for (i = 0; i < SIZE;i++) lcase[i] = 'a'+ i; for (i = 0; i <SIZE; i++)printf("%c", lcase[i]);printf("\n");return 0;}PE 6‐3/* pe63.c *//* this implementation assumes the character codes */ /* are sequential, as they are in ASCII. */#include<stdio.h> intmain( void ){ char let= 'F';char start;char end;for (end = let; end >= 'A'; end) {for (start = let; start >= end; start) printf("%c", start); printf("\n");}return0;}PE 6‐6/* pe66.c */#include<stdio.h> intmain( void ){ int lower,upper, index; intsquare, cube;printf("Enter startinginteger: "); scanf("%d",&lower); printf("Enterending integer: ");scanf("%d", &upper);printf("%5s %10s %15s\n", "num", "square", "cube"); for (index = lower;index <= upper; index++){ square =index * index;cube = index * square;printf("%5d %10d %15d\n", index, square, cube); }return0;}PE 6‐8/* pe68.c */#include<stdio.h> intmain( void ){ double n, m;doubleres;printf("Enter a pair of numbers: ");while (scanf("%lf %lf", &n, &m) == 2){res = (n m) / (n * m);printf("(%.3g %.3g)/(%.3g*%.3g) = %.5g\n", n, m, n, m, res); printf("Enter next pair (nonnumeric to quit): ");}return 0;}PE 6‐11/* pe611.c */#include<stdio.h>#defineSIZE 8 intmain( void ){ intvals[SIZE];int i;printf("Please enter %dintegers.\n", SIZE); for (i = 0; i <SIZE; i++) scanf("%d",&vals[i]);printf("Here, in reverse order, are the values you entered:\n"); for (i = SIZE 1; i >= 0; i) printf("%d ", vals[i]); printf("\n"); return 0;}PE 6‐13/* pe613.c *//* This version starts with the 0 power */#include<stdio.h>#defineSIZE 8 intmain( void ){inttwopows[SIZE];int i;int value = 1; /* 2 to the 0 */for (i = 0; i < SIZE; i++){ twopows[i]= value; value*= 2;}i =0;do{printf("%d ",twopows[i]);i++; } while (i <SIZE); printf("\n"); return 0;}PE 6‐14/* pe14.c *//* Programming Exercise 614 */ #include<stdio.h>#defineSIZE 8 intmain(void){ doublearr[SIZE];doublearr_cumul[SIZE];int i;printf("Enter %d numbers:\n", SIZE);for (i = 0; i < SIZE; i++){printf("value #%d: ", i+ 1); scanf("%lf",&arr[i]); /* or scanf("%lf", arr + i); */}arr_cumul[0] = arr[0]; /* set first element */ for (i = 1; i < SIZE; i++) arr_cumul[i] = arr_cumul[i1] + arr[i]; for (i = 0; i < SIZE;i++) printf("%8g ",arr[i]); printf("\n");for (i = 0; i < SIZE; i++)printf("%8g ", arr_cumul[i]);printf("\n");return 0;}PE 6‐16/* pe616.c */#include <stdio.h>#define RATE_SIMP 0.10#defineRATE_COMP0.05 #defineINIT_AMT 100.0int main( void ){double daphne =INIT_AMT;double deidre =INIT_AMT; intyears = 0;while (deidre <= daphne){ daphne +=RATE_SIMP * INIT_AMT; deidre += RATE_COMP * deidre;++years;}printf("Investment values after %d years:\n", years); printf("Daphne: $%.2f\n", daphne); printf("Deidre: $%.2f\n", deidre); return 0;}Chapter 7 Programming Exercises PE 7‐1/* ProgrammingExercise 71 */#include <stdio.h>int main(void){ charch; intsp_ct = 0;int nl_ct =0; intother = 0;while ((ch =getchar()) != '#'){if (ch == ' ')sp_ct++; elseif (ch == '\n')nl_ct++; elseother++;}printf("spaces: %d, newlines: %d, others: %d\n", sp_ct, nl_ct, other);return0;}PE 7‐3/* Programming Exercise 73 */#include<stdio.h> intmain(void){ int n;double sumeven= 0.0; intct_even = 0;double sumodd =0.0; int ct_odd= 0;while (scanf("%d", &n) == 1 && n != 0){if (n % 2 == 0){sumeven += n;++ct_even;}else // n % 2 is either 1 or 1{sumodd += n;++ct_odd;} }printf("Number of evens: %d",ct_even); if (ct_even > 0)printf(" average: %g", sumeven / ct_even); putchar('\n');printf("Number of odds: %d",ct_odd); if (ct_odd > 0)printf(" average: %g", sumodd / ct_odd); putchar('\n');printf("\ndone\n");return0;}PE 7‐5/* Programming Exercise 75 */#include<stdio.h> intmain(void){ charch; intct1 = 0;int ct2 =0;while ((ch=getchar())!= '#'){switch(ch){case '.' : putchar('!'); ++ct1;break; case '!' :putchar('!');putchar('!');++ct2;break; default :putchar(ch);} }printf("%d replacement(s) of . with !\n", ct1); printf("%d replacement(s) of ! with !!\n", ct2);return0;}PE 7‐7// Programming Exercise 77#include <stdio.h>#define BASEPAY 10 // $10 per hour#define BASEHRS 40 // hours at basepay #define OVERTIME 1.5 // 1.5 time#define AMT1 300 // 1st rate tier#define AMT2 150 // 2st rate tier#define RATE1 0.15 // rate for 1st tier#define RATE2 0.20 // rate for2nd tier #define RATE3 0.25 //rate for 3rd tier int main(void){doublehours;double gross;double net;double taxes;printf("Enter the number of hours workedthis week: "); scanf("%lf", &hours); if(hours <= BASEHRS) gross = hours *BASEPAY; elsegross = BASEHRS * BASEPAY + (hours BASEHRS)* BASEPAY * OVERTIME; if (gross <= AMT1)taxes = gross * RATE1; else if (gross <= AMT1 + AMT2)taxes = AMT1 * RATE1 + (gross AMT1)* RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (grossAMT1 AMT2) * RATE3; net = gross taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net);return0;}PE 7‐9/* Programming Exercise 79 */#include<stdio.h>#include<stdbool.h> intmain(void){intlimit;int num;int div;bool numIsPrime; // use int if stdbool.h not available printf("Enter a positive integer: ");while (scanf("%d", &limit) == 1 &&limit > 0){if (limit > 1)printf("Here are the prime numbers upthrough %d\n", limit); elseprintf("No primes.\n");for (num = 2; num <= limit;num++){for (div = 2, numIsPrime = true; (div * div) <= num; div++) if (num % div == 0) numIsPrime = false; if (numIsPrime)printf("%d is prime.\n", num);}printf("Enter a positive integer (q to quit): ");}printf("Done!\n");return 0;}PE 7‐11/* pe711.c *//* Programming Exercise 711 */#include<stdio.h>#include<ctype.h> intmain(void){const doubleprice_artichokes = 2.05; const double price_beets = 1.15; const doubleprice_carrots = 1.09; const double DISCOUNT_RATE = 0.05; const double under5 = 6.50; const double under20 = 14.00; const double base20 = 14.00; const double extralb = 0.50;charch;doublelb_artichokes = 0;double lb_beets =0; doublelb_carrots = 0;double lb_temp;double lb_total;doublecost_artichokes;doublecost_beets;doublecost_carrots;double cost_total;doublefinal_total;double discount;double shipping;printf("Enter a to buy artichokes, b for beets, "); printf("c for carrots, q to quit: "); while ((ch = getchar()) != 'q' && ch != 'Q'){ if (ch == '\n') continue; while(getchar() != '\n')continue; ch =tolower(ch);switch (ch) {case 'a' : printf("Enter pounds of artichokes: "); scanf("%lf",&lb_temp); lb_artichokes +=lb_temp; break;case 'b' : printf("Enter pounds ofbeets: "); scanf("%lf",&lb_temp); lb_beets +=lb_temp; break;case 'c' : printf("Enter pounds of carrots: "); scanf("%lf",&lb_temp); lb_carrots +=lb_temp; break;default : printf("%c is not a valid choice.\n", ch);}printf("Enter a to buy artichokes, b for beets, "); printf("c for carrots, q to quit: ");}cost_artichokes = price_artichokes *lb_artichokes; cost_beets = price_beets *lb_beets; cost_carrots = price_carrots *lb_carrots; cost_total = cost_artichokes + cost_beets + cost_carrots; lb_total =lb_artichokes + lb_beets + lb_carrots; if (lb_total <= 0) shipping = 0.0; else if (lb_total < 5.0) shipping = under5; else if (lb_total < 20) shipping = under20; else shipping = base20 + extralb *lb_total; if (cost_total > 100.0)discount =DISCOUNT_RATE * cost_total;else discount = 0.0;final_total = cost_total + shipping discount; printf("Your order:\n");printf("%.2f lbs of artichokes at $%.2f per pound:$ %.2f\n", lb_artichokes, price_artichokes, cost_artichokes);printf("%.2f lbs of beets at $%.2f per pound: $%.2f\n", lb_beets, price_beets,cost_beets); printf("%.2f lbs of carrots at $%.2f per pound: $%.2f\n", lb_carrots, price_carrots, cost_carrots); printf("Total cost of vegetables: $%.2f\n", cost_total); if (cost_total > 100)printf("Volume discount: $%.2f\n", discount); printf("Shipping: $%.2f\n", shipping); printf("Total charges:$%.2f\n", final_total); return 0; } Chapter 8 Programming Exercises PE 8‐1/* Programming Exercise 81 */#include <stdio.h>int main(void) { int ch;int ct = 0; while((ch = getchar()) != EOF)ct++;printf("%d characters read\n", ct);return0;}PE 8‐3/* Programming Exercise 83 *//* Using ctype.h eliminates need to assume consecutive coding */#include<stdio.h>#include<ctype.h> intmain(void){ int ch;unsigned long uct= 0; unsignedlong lct = 0;unsigned long oct= 0;while ((ch =getchar()) != EOF)if (isupper(ch))uct++; else if(islower(ch))lct++; elseoct++;printf("%lu uppercase characters read\n", uct); printf("%lu lowercase characters read\n", lct); printf("%lu other characters read\n", oct);return0;}/* or you coulduse if (ch >= 'A'&& ch <= 'Z')uct++;else if (ch >= 'a' && ch<= 'z') lct++; elseoct++;*/PE 8‐5/* Programming Exercise 85 *//* binaryguess.c an improved numberguesser */ /* but relies upon truthful, correct responses */#include <stdio.h>#include <ctype.h>int main(void) { inthigh = 100; int low= 1; int guess =(high + low) / 2;char response;printf("Pick an integer from 1 to 100. I will try to guess "); printf("it.\nRespond with a y if my guess is right, with");printf("\na h if it is high, and with an l if it is low.\n");printf("Uh...is your number %d?\n", guess);while ((response = getchar()) != 'y') /* get response */{if (response == '\n')continue;if (response != 'h' && response != 'l'){printf("I don't understand that response. Please enterh for\n"); printf("high, l for low, or y for correct.\n"); continue;}if (response == 'h')high = guess 1;else if (response == 'l')low = guess + 1;guess = (high + low)/ 2;printf("Well, then, is it %d?\n", guess);}printf("I knew I could doit!\n"); return 0;}PE 8‐7/* Programming Exercise 87 */#include <stdio.h>#include <ctype.h>#include <stdio.h>#define BASEPAY1 8.75 // $8.75 per hour #define BASEPAY2 9.33 // $9.33 per hour #define BASEPAY3 10.00 // $10.00 per hour #define BASEPAY4 11.20 // $11.20 per hour #define BASEHRS 40 // hours at basepay #define OVERTIME 1.5 // 1.5 time#define AMT1 300 // 1st rate tier#define AMT2 150 // 2st rate tier#define RATE1 0.15 // rate for 1st tier #define RATE2 0.20 // ratefor 2nd tier #define RATE3 0.25// rate for 3rd tier int getfirst(void);void menu(void); int main(void){ doublehours;doublegross;double net;doubletaxes;double pay;charresponse;menu();while ((response = getfirst()) != 'q'){if (response == '\n') /* skip over newlines */ continue;response = tolower(response); /* accept A as a, etc.*/ switch (response){case 'a': pay = BASEPAY1;break; case 'b': pay =BASEPAY2; break; case 'c':pay = BASEPAY3; break; case'd': pay = BASEPAY4; break;default : printf("Please enter a, b, c, d, or q.\n"); menu();continue; // go to beginning of loop}printf("Enter the number of hours workedthis week: "); scanf("%lf", &hours); if(hours <= BASEHRS) gross = hours *pay; elsegross = BASEHRS * pay + (hours BASEHRS) *pay * OVERTIME; if (gross <= AMT1)taxes = gross * RATE1; else if (gross <= AMT1 +AMT2)taxes = AMT1 * RATE1 + (gross AMT1)* RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross AMT1 AMT2) * RATE3; net = gross taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net); menu(); }printf("Done.\n");return0;}void menu(void){printf("********************************************************""*********\n");printf("Enter the letter corresponding to the desired pay rate"" or action:\n");printf("a) $%4.2f/hr b) $%4.2f/hr\n", BASEPAY1, BASEPAY2);printf("c) $%5.2f/hr d) $%5.2f/hr\n", BASEPAY3, BASEPAY4); printf("q)quit\n");printf("*********************************************** *********""*********\n");}int getfirst(void){intch;ch = getchar();while (isspace(ch))ch = getchar();while (getchar() !='\n') continue;return ch;}Chapter 9 Programming ExercisesPE 9‐1/* Programming Exercise 91 */#include <stdio.h>double min(double,double); int main(void){double x, y; printf("Entertwo numbers (q to quit): ");while (scanf("%lf %lf", &x, &y) ==2){ printf("The smaller numberis %f.\n", min(x,y)); printf("Next two values (q to quit): ");}printf("Bye!\n");return0;}double min(double a, double b){return a < b ? a : b;}/* alternative implementation doublemin(double a, double b){ if (a< b)return a;elsereturn b;}*/PE 9‐3/* Programming Exercise 93 */#include <stdio.h>void chLineRow(char ch, int c,int r); int main(void){ char ch; int col, row; printf("Enter a character (# to quit): "); while ( (ch = getchar()) != '#') { if (ch== '\n')continue;printf("Enter number of columns and number of rows: "); if (scanf("%d %d", &col, &row) != 2) break; chLineRow(ch, col, row);printf("\nEnter next character (# to quit): "); }printf("Bye!\n");return0;}// start rows and cols at 0void chLineRow(char ch,int c, int r){int col, row;for (row = 0; row < r ; row++){for (col = 0; col < c;col++) putchar(ch);putchar('\n');}return;}PE 9‐5/* Programming Exercise 95 */#include <stdio.h>void larger_of(double *p1,double *p2); int main(void){double x, y; printf("Entertwo numbers (q to quit): ");while (scanf("%lf %lf", &x, &y) ==2){larger_of(&x, &y);printf("The modified values are %f and %f.\n", x, y); printf("Next two values (q to quit): ");}printf("Bye!\n");return0;}void larger_of(double *p1, double *p2) { if(*p1 > *p2)*p2 = *p1;else*p1 = *p2;}// alternatively:/*void larger_of(double *p1, double *p2) {*p1= *p2 = *p1 > *p2 ? *p1 : *p2; }*/PE 9‐8/* Programming Exercise 98*/ #include <stdio.h>double power(double a, int b); /* ANSI prototype */ int main(void) { double x,xpow; int n; printf("Enter a number andthe integer power"); printf(" to which\nthe number will be raised. Enter q"); printf(" toquit.\n"); while (scanf("%lf%d", &x, &n)== 2){ xpow = power(x,n); /* function call */ printf("%.3g to the power %dis %.5g\n", x, n, xpow); printf("Enter nextpair of numbers or q to quit.\n");} printf("Hope you enjoyed this powertrip bye!\n"); return 0;} double power(double a, int b) /* function definition */{ doublepow = 1;int i; if(b == 0){ if (a== 0)printf("0 to the 0 undefined; using 1 as thevalue\n"); pow = 1.0; } else if (a == 0) pow = 0.0; else if (b > 0) for(i = 1; i <= b;i++) pow *= a; else /* b < 0 */ pow = 1.0 / power(a, b);return pow; /* return the value of pow */ }PE 9‐10/* Programming Exercise 910 */#include <stdio.h> voidto_base_n(int x, int base); intmain(void) { int number; int b;int count; printf("Enter aninteger (q to quit):\n"); while(scanf("%d", &number) == 1){ printf("Enter numberbase (210): "); while ((count= scanf("%d", &b))== 1&& (b < 2 || b > 10)){printf("base should be in the range 210: ");} if(count != 1)break;。
C++ Primer Plus(第6版)中文版》编程练习答案第6-10章
第6章分支语句和逻辑运算符//ex6.1#include<iostream>#include<cctype>int main(){using namespace std;char ch;cin.get(ch);while (ch != '@'){if (!isdigit(ch)){if (isupper(ch))ch = tolower(ch);else if (islower(ch))ch = toupper(ch);cout << ch;}cin.get(ch);}return 0;}//ex6.2#include<iostream>const int Max = 10;int main(){using namespace std;double num[Max];int i = 0;cout << "Number 1: ";while (i < Max && cin >> num[i]){if (++i < Max)cout << "Number " << i+1 << ": ";}double total = 0.0;for (int j = 0; j < i; j++)total += num[j];double Average = total/i;cout << "Average = " << Average << endl;int q = 0;for (int j = 0; j < i; j++)if (num[j] > Average)q++;cout << q << " numbers > average.\n";return 0;}//ex6.3#include<iostream>int main(){using namespace std;char ch;cout << "Please enter one of the choice:\n"<< "c) carnivore p) pianist\n"<< "t) tree g) game\n";cin >> ch;while (ch != 'c' && ch != 'p' && ch != 't' && ch != 'g'){cout << "Please enter a c, p, t, or g: ";cin >> ch;}switch (ch){case'c' : cout << "A cat is a carnivore.\n";break;case'p' : cout << "Radu Lupu is a pianist.\n";break;case't' : cout << "A maple is a tree.\n";break;case'g' : cout << "Golf is a game.\n";break;default : cout << "The program shouldn't get here!\n";}return 0;}//ex6.4#include<iostream>const int strsize = 20;struct bop{char fullname[strsize];char title[strsize];char bopname[strsize];int preference;};int main(){using namespace std;bop member[5] = {{"Wimp Macho", "English Teacher", "DEMON", 0},{"Raki Rhodes", "Junior Programmer", "BOOM", 1},{"Celia Laiter", "Super Star", "MIPS", 2},{"Hoppy Hipman", "Analyst Trainee", "WATEE", 1},{"Pat Hand", "Police", "LOOPY", 2}};char ch;cout << "Benevolent Order of Programmers Report\n"<< "a. display by name b. display by title\n"<< "c. display by bopname d. display by preference\n"<< "q. quit\n";cout << "Enter your choice: ";while (cin >> ch && ch != 'q'){switch (ch){case'a': for (int i = 0; i < 5; i++)cout << member[i].fullname << endl;break;case'b': for (int i = 0; i < 5; i++)cout << member[i].title << endl;break;case'c': for (int i = 0; i < 5; i++)cout << member[i].bopname << endl;break;case'd': for (int i = 0; i < 5; i++){if (member[i].preference == 0)cout << member[i].fullname << endl;else if (member[i].preference == 1)cout << member[i].title << endl;elsecout << member[i].bopname << endl;}break;}cout << "Next choice: ";}cout << "Bye!" << endl;return 0;}//ex6.5#include<iostream>const double LEV1 = 5000;const double LEV2 = 15000;const double LEV3 = 35000;const double RATE1 = 0.10;const double RATE2 = 0.15;const double RATE3 = 0.20;int main(){using namespace std;double income, tax;cout << "Enter your annual income in tvarps: ";cin >> income;if (income <= LEV1)tax = 0;else if (income <= LEV2)tax = (income - LEV1) * RATE1;else if (income <= LEV3)tax = RATE1 * (LEV2 - LEV1) + RATE2 * (income - LEV2);elsetax = RATE1 * (LEV2 - LEV1) + RATE2 * (LEV3 - LEV2)+ RATE3 * (income - LEV3);cout << "You owe Neutronia " << tax << " tvarps in taxes.\n";return 0;}//ex6.6#include<iostream>#include<string>using namespace std;struct Patrons{string name;double money;};int main(){cout << "输入捐赠者的数目: ";int num;cin >> num;Patrons* ps = new Patrons[num];cout << "输入每一个捐赠者的姓名和款项:\n";for (int i=0; i<num; i++){cout << "输入第" << i+1 << "位姓名: ";cin >> ps[i].name;cout << "输入第" << i+1 << "位款项: ";cin >> ps[i].money;}cout << "Grand Patron\n";for (int i=0; i<num; i++){if (ps[i].money > 10000)cout << ps[i].name << endl;}cout << "\nPatron\n";for (int i=0; i<num; i++){if (ps[i].money <= 10000)cout << ps[i].name << endl;}return 0;}//ex6.7#include<iostream>#include<string>#include<cctype>int main(){using namespace std;string word;int vowel = 0;int consonant = 0;int other = 0;char ch;cout << "Enter words (q to quit):\n";cin >> word;while (word != "q"){ch = tolower(word[0]);if (isalpha(ch)){if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')vowel ++;elseconsonant ++;}elseother ++;cin >> word;}cout << vowel << " words beginning with vowel\n"<< consonant << " words beginning with consonants\n"<< other << " others\n";return 0;}//ex6.8#include<iostream>#include<fstream>#include<cstdlib>const int SIZE = 60;int main(){using namespace std;char filename[SIZE];ifstream inFile;cout << "Enter name of data file: ";cin.getline(filename, SIZE);inFile.open(filename);if (!inFile.is_open()){cout << "Could not open the file " << filename << endl;cout << "Program terminating.\n";exit(EXIT_FAILURE);}int count = 0;char ch;inFile >> ch;while (inFile.good()){count ++;inFile >> ch; // get next value}cout << count << " characters in " << filename << endl;inFile.close(); // finished with the filereturn 0;}//ex6.9#include<iostream>#include<string>#include<fstream>#include<cstdlib>const int SIZE = 60;using namespace std;struct Patrons{string name;double money;};int main(){char filename[SIZE];ifstream inFile;cout << "Enter name of data file: ";cin.getline(filename, SIZE);inFile.open(filename);if (!inFile.is_open()){cout << "Could not open the file " << filename << endl;cout << "Program terminating.\n";exit(EXIT_FAILURE);}int num;inFile >> num;inFile.get();Patrons* ps = new Patrons[num];for (int i = 0; i<num; i++){getline(inFile, ps[i].name);inFile >> ps[i].money;inFile.get();}cout << "\nGrand Patrons:\n";int count1 = 0;for (int i = 0; i < num; i++){if (ps[i].money > 10000){cout << ps[i].name <<endl;count1++;}}if (count1 == 0)cout << "none";cout << "\nPatrons:\n";int count2 = 0;for (int i = 0; i < num; i++){if (ps[i].money <= 10000){cout << ps[i].name <<endl;count2++;}}if (count2 == 0)cout << "none";delete [] ps;inFile.close();return 0;}第7章函数——C++的编程模块//ex7.1#include<iostream>double t_av(double x, double y);int main(){using namespace std;double x, y;double result;cout << "Please enter two numbers (0 to stop): ";while ((cin >> x >> y) && x != 0 && y != 0){result = t_av(x, y);cout << "调和平均数 = " << result << endl;cout << "Please enter two numbers (0 to stop): ";}return 0;}double t_av(double x, double y){return 2.0 * x * y / (x + y);}//ex7.2#include<iostream>const int MAX = 10;using namespace std;int fill_ar(double ar[], int limit);void show_ar(const double ar[], int n);double average(const double ar[], int n);int main(){double scores[MAX];int size = fill_ar(scores, MAX);show_ar(scores, size);if (size > 0)cout << "The average of scores is: "<< average(scores, size) << endl;return 0;}int fill_ar(double ar[], int limit){double temp;int i;for (i = 0; i < limit; i++){cout << "Enter score #" << i+1 << ": ";cin >> temp;if (!cin){cin.clear();while (cin.get() != '\n')continue;cout << "Bad input; enter a number: ";break;}if (temp < 0)break;ar[i] = temp;}return i;}void show_ar(const double ar[], int n){for (int i = 0; i < n; i++)cout << "score #" << i+1 << ": " << ar[i] << endl; }double average(const double ar[], int n){double sum = 0.0;for (int i = 0; i < n; i++)sum += ar[i];return sum / n;}//ex7.3#include<iostream>struct box{char maker[40];float height;float width;float length;float volume;};void set_box(box *);void show_box(box);int main(){using namespace std;box carton = {"Bingo Boxer", 2, 3, 5};set_box(&carton);show_box(carton);return 0;}void set_box(box * pb){pb->volume = pb->height * pb->length * pb->width;}void show_box(box b){using namespace std;cout << "Box maker: " << b.maker<< "\nheight: " << b.height<< "\nlwidth: " << b.width<< "\nlength: " << b.length<< "\nvolume: " << b.volume << endl;}//ex7.4#include<iostream>long double probability(unsigned numbers, unsigned picks);int main(){using namespace std;double total, choices, mtotal;long double probability1, probability2;cout << "Enter total number of game card choices and\n""number of picks allowed for the field:\n";while ((cin >> total >> choices) && choices < total){cout << "Enter total number of game card choices and\n""number of picks allowed for the mega:\n";if (!(cin >> mtotal))break;probability1 = probability(total, choices);probability2 = probability(mtotal, 1);cout << "The chances of getting all "<< choices << " picks is one in "<< probability1 << ".\n";cout << "The chances of getting the megaspot is one in "<< probability2 << ".\n";cout << "You have one chance in ";cout << probability1 * probability2;cout << " of winning.\n";cout << "Next set of numbers (q to quit): ";}cout << "bye\n";return 0;}long double probability(unsigned numbers, unsigned picks){long double result = 1.0;long double n;unsigned p;for (n = numbers, p = picks; p > 0; n--, p--)result = result * n / p;return result;}//ex7.5#include<iostream>long long int recure(int);int main(){using namespace std;int number;cout << "Enter a integer (q to stop): ";while (cin >> number){long long int result = recure(number);cout << number << "! = " << result << endl;cout << "Next:";}cout << "Done!" << endl;return 0;}long long int recure(int n){long long int result;if (n > 0)result = n * recure(n-1);elseresult = 1;return result;}//ex7.6#include<iostream>const int Size = 10;int Fill_array(double ar[], int n);void Show_array(const double ar[], int n); void Reverse_array(double ar[], int n);int main(){using namespace std;double values[Size];int len = Fill_array(values, Size);cout << "Array values:\n";Show_array(values, len);cout << "Array reversed:\n";Reverse_array(values, len);Show_array(values, len);cout << "All but end values reversed:\n";Reverse_array(values+1, len-2);Show_array(values, len);return 0;}int Fill_array(double ar[], int n){using namespace std;double temp;int i;for (i=0; i<n; i++){cout << "Enter value #" << i+1 << ": ";cin >> temp;if (!cin)break;ar[i] = temp;}cout << endl;return i;}void Show_array(const double ar[], int n){using namespace std;for (int i=0; i<n; i++)cout << "Property #" << i+1 << ": "<< ar[i] << endl;cout << endl;}void Reverse_array(double ar[], int n){double temp;for (int i=0,j=n-1; i<j; i++,j--){temp = ar[i];ar[i] = ar[j];ar[j] = temp;}}//ex7.7#include<iostream>const int Max = 5;double * fill_array(double * begin, double * end);void show_array(const double * begin, const double * end); void revalue(double r, double * begin, double * end);int main(){using namespace std;double properties[Max];double * pbegin = properties;double * pend = fill_array(pbegin, pbegin + Max);show_array(pbegin, pend);if (pend-pbegin > 0){cout << "Enter revaluation factor: ";double factor;while (!(cin >> factor)){cin.clear();while (cin.get() != '\n')continue;cout << "Bad input; Please enter a number: ";}revalue(factor, pbegin, pend);show_array(pbegin, pend);}cout << "Done.\n";return 0;}double * fill_array(double * begin, double * end){using namespace std;double temp;int i = 1;while (begin < end){cout << "Enter value #" << i << ": ";cin >> temp;if (!cin){cin.clear();while (cin.get() != '\n')continue;cout << "Bad input; input process terminated.\n";break;}else if (temp < 0)break;*begin = temp;begin++;i++;}return begin;}void show_array(const double * begin, const double * end){using namespace std;int i = 1;while (begin < end){cout << "Property #" << i << ": $";cout << *begin << endl;begin++;i++;}}void revalue(double r, double * begin, double * end){while (begin < end){*begin *= r;begin++;}}//ex7.8a#include<iostream>const int Seasons = 4;const char * Snames[] = {"Spring", "Summer", "Fall", "Winter"}; void fill(double ar[], int n);void show(double ar[], int n);int main(){using namespace std;double expenses[Seasons];fill(expenses, Seasons);show(expenses, Seasons);return 0;}void fill(double ar[], int n){using namespace std;for (int i=0; i<n; i++){cout << "Enter " << Snames[i] << " expenses: ";cin >> ar[i];}}void show(double ar[], int n){using namespace std;cout << "\nEXPENSES\n";double total = 0.0;for (int i=0; i<n; i++){cout << Snames[i] << ": $" << ar[i] <<endl;total += ar[i];}cout << "Total Expenses: $" << total << endl;}//ex7.8b(传递结构值)#include<iostream>const int Seasons = 4;struct data{double arr[Seasons];};const char * Snames[] = {"Spring", "Summer", "Fall", "Winter"}; data fill();void show(data);int main(){using namespace std;data expenses = fill();show(expenses);return 0;}data fill(){using namespace std;data expenses;for (int i=0; i<Seasons; i++)cout << "Enter " << Snames[i] << " expenses: ";cin >> expenses.arr[i];}return expenses;}void show(data expenses){using namespace std;cout << "\nEXPENSES\n";double total = 0.0;for (int i=0; i<Seasons; i++){cout << Snames[i] << ": $" << expenses.arr[i] <<endl;total += expenses.arr[i];}cout << "Total Expenses: $" << total << endl;}//ex7.8b(传递结构指针)#include<iostream>const int Seasons = 4;struct data{double arr[Seasons];};const char * Snames[] = {"Spring", "Summer", "Fall", "Winter"}; void fill(data * pd);void show(data * pd);int main(){using namespace std;data expenses;fill(&expenses);show(&expenses);return 0;}void fill(data * pd){using namespace std;for (int i=0; i<Seasons; i++)cout << "Enter " << Snames[i] << " expenses: ";cin >> pd->arr[i];}}void show(data * pd){using namespace std;cout << "\nEXPENSES\n";double total = 0.0;for (int i=0; i<Seasons; i++){cout << Snames[i] << ": $" << pd->arr[i] <<endl;total += pd->arr[i];}cout << "Total Expenses: $" << total << endl;}//ex7.9#include<iostream>using namespace std;const int SLEN = 30;struct student {char fullname[SLEN];char hobby[SLEN];int ooplevel;};int getinfo(student pa[], int n);void display1(student st);void display2(const student * ps);void display3(const student pa[], int n);int main(){cout << "Enter class size: ";int class_size;cin >> class_size;while (cin.get() != '\n')continue;student * ptr_stu = new student[class_size];int entered = getinfo(ptr_stu, class_size);for (int i = 0; i < entered; i++)display1(ptr_stu[i]);display2(&ptr_stu[i]);}display3(ptr_stu, entered);delete [] ptr_stu;cout << "Done\n";return 0;}// getinfo() has two arguments: a pointer to the first element of // an array of student structures and an int representing the// number of elements of the array. The function solicits and// stores data about students. It terminates input upon filling// the array or upon encountering a blank line for the student// name. The function returns the actual number of array elements // filled.int getinfo(student pa[], int n){int num_array_elem = n;char tmp[SLEN];for (int i = 0; i < n; ++i){cout << "Enter name: ";cin.getline(tmp, SLEN);bool blank_line = true;for (unsigned j = 0; j < strlen(tmp); ++j){if (!isspace(tmp[j])){blank_line = false;break;}}if (blank_line){num_array_elem = i;break;}strcpy(pa[i].fullname, tmp);cout << "Enter hobby: ";cin.getline(pa[i].hobby, SLEN);cout << "Enter ooplevel: ";cin >> pa[i].ooplevel;cin.get();}cout << endl;return num_array_elem;}// display1() takes a student structure as an argument// and displays its contentsvoid display1(student st){cout << st.fullname << '\t'<< st.hobby << '\t'<< st.ooplevel << endl;}// display2() takes the address of student structure as an// argument and displays the structure’¡¥s contentsvoid display2(const student * ps){cout << ps->fullname << '\t'<< ps->hobby << '\t'<< ps->ooplevel << endl;}// display3() takes the address of the first element of an array// of student structures and the number of array elements as// arguments and displays the contents of the structuresvoid display3(const student pa[], int n){for (int i = 0; i < n; ++i)cout << pa[i].fullname << '\t' << pa[i].hobby << '\t' <<pa[i].ooplevel << endl;}//ex7.10#include<iostream>double calculate(double x, double y, double (*pf)(double, double)); double add(double x, double y);double sub(double x, double y);double mean(double x, double y);int main(){using namespace std;double a, b;double (*pf[3])(double, double) = {add, sub, mean};char * op[3] = {"add", "sub", "mean"};cout << "Enter pairs of numbers (q to quit): ";while (cin >> a >> b){for (int i=0; i<3; i++){cout << op[i] << ": " << a << " and " << b << " = "<< calculate(a, b, pf[i]) << endl;}}}double calculate(double x, double y, double (*pf)(double, double)) {return (*pf)(x, y);}double add(double x, double y){return x + y;}double sub(double x, double y){return x - y;}double mean(double x, double y){return (x + y) / 2.0;}第8章函数探幽//ex8.1#include<iostream>void show(const char * ps, int n = 0);int main(){using namespace std;char * pstr = "Hello\n";show(pstr);int num;cout << "Enter a number: ";cin >> num;show(pstr, num);cout << "Done\n";return 0;}void show(const char * ps, int n){using namespace std;int lim = n;if (n == 0)lim = 1;for (int i=0; i<lim; i++)cout << ps;}//ex8.2#include<iostream>#include<string>using namespace std;struct CandyBar{string name;double weight;int hot;};void set(CandyBar & cb, char * ps, double w, int h); void show(const CandyBar & cb);int main(){using namespace std;CandyBar candy;char * p = "Millennium Munch";double x = 2.85;int y = 350;set(candy, p, x, y);show(candy);return 0;}void set(CandyBar & cb, char * ps, double w, int h){ = ps;cb.weight = w;cb.hot = h;}void show(const CandyBar & cb){cout << "Name: " << << endl<< "Weight: " << cb.weight << endl<< "Hot: " << cb.hot << endl;}//ex8.3#include<iostream>#include<string>#include<cctype>using namespace std;void str_to_upper(string & str);int main(){string str1;cout << "Enter a string (q to quit): ";while (getline(cin, str1) && str1!="q" && str1!="Q") {str_to_upper(str1);cout << str1 << endl;cout << "Next string (q to quit): ";}cout << "Bye.";return 0;}void str_to_upper(string & str){int limit = str.size();for (int i=0; i<limit; i++){if (isalpha(str[i]))str[i] = toupper(str[i]);}}// ex8.4#include<iostream>#include<cstring>// for strlen(), strcpy()using namespace std;struct stringy {char * str; // points to a stringint ct; // length of string (not counting '\0')};void show(const char *str, int cnt = 1);void show(const stringy & bny, int cnt = 1);void set(stringy & bny, const char * str);int main(void){stringy beany;char testing[] = "Reality isn't what it used to be.";set(beany, testing); // first argument is a reference,// allocates space to hold copy of testing,// sets str member of beany to point to the// new block, copies testing to new block,// and sets ct member of beany show(beany); // prints member string onceshow(beany, 2); // prints member string twicetesting[0] = 'D';testing[1] = 'u';show(testing); // prints testing string onceshow(testing, 3); // prints testing string thriceshow("Done!");return 0;}void show(const char *str, int cnt){while(cnt-- > 0)cout << str << endl;}}void show(const stringy & bny, int cnt){while(cnt-- > 0){cout << bny.str << endl;}}void set(stringy & bny, const char * str){bny.ct = strlen(str);bny.str = new char[bny.ct+1];strcpy(bny.str, str);}//ex8.5#include<iostream>const int Limit = 5;template <typename T>T max5(T ar[]);int main(){using namespace std;int ari[Limit] = {1, 2, 3, 5, 4};double ard[Limit] = {1.1, 2.2, 3.3, 5.5, 4.4};int maxi = max5(ari);double maxd = max5(ard);cout << "maxi = " << maxi << endl;cout << "maxd = " << maxd << endl;return 0;}template <typename T>T max5(T ar[]){T max = ar[0];for (int i=1; i<Limit; i++)if (max < ar[i])max = ar[i];}return max;}//ex8.6#include<iostream>template <typename T>T maxn(T ar[], int n);template <> const char* maxn(const char* ar[], int n);int main(){using namespace std;int ari[6] = {1, 2, 3, 4, 6, 5};double ard[4] = {1.1, 2.2, 4.4, 3.3};const char * ars[5] = {"a","bb","ccc","ddddd","eeee"};cout << "The max integer of array is: " << maxn(ari, 6) << endl;cout << "The max double of array is: " << maxn(ard, 4) << endl;cout << "The max string of array is: " << maxn(ars, 5)<<endl; }template <typename T>T maxn(T ar[], int n){T maxar = ar[0];for (int i=1; i<n; i++){if (maxar < ar[i])maxar = ar[i];}return maxar;}template <> const char* maxn(const char* ar[],int n) {const char * maxs = ar[0];for (int i=1; i<n; i++){if (strlen(maxs) < strlen(ar[i]))maxs = ar[i];}return maxs;}//ex8.7#include<iostream>template <typename T>T SumArrray(T arr[], int n);template <typename T>T SumArrray(T * arr[], int n);struct debts{char name[50];double amount;};int main(){using namespace std;int things[6] = {13, 31, 103, 301, 310, 130};struct debts mr_E[3] ={{"Ima Wolfe", 2400.0},{"Ura Foxe", 1300.0},{"Iby Stout", 1800.0}};double * pd[3];for (int i=0; i<3; i++)pd[i] = &mr_E[i].amount;cout << "Sum: Mr.E's counts of things: "<< SumArrray(things, 6) << endl;cout << "Sum: Mr.E's debts: "<< SumArrray(pd, 3) << endl;return 0;。
C Primer Plus第6版编程练习答案(已下载)
Chapter 2 Programming ExercisesPE 2-‐1/* Programming Exercise 2-1 */#include <stdio.h> intmain(void){ printf("Gustav Mahler\n");printf("Gustav\nMahler\n");printf("Gustav ");printf("Mahler\n"); return 0;}PE 2-‐3/* Programming Exercise 2-3 */#include <stdio.h> intmain(void){ int ageyears; /* age in years */int agedays; /* age in days *//* large ages may require the long type */ageyears = 101; agedays = 365 * ageyears;printf("An age of %d years is %d days.\n", ageyears, agedays); return 0;}PE 2-‐4/* Programming Exercise 2-4 */#include <stdio.h>void jolly(void); voiddeny(void); intmain(void){ jolly(); jolly();jolly();deny();return 0; }void jolly(void){printf("For he's a jolly good fellow!\n");}void deny(void){printf("Which nobody can deny!\n");}PE 2-‐6/* Programming Exercise 2-6 */#include <stdio.h> intmain(void){ inttoes;toes = 10;printf("toes = %d\n", toes);printf("Twice toes = %d\n", 2 * toes); printf("toessquared = %d\n", toes * toes); return 0;}/* or create two more variables, set them to 2 * toes and toes * toes */PE 2-‐8/* Programming Exercise 2-8 */#include <stdio.h>void one_three(void);void two(void); intmain(void){printf("starting now:\n");one_three(); printf("done!\n");return 0;}void one_three(void){printf("one\n");two();printf("three\n");}void two(void){printf("two\n");}Chapter 3 Programming ExercisesPE 3-‐2/* Programming Exercise 3-2 */#include <stdio.h> intmain(void){int ascii;printf("Enter an ASCII code: "); scanf("%d",&ascii);printf("%d is the ASCII code for %c.\n", ascii, ascii); return 0;}PE 3-‐4/* Programming Exercise 3-4 */#include <stdio.h> intmain(void){ floatnum;printf("Enter a floating-point value: "); scanf("%f",&num);printf("fixed-point notation: %f\n", num);printf("exponential notation: %e\n", num);printf("p notation: %a\n", num); return 0;}PE 3-‐6/* Programming Exercise 3-6 */#include <stdio.h> intmain(void){float mass_mol = 3.0e-23; /* mass of water molecule in grams */ floatmass_qt = 950; /* mass of quart of water in grams */ float quarts;float molecules;printf("Enter the number of quarts of water: "); scanf("%f",&quarts);molecules = quarts * mass_qt / mass_mol;printf("%f quarts of water contain %e molecules.\n", quarts, molecules); return 0;}Chapter 4 Programming ExercisesPE 4-‐1/* Programming Exercise 4-1 */#include <stdio.h> intmain(void){ charfname[40]; charlname[40];printf("Enter your first name: ");scanf("%s", fname); printf("Enter yourlast name: "); scanf("%s", lname);printf("%s, %s\n", lname, fname); return0;}PE 4-‐4/* Programming Exercise 4-4 */#include <stdio.h> intmain(void){ floatheight; charname[40];printf("Enter your height in inches: ");scanf("%f", &height); printf("Enter your name:"); scanf("%s", name);printf("%s, you are %.3f feet tall\n", name, height / 12.0);return 0;}PE 4-‐7/* Programming Exercise 4-7 */#include <stdio.h>#include <float.h> intmain(void){ float ot_f = 1.0 / 3.0;double ot_d = 1.0 / 3.0;printf(" float values: ");printf("%.4f %.12f %.16f\n", ot_f, ot_f, ot_f); printf("doublevalues: ");printf("%.4f %.12f %.16f\n", ot_d, ot_d, ot_d);printf("FLT_DIG: %d\n", FLT_DIG); printf("DBL_DIG: %d\n",DBL_DIG); return 0;}Chapter 5 Programming ExercisesPE 5-‐1/* Programming Exercise 5-1 */#include <stdio.h> intmain(void){ const int minperhour = 60;int minutes, hours, mins;printf("Enter the number of minutes to convert: ");scanf("%d", &minutes); while (minutes > 0 ){ hours = minutes /minperhour; mins = minutes %minperhour;printf("%d minutes = %d hours, %d minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d", &minutes);}printf("Bye\n");return 0;}PE 5-‐3/* Programming Exercise 5-3 */#include <stdio.h> intmain(void){ const int daysperweek = 7;int days, weeks, day_rem;printf("Enter the number of days: ");scanf("%d", &days); while (days > 0){ weeks = days / daysperweek;day_rem = days % daysperweek;printf("%d days are %d weeks and %d days.\n",days, weeks, day_rem);printf("Enter the number of days (0 or less to end): "); scanf("%d", &days);}printf("Done!\n");return 0;}PE 5-‐5/* Programming Exercise 5-5 */ #include<stdio.h>int main(void) /* finds sum of first n integers */{int count, sum;int n;printf("Enter the upper limit: ");scanf("%d", &n); count = 0;sum = 0; while (count++< n) sum = sum + count; printf("sum= %d\n", sum); return 0;}PE 5-‐7/* Programming Exercise 5-7 */#include <stdio.h> voidshowCube(double x);int main(void) /* finds cube of entered number */{ doubleval;printf("Enter a floating-point value: ");scanf("%lf", &val); showCube(val);return 0; }void showCube(double x){printf("The cube of %e is %e.\n", x, x*x*x );}Chapter 6 Programming ExercisesPE 6-‐1/* pe6-1.c *//* this implementation assumes the character codes *//* are sequential, as they are in ASCII. */#include <stdio.h> #define SIZE26 int main( void ) { charlcase[SIZE]; int i; for(i = 0; i < SIZE; i++)lcase[i] = 'a' + i; for (i = 0; i< SIZE; i++) printf("%c",lcase[i]); printf("\n");return 0;}PE 6-‐3/* pe6-3.c *//* this implementation assumes the character codes *//* are sequential, as they are in ASCII. */#include <stdio.h> intmain( void ){ char let ='F'; char start;char end;for (end = let; end >= 'A'; end--){for (start = let; start >= end; start--) printf("%c", start); printf("\n");}return 0;}PE 6-‐6/* pe6-6.c */ #include<stdio.h> int main( void ){ int lower, upper, index;int square, cube;printf("Enter starting integer: ");scanf("%d", &lower); printf("Enter endinginteger: "); scanf("%d", &upper);printf("%5s %10s %15s\n", "num", "square", "cube"); for (index = lower; index <= upper; index++){ square = index *index; cube = index * square;printf("%5d %10d %15d\n", index, square, cube);}return 0;}PE 6-‐8/* pe6-8.c */ #include<stdio.h> int main( void ){ double n,m; double res;printf("Enter a pair of numbers: ");while (scanf("%lf %lf", &n, &m) == 2){res = (n - m) / (n * m);printf("(%.3g - %.3g)/(%.3g*%.3g) = %.5g\n", n, m, n, m, res);printf("Enter next pair (non-numeric to quit): ");}return 0;}PE 6-‐11/* pe6-11.c */#include<stdio.h> #defineSIZE 8 intmain( void ){ intvals[SIZE]; int i;printf("Please enter %d integers.\n", SIZE);for (i = 0; i < SIZE; i++) scanf("%d", &vals[i]);printf("Here, in reverse order, are the values you entered:\n"); for(i = SIZE - 1; i >= 0; i--) printf("%d ", vals[i]); printf("\n"); return 0;}PE 6-‐13/* pe6-13.c *//* This version starts with the 0 power */#include<stdio.h> #defineSIZE 8 intmain( void ){int twopows[SIZE];int i;int value = 1; /* 2 to the 0 */for (i = 0; i < SIZE; i++){ twopows[i] =value; value *= 2;}i = 0;do {printf("%d ", twopows[i]);i++; } while (i < SIZE);printf("\n");return 0;}PE 6-‐14/* pe-14.c *//* Programming Exercise 6-14 */#include<stdio.h> #defineSIZE 8 int main(void){ double arr[SIZE];double arr_cumul[SIZE]; inti;printf("Enter %d numbers:\n", SIZE);for (i = 0; i < SIZE; i++){printf("value #%d: ", i + 1);scanf("%lf", &arr[i]); /* or scanf("%lf",arr + i); */}arr_cumul[0] = arr[0]; /* set first element */ for (i = 1; i < SIZE; i++)arr_cumul[i] = arr_cumul[i-1] + arr[i];for (i = 0; i < SIZE; i++)printf("%8g ", arr[i]); printf("\n");for (i = 0; i < SIZE; i++)printf("%8g ", arr_cumul[i]);printf("\n");return 0;}PE 6-‐16/* pe6-16.c */#include <stdio.h>#define RATE_SIMP 0.10#define RATE_COMP 0.05#define INIT_AMT 100.0 intmain( void ){double daphne = INIT_AMT;double deidre = INIT_AMT; intyears = 0;while (deidre <= daphne){ daphne += RATE_SIMP *INIT_AMT; deidre += RATE_COMP * deidre;++years; }printf("Investment values after %d years:\n", years);printf("Daphne: $%.2f\n", daphne); printf("Deidre: $%.2f\n",deidre); return 0;}Chapter 7 Programming ExercisesPE 7-‐1/* Programming Exercise 7-1 */#include <stdio.h> int main(void){ char ch;int sp_ct = 0;int nl_ct = 0;int other = 0;while ((ch =getchar()) != '#'){if (ch == ' ')sp_ct++; else if (ch =='\n') nl_ct++;else other++;}printf("spaces: %d, newlines: %d, others: %d\n", sp_ct, nl_ct, other);return 0;}PE 7-‐3/* Programming Exercise 7-3 */#include <stdio.h> intmain(void){ int n; doublesumeven = 0.0; int ct_even= 0; double sumodd = 0.0;int ct_odd = 0;while (scanf("%d", &n) == 1 && n != 0){if (n % 2 == 0){sumeven += n;++ct_even;}else // n % 2 is either 1 or -1{sumodd += n;++ct_odd;}}printf("Number of evens: %d", ct_even); if(ct_even > 0)printf(" average: %g", sumeven / ct_even);putchar('\n');printf("Number of odds: %d", ct_odd); if(ct_odd > 0)printf(" average: %g", sumodd / ct_odd);putchar('\n'); printf("\ndone\n");return 0;}PE 7-‐5/* Programming Exercise 7-5 */#include <stdio.h> intmain(void){ char ch;int ct1 = 0;int ct2 = 0;while ((ch =getchar()) != '#'){switch(ch){case '.' : putchar('!');++ct1; break;case '!' : putchar('!');putchar('!'); ++ct2; break; default : putchar(ch);}}printf("%d replacement(s) of . with !\n", ct1); printf("%d replacement(s) of ! with !!\n", ct2);return 0;}PE 7-‐7// Programming Exercise 7-7#include <stdio.h>#define BASEPAY 10 // $10 per hour#define BASEHRS 40 // hours at basepay#define OVERTIME 1.5 // 1.5 time#define AMT1 300 // 1st rate tier#define AMT2 150 // 2st rate tier#define RATE1 0.15 // rate for 1st tier#define RATE2 0.20 // rate for 2nd tier #defineRATE3 0.25 // rate for 3rd tier int main(void){double hours;double gross; doublenet; double taxes;printf("Enter the number of hours worked this week: ");scanf("%lf", &hours); if (hours <= BASEHRS) gross = hours* BASEPAY; elsegross = BASEHRS * BASEPAY + (hours - BASEHRS) * BASEPAY * OVERTIME; if(gross <= AMT1) taxes = gross * RATE1; else if (gross <= AMT1 + AMT2) taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3; net = gross - taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net);return 0;}PE 7-‐9/* Programming Exercise 7-9 */#include <stdio.h>#include <stdbool.h> intmain(void){int limit;int num; intdiv;bool numIsPrime; // use int if stdbool.h not availableprintf("Enter a positive integer: "); while(scanf("%d", &limit) == 1 && limit > 0){if (limit > 1)printf("Here are the prime numbers up through %d\n", limit);elseprintf("No primes.\n");for (num = 2; num <= limit; num++){for (div = 2, numIsPrime = true; (div * div) <= num; div++)if (num % div == 0) numIsPrime = false; if (numIsPrime)printf("%d is prime.\n", num);}printf("Enter a positive integer (q to quit): ");}printf("Done!\n");return 0;}PE 7-‐11/* pe7-11.c *//* Programming Exercise 7-11 */#include <stdio.h>#include <ctype.h> intmain(void){const double price_artichokes = 2.05;const double price_beets = 1.15; constdouble price_carrots = 1.09; const doubleDISCOUNT_RATE = 0.05; const double under5 =6.50; const double under20 = 14.00; constdouble base20 = 14.00; const double extralb= 0.50;char ch;double lb_artichokes = 0;double lb_beets = 0; doublelb_carrots = 0; double lb_temp;double lb_total;doublecost_artichokes; doublecost_beets; doublecost_carrots; doublecost_total; doublefinal_total; double discount;double shipping;printf("Enter a to buy artichokes, b for beets, ");printf("c for carrots, q to quit: "); while ((ch =getchar()) != 'q' && ch != 'Q'){ if (ch == '\n')continue; while (getchar() !='\n') continue; ch =tolower(ch); switch (ch){case 'a' : printf("Enter pounds of artichokes: ");scanf("%lf", &lb_temp); lb_artichokes += lb_temp; break;case 'b' : printf("Enter pounds of beets: ");scanf("%lf", &lb_temp); lb_beets += lb_temp; break;case 'c' : printf("Enter pounds of carrots: "); scanf("%lf", &lb_temp); lb_carrots += lb_temp; break;default : printf("%c is not a valid choice.\n", ch);}printf("Enter a to buy artichokes, b for beets, "); printf("c forcarrots, q to quit: ");}cost_artichokes = price_artichokes * lb_artichokes; cost_beets= price_beets * lb_beets; cost_carrots = price_carrots * lb_carrots;cost_total = cost_artichokes + cost_beets + cost_carrots; lb_total =lb_artichokes + lb_beets + lb_carrots; if (lb_total <= 0)shipping = 0.0; else if (lb_total < 5.0) shipping = under5;else if (lb_total < 20) shipping = under20; elseshipping = base20 + extralb * lb_total; if(cost_total > 100.0)discount = DISCOUNT_RATE * cost_total;else discount = 0.0;final_total = cost_total + shipping - discount; printf("Yourorder:\n");printf("%.2f lbs of artichokes at $%.2f per pound:$ %.2f\n",lb_artichokes, price_artichokes, cost_artichokes); printf("%.2f lbs ofbeets at $%.2f per pound: $%.2f\n", lb_beets, price_beets,cost_beets); printf("%.2f lbs of carrots at $%.2f per pound: $%.2f\n", lb_carrots, price_carrots, cost_carrots); printf("Total cost ofvegetables: $%.2f\n", cost_total); if (cost_total > 100)printf("Volume discount: $%.2f\n", discount);printf("Shipping: $%.2f\n", shipping); printf("Totalcharges: $%.2f\n", final_total); return 0; }Chapter 8 Programming ExercisesPE 8-‐1/* Programming Exercise 8-1 */#include <stdio.h>int main(void) { int ch; intct = 0; while ((ch =getchar()) != EOF) ct++;printf("%d characters read\n", ct);return 0;}PE 8-‐3/* Programming Exercise 8-3 *//* Using ctype.h eliminates need to assume consecutive coding */#include <stdio.h> #include<ctype.h> int main(void){ int ch; unsigned longuct = 0; unsigned long lct= 0; unsigned long oct = 0;while ((ch = getchar()) != EOF)if (isupper(ch)) uct++;else if (islower(ch)) lct++;else oct++;printf("%lu uppercase characters read\n", uct); printf("%lulowercase characters read\n", lct); printf("%lu other charactersread\n", oct);return 0;}/* or you could use if(ch >= 'A' && ch <= 'Z')uct++;else if (ch >= 'a' && ch <= 'z')lct++; else oct++;*/PE 8-‐5/* Programming Exercise 8-5 *//* binaryguess.c -- an improved number-guesser *//* but relies upon truthful, correct responses */#include <stdio.h> #include<ctype.h> int main(void) { int high= 100; int low = 1; int guess =(high + low) / 2; char response;printf("Pick an integer from 1 to 100. I will try to guess ");printf("it.\nRespond with a y if my guess is right, with"); printf("\na h if it ishigh, and with an l if it is low.\n"); printf("Uh...is your number %d?\n", guess);while ((response = getchar()) != 'y') /* get response */{if (response == '\n')continue;if (response != 'h' && response != 'l'){printf("I don't understand that response. Please enter h for\n"); printf("high, l for low, or y for correct.\n"); continue;}if (response == 'h')high = guess - 1; else if(response == 'l') low =guess + 1; guess = (high + low)/ 2;printf("Well, then, is it %d?\n", guess);}printf("I knew I could do it!\n"); return 0;}PE 8-‐7/* Programming Exercise 8-7 */#include <stdio.h>#include <ctype.h>#include <stdio.h>#define BASEPAY1 8.75 // $8.75 per hour#define BASEPAY2 9.33 // $9.33 per hour#define BASEPAY3 10.00 // $10.00 per hour#define BASEPAY4 11.20 // $11.20 per hour#define BASEHRS 40 // hours at basepay#define OVERTIME 1.5 // 1.5 time#define AMT1 300 // 1st rate tier#define AMT2 150 // 2st rate tier#define RATE1 0.15 // rate for 1st tier#define RATE2 0.20 // rate for 2nd tier#define RATE3 0.25 // rate for 3rd tier intgetfirst(void); void menu(void); int main(void){ doublehours; doublegross; double net;double taxes;double pay; charresponse;menu();while ((response = getfirst()) != 'q'){if (response == '\n') /* skip over newlines */continue;response = tolower(response); /* accept A as a, etc. */ switch (response){case 'a': pay = BASEPAY1; break;case 'b': pay = BASEPAY2; break; case 'c':pay = BASEPAY3; break; case 'd': pay = BASEPAY4;break;default : printf("Please enter a, b, c, d, or q.\n"); menu();continue; // go to beginning of loop}printf("Enter the number of hours worked this week: ");scanf("%lf", &hours); if (hours <= BASEHRS) gross =hours * pay; elsegross = BASEHRS * pay + (hours - BASEHRS) * pay * OVERTIME;if (gross <= AMT1) taxes = gross * RATE1; else if (gross <= AMT1+ AMT2)taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3; net = gross - taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net); menu(); }printf("Done.\n");return 0;}void menu(void){printf("********************************************************""*********\n");printf("Enter the letter corresponding to the desired pay rate"" or action:\n");printf("a) $%4.2f/hr b) $%4.2f/hr\n", BASEPAY1,BASEPAY2);printf("c) $%5.2f/hr d) $%5.2f/hr\n", BASEPAY3, BASEPAY4); printf("q) quit\n");printf("********************************************************""*********\n");}int getfirst(void){ int ch;ch = getchar();while (isspace(ch)) ch =getchar(); while(getchar() != '\n')continue; return ch;}Chapter 9 Programming ExercisesPE 9-‐1/* Programming Exercise 9-1 */#include <stdio.h>double min(double, double); intmain(void){double x, y; printf("Enter two numbers(q to quit): "); while (scanf("%lf %lf", &x, &y) ==2){ printf("The smaller number is %f.\n", min(x,y));printf("Next two values (q to quit): ");}printf("Bye!\n");return 0;}double min(double a, double b){return a < b ? a : b;}/* alternative implementation doublemin(double a, double b){ if (a < b)return a; elsereturn b;}*/PE 9-‐3/* Programming Exercise 9-3 */#include <stdio.h>void chLineRow(char ch, int c, int r); intmain(void){ char ch; int col, row;printf("Enter a character (# to quit): "); while( (ch = getchar()) != '#'){ if (ch =='\n') continue;printf("Enter number of columns and number of rows: ");if (scanf("%d %d", &col, &row) != 2) break;chLineRow(ch, col, row);printf("\nEnter next character (# to quit): ");}printf("Bye!\n");return 0;}// start rows and cols at 0 voidchLineRow(char ch, int c, int r){int col, row;for (row = 0; row < r ; row++){for (col = 0; col < c; col++)putchar(ch); putchar('\n');}return;}PE 9-‐5/* Programming Exercise 9-5 */#include <stdio.h>void larger_of(double *p1, double *p2); intmain(void){double x, y; printf("Enter two numbers(q to quit): "); while (scanf("%lf %lf", &x, &y) ==2){larger_of(&x, &y);printf("The modified values are %f and %f.\n", x, y); printf("Next two values (q to quit): ");}printf("Bye!\n");return 0;}void larger_of(double *p1, double *p2){ if (*p1 >*p2) *p2 =*p1; else*p1 = *p2;}// alternatively:/*void larger_of(double *p1, double *p2){*p1= *p2 = *p1 > *p2 ? *p1 : *p2;}*/PE 9-‐8/* Programming Exercise 9-8 */ #include<stdio.h>double power(double a, int b); /* ANSI prototype */ intmain(void) { double x, xpow; int n; printf("Enter a number andthe integer power"); printf(" to which\nthe number will be raised.Enter q"); printf(" to quit.\n"); while (scanf("%lf%d", &x, &n)== 2){ xpow = power(x,n); /* function call */ printf("%.3g to the power %d is %.5g\n", x, n, xpow);printf("Enter next pair of numbers or q to quit.\n");} printf("Hope you enjoyed this power trip -- bye!\n");return 0;} double power(double a, int b) /* function definition */{ double pow =1; int i; if(b == 0){ if (a == 0)printf("0 to the 0 undefined; using 1 as the value\n"); pow = 1.0; } else if (a == 0) pow = 0.0; else if (b > 0)for(i = 1; i <= b; i++) pow *= a; else /* b < 0 */ pow = 1.0 / power(a, - b);return pow; /* return the value of pow */}PE 9-‐10/* Programming Exercise 9-10 */ #include<stdio.h> void to_base_n(int x, int base); intmain(void) { int number; int b; int count;printf("Enter an integer (q to quit):\n"); while(scanf("%d", &number) == 1){ printf("Enter number base (2-10): ");while ((count = scanf("%d", &b))== 1&& (b < 2 || b > 10)){printf("base should be in the range 2-10: ");} if(count != 1)break;printf("Base %d equivalent: ", b);to_base_n(number, b); putchar('\n');printf("Enter an integer (q to quit):\n");}printf("Done.\n");return 0;}void to_base_n(int x, int base) /* recursive function */{ int r; r = x % base; if(x >= base) to_base_n(x / base,base); putchar('0' + r); return;}Chapter 10 Programming ExercisesPE 10-‐1/* Programming Exercise 10-1 */#include <stdio.h>#define MONTHS 12 // number of months in a year#define YRS 5 // number of years of data int main(void){// initializing rainfall data for 2010 - 2014 constfloat rain[YRS][MONTHS] = {{4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},{8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},{9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},{7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},{7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}}; int year,month; float subtot,total;printf(" YEAR RAINFALL (inches)\n");for (year = 0, total = 0; year < YRS; year++){ /* for each year, sum rainfall for each month */for (month = 0, subtot = 0; month < MONTHS; month++) subtot +=*(*(rain + year) + month); printf("%5d %15.1f\n", 2010 + year, subtot);total += subtot; /* total for all years */}printf("\nThe yearly average is %.1f inches.\n\n", total/YRS);printf("MONTHLY AVERAGES:\n\n");printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct "); printf(" Nov Dec\n");for (month = 0; month < MONTHS; month++){ /* for each month, sum rainfall over years */ for (year = 0, subtot =0; year < YRS; year++) subtot += *(*(rain + year) + month); printf("%4.1f ", subtot/YRS);}printf("\n");return 0;}PE 10-‐3/* Programming Exercise 10-3 */#include <stdio.h>#define LEN 10int max_arr(const int ar[], int n);void show_arr(const int ar[], int n);int main(void){int orig[LEN] = {1,2,3,4,12,6,7,8,9,10}; intmax;show_arr(orig, LEN); max =max_arr(orig, LEN); printf("%d = largestvalue\n", max);return 0;}int max_arr(const int ar[], int n){ int i; intmax = ar[0];/* don't use 0 as initial max value -- fails if all array values are neg */for (i = 1; i < n; i++)if (max < ar[i]) max= ar[i]; return max;}void show_arr(const int ar[], int n){ int i; for (i =0; i < n; i++) printf("%d", ar[i]); putchar('\n');}PE 10-‐5/* Programming Exercise 10-5 */#include <stdio.h>#define LEN 10double max_diff(const double ar[], int n); voidshow_arr(const double ar[], int n);。
Cprimerplus第6版中文版编程练习答案
第二章:开始学习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();}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:___\b\b\b";// \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<<" inches\n";}//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:___\b\b\b";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)s econd/minutes_per_degree/seconds_per_minute;cout<<degree<<" degrees,"<<minute<<" minutes,"<<second<<"seconds ="<<show_in_degree<<" degrees\n";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<<" seconds\n";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 gallon\n"; 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 petrolper 100 kilometers\n";return 0;}//ex3.7 automobile gasoline consumption-耗油量--欧洲风格(L/100Km)转换成美国风格(mpg)#include<iostream>int main(){using namespace std;cout<<"Enter the automobile gasoline consumption figure in\n"<<"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<<" mpg\n"; 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 in\n"<<"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/100Km\n";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 firstname[Asize];char lastname[Asize];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(stname,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<<","<<stname<<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 fname[Asize];char lname[Asize];char fullname[2*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 尾部fullname[2*Asize]='\0';//为避免字符型数组溢出,在数组结尾添加结束符cout<<"Here's the information in a single string:"<<fullname<<endl;//显示组合结果return 0;}#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <cstring>const int Asize = 20;int main(){using namespace std;char firstname[Asize];char lastname[50];cout << "Enter your first name: ";cin.getline(firstname,Asize);cout << "Enter your last name: ";cin.getline(lastname,50);strcat(lastname,", ");strncat(lastname,firstname,Asize);cout << "Here's the information in a single string: "<< lastname <<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 CandyBar{char brand[Asize];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 CandyBar{char brand[Asize];double weight;int calory;};int main(){using namespace std;CandyBar snack[3]={{"Mocha Munch",2.3,350},{"XuFuJi",1.1,300},{"Alps",0.4,100}};for(int i=0;i<3;i++)//利用for 循环来显示snack 变量的内容{cout<<snack[i].brand<<endl<<snack[i].weight<<endl<<snack[i].calory<<endl<<endl;}return 0;}//ex4.7 pizza 披萨饼#include<iostream>#include<string>const int Size=20;struct pizza//声明结构{char company[Size];double diameter;double weight;};int main(){using namespace std;pizza pie;//创建一个名为pie 的结构变量cout<<"What's the name of pizza company:"; cin.getline(piepany,Size);cout<<"What's the diameter of pizza:"; cin>>pie.diameter;cout<<"What's the weight of pizza:";cout<<"company:"<<piepany<<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 company[Size];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:";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 CandyBar{string brand;double weight;int calory;};int main(){CandyBar *snack= new CandyBar[3];snack[0].brand="A";//单个初始化由new 动态分派的内存snack[0].weight=1.1;snack[0].calory=200;snack[1].brand="B";snack[1].weight=2.2;snack[1].calory=400;snack[2].brand="C";snack[2].weight=4.4;snack[2].calory=500;for(int i=0;i<3;i++){cout << " brand: " << snack[i].brand << endl;cout << " weight: " << snack[i].weight << endl;cout << " calorie: " << snack[i].calory << endl<<endl;}delete [] snack;return 0;}//ex.4.10 数组—方式1#include <iostream>int main(){using namespace std;const int Size = 3;int success[Size];cout<<"Enter your success of the three times 40 meters running:\n"; cin >> success[0]>>success[1]>>success[2];cout<<"success1:"<<success[0]<<endl;cout<<"success2:"<<success[1]<<endl;cout<<"success3:"<<success[2]<<endl;double average=(success[0]+success[1]+success[2])/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 >> ad[0]>>ad[1]>>ad[2];cout<<"success1:"<<ad[0]<<endl;cout<<"success2:"<<ad[1]<<endl;cout<<"success3:"<<ad[2]<<endl;ad[3]=(ad[0]+ad[1]+ad[2])/3;cout<<"average:"<<ad[3]<<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};ad[1]=ad[0]=1L;for(int i=2;i<101;i++)ad[i]=i*ad[i-1];for(int i=0;i<101;i++)cout<<i<<"! = "<<ad[i]<<endl;return 0;}#include <iostream>#include <array>using namespace std;int main(){array<long double, 101> multiply; multiply[0] = multiply[1] = 1LL;for (int i = 2; i <= 100; i++)multiply[i] = multiply[i-1]*i;cout << multiply[100];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 的投资价值。
C++-Primer-Plus(第六版)编程习题解答
using namespace std;
int degrees;
int minutes;
int seconds;
double latitude;
cout << "Enter a latitude in degrees, minutes, and seconds:\n";
cout << "First, enter the degrees: ";
const double LITERS_PER_GALLON = 3.875;
int main ( void )
{
using namespace std;
double euro_rating;
double us_rating;
cout << "Enter fuel consumption in liters per 100 km: ";
#include <iostream>
const int Inch_Per_Foot = 12;
int main(void)
{
using namespace std;
// Note: some environments don't support the backspace character
cout << "Please enter your height in inches: ___/b/b/b ";
cout << C << " degrees Celsius = "
<< F << " degrees Fahrenheit\n";
C Primer Plus第6版编程练习答案(已下载)精编版
/* or create two more variables, set them to 2 * toes and toes * toes */
PE
/* Programming Exercise 2-8 */
#include <stdio.h> void one_three(void); void two(void); int main(void)
Chapter
PE
/* Programming Exercise 2-1 */
#include <stdio.h> int main(void)
{ printf("Gustav Mahler\n"); printf("Gustav\nMahler\n"); printf("Gustav "); printf("Mahler\n"); return 0;
printf("An age of %d years is %d days.\n", ageyears, agedays); return 0;
}
PE
/* Programming Exercise 2-4 */
#include <stdio.h> void jolly(void); void deny(void); int main(void)
}
PE
/* Programming Exercise 2-3 */
#include <stdio.h> int main(void)
{ int ageyears; /* age in years */ int agedays; /* age in days */
C++-primer-plus(第6版)中文版-编程练习答案(word版)
第二章:开始学习C++//ex2.1--display your name and a ddress#include<iostream>int main(void){using namespace std;cout<<"My name is liao chunguang and I live in hunan chenzhou.\n〞;}the furlong units to yard uints-把浪单位换位码单位#include<iostream>double fur2yd(double);int main(){using namespace std;cout<<"enter the distance measured by furlong u nits:";double fur;cin>>fur;cout<<"convert the furlong to y ard"<<endl;double yd;yd=fur2yd(fur);cout<<fur<<" furlong is "<<yd<<" yard"<<endl;return 0;}double fur2yd(double t){return 220*t;}每个函数都被调用两次#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;}#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;}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;}the light years valve to astronomical units--把光年转换为天文单位#include<iostream>double convert(double);//函数原型int main(){using namespace std;cout<<"Enter the number of light y ears:";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 天文单位}显示用户输入的小时数和分钟数#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:\b\b\b";// \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<<" inches\n";return 0;}计算相应的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 p art〔输入你身高的英寸局部〕:_\b";int ht_inch;cin>>ht_inch;cout<<"Now,please enter your weight in pound:\b\b\b";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;}以度,分,秒输入,以度输出#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 s econds:\n";cout<<"First,enter the d egrees:";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/mi nutes_per_degree/seconds_per_minute;cout<<degree<<" degrees,"<<minute<<" minutes,"<<second<<"seconds ="<<show_in_degree<<" degrees\n";return 0;}#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<<" seconds\n";return 0;}#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 gallon\n";cout<<"Computing by European style:\n";cout<<"Enter the distance in k ilometers:";double k_distance;cin>>k_distance;cout<<"Enter the petrol in l iters:";double k_gasoline;cin>>k_gasoline;cout<<"In European style:"<<"your can used "<<100*k_gasoline/k_distance<<" liters of petrol per 100 kilometers\n";return 0;}//ex3.7 automobile gasoline consumption-耗油量--欧洲风格(L/100Km)转换成美国风格(mpg) #include<iostream>int main(){using namespace std;cout<<"Enter the automobile gasoline consumption figure in\n"<<"European style(liters per 100 k ilometers):";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<<" mpg\n";return 0;}// Note that 100 kilometers is 62.14 miles, and 1 gallon is 3.875 liters.//Thus, 19 mpg is about L/100Km, and 27 mpg is about L/100Km. Enter theautomobile gasoline consumption figure inEuropean style(liters per 100 Converts to U.S.style(miles per gallon):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 in\n"<<"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/100Km\n";return 0;}// Enter the automobile gasoline consumption figure inU.S. style(miles per gallon):19Converts to European style(miles per gallon):19 mpg =Press any key to continue第四章复合类型//ex4.1 display the information of student#include<iostream>const int Asize=20;using namespace std;struct student//定义结构描述{char firstname[Asize];char lastname[Asize];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(stname,Asize);cout<<"what letter grade do you d eserve?"<<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<<","<<stname<<endl;cout<<"Grade:"<<char(name.grade+1)<<endl;cout<<"Age:"<<name.age<<endl;}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;}//有时候会遇到需要按下两次回车键才能正确的显示结果,这是的一个BUG,更改如下:else if (_Tr::eq((_E)_C, _D)){_Chg = true;_I.rdbuf()->sbumpc();//修改后的break; }输入其名和姓,并组合显示#include<iostream>#include<cstring>const int Asize=20;int main(){using namespace std;char fname[Asize];char lname[Asize];char fullname[2*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 尾部fullname[2*Asize]='\0';//为防止字符型数组溢出,在数组结尾添加结束符cout<<"Here's the information in a single string:"<<fullname<<endl;//显示组合结果return 0;}#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include <cstring>const int Asize = 20;int main(){using namespace std;char firstname[Asize];char lastname[50];cout << "Enter your first name: ";cin.getline(firstname,Asize);cout << "Enter your last name: ";cin.getline(lastname,50);strcat(lastname,", ");strncat(lastname,firstname,Asize);cout << "Here's the information in a single string: "<< lastname <<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 CandyBar{char brand[Asize];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;}结构数组的声明及初始化#include<iostream>const int Asize=20;struct CandyBar{char brand[Asize];double weight;int calory;};int main(){using namespace std;CandyBar snack[3]={{"Mocha Munch",2.3,350},{"XuFuJi",1.1,300},{"Alps",0.4,100}};for(int i=0;i<3;i++)//利用for 循环来显示snack 变量的内容{cout<<snack[i].brand<<endl<<snack[i].weight<<endl<<snack[i].calory<<endl<<endl;}return 0;}//ex4.7 pizza 披萨饼#include<iostream>#include<string>const int Size=20;struct pizza//声明结构char company[Size];double diameter;double weight;};int main(){using namespace std;pizza pie;//创立一个名为pie 的结构变量cout<<"What's the name of pizza company:";cin.getline(pie pany,Size);cout<<"What's the diameter of pizza:";cin>>pie.diameter;cout<<"What's the weight of pizza:";cin>>pie.weight; cout<<"company:"<<piepany<<endl;cout<<"diameter:"<<pie.diameter<<"inches"<<endl;cout<<"weight:"<<pie.weight<<"ounches"<<endl;return 0;}pizza pie 披萨饼使用new 创立动态结构#include<iostream>#include<string>const int Size=20;struct pizza//声明结构{char company[Size];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 CandyBar{string brand;double weight;int calory;};int main(){CandyBar *snack= new CandyBar[3]; snack[0].brand="A";//单个初始化由new 动态分配的内存snack[0].weight=1.1;snack[0].calory=200;snack[1].brand="B";snack[1].weight=2.2;snack[1].calory=400;snack[2].brand="C";snack[2].weight=4.4;snack[2].calory=500;for(int i=0;i<3;i++){cout << " brand: " << snack[i].brand << endl;cout << " weight: " << snack[i].weight << e ndl;cout << " calorie: " << snack[i].calory << endl<<endl;}delete [] snack;return 0;}//ex.4.10 数组—方法1#include <iostream>int main(){using namespace std;const int Size = 3;int success[Size];cout<<"Enter your success of the three times 40 meters running:\n";cin >> success[0]>>success[1]>>success[2];cout<<"success1:"<<success[0]<<endl;cout<<"success2:"<<success[1]<<endl;cout<<"success3:"<<success[2]<<endl;double average=(success[0]+success[1]+success[2])/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 >> ad[0]>>ad[1]>>ad[2];cout<<"success1:"<<ad[0]<<endl;cout<<"success2:"<<ad[1]<<endl;cout<<"success3:"<<ad[2]<<endl;ad[3]=(ad[0]+ad[1]+ad[2])/3;cout<<"average:"<<ad[3]<<endl;return 0;}第五章循环和关系表达式#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;}#include <iostream>#include<array>int main(){using namespace std;array<long double,101>ad={0};ad[1]=ad[0]=1L;for(int i=2;i<101;i++)ad[i]=i*ad[i-1];for(int i=0;i<101;i++)cout<<i<<"! = "<<ad[i]<<endl;return 0;}#include <iostream>#include <array>using namespace std;int main(){array<long double, 101> multiply;multiply[0] = multiply[1] = 1LL;for (int i = 2; i <= 100; i++)multiply[i] = multiply[i-1]*i;cout << multiply[100];return 0;}#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;}#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 的投资价值。
C++-Primer-Plus(第六版)编程习题解答
Chapter 2#include <iostream>int main(void){using namespace std;cout << "Enter a distance in furlongs: "; double furlongs;cin >> furlongs;double feet;feet = 220 * furlongs;cout << furlongs << " furlongs = "<< feet << " feet\n";return 0;}#include <iostream>using namespace std;void mice();void run();int main(){mice();mice();run();run();return 0;}void mice(){cout << "Three blind mice\n";}void run(){cout << "See how they run\n";}#include <iostream>double C_to_F(double);int main(){using namespace std;cout << "Enter a temperature in Celsius: ";double C;cin >> C;double F;F = C_to_F(C);cout << C << " degrees Celsius = "<< F << " degrees Fahrenheit\n";return 0;}double C_to_F(double temp){return 1.8 * temp + 32.0;}Chapter 3#include <iostream>const int Inch_Per_Foot = 12;int main(void){using namespace std;// Note: some environments don't support the backspace character cout << "Please enter your height in inches: ___/b/b/b ";int ht_inch;cin >> ht_inch;int ht_feet = ht_inch / Inch_Per_Foot;int rm_inch = ht_inch % Inch_Per_Foot;cout << "Your height is " << ht_feet << " feet, ";cout << rm_inch << " inch(es).\n";return 0;}#include <iostream>const double MINS_PER_DEG = 60.0;const double SECS_PER_MIN = 60.0;int main(){using namespace std;int degrees;int minutes;int seconds;double latitude;cout << "Enter a latitude in degrees, minutes, and seconds:\n"; cout << "First, enter the degrees: ";cin >> degrees;cout << "Next, enter the minutes of arc: ";cin >> minutes;cout << "Finally, enter the seconds of arc: ";cin >> seconds;latitude = degrees + (minutes + seconds /SECS_PER_MIN)/MINS_PER_DEG;cout << degrees << " degrees, " << minutes << " minutes, "<< seconds << " seconds = " << latitude << " degrees\n"; return 0;}#include <iostream>int main(void){using namespace std;cout << "How many miles have you driven your car? ";float miles;cin >> miles;cout << "How many gallons of gasoline did the car use? ";float gallons;cin >> gallons;cout << "Your car got " << miles / gallons;cout << " miles per gallon.\n";return 0;}#include <iostream>const double KM100_TO_MILES = 62.14;const double LITERS_PER_GALLON = 3.875;int main ( void ){using namespace std;double euro_rating;double us_rating;cout << "Enter fuel consumption in liters per 100 km: ";cin >> euro_rating;// divide by LITER_PER_GALLON to get gallons per 100-km// divide by KM100_TO_MILES to get gallons per mile// invert result to get miles per gallonus_rating = (LITERS_PER_GALLON * KM100_TO_MILES) / euro_rating; cout << euro_rating << " liters per 100 km is ";cout << us_rating << " miles per gallon.\n";return 0;}Chapter 4// pe4-2.cpp -- storing strings in string objects#include <iostream>#include <string>int main(){using namespace std;string name;string dessert;cout << "Enter your name:\n";getline(cin, name); // reads through newlinecout << "Enter your favorite dessert:\n";getline(cin, dessert);cout << "I have some delicious " << dessert;cout << " for you, " << name << ".\n";return 0;}// pe4-3.cpp -- storing strings in char arrays#include <iostream>#include <cstring>const int SIZE = 20;int main(){using namespace std;char firstName[SIZE];char lastName[SIZE];char fullName[2*SIZE + 1];cout << "Enter your first name: ";cin >> firstName;cout << "Enter your last name: ";cin >> lastName;strncpy(fullName,lastName,SIZE);strcat(fullName, ", ");strncat(fullName, firstName, SIZE);fullName[SIZE - 1] = '\0';cout << "Here's the information in a single string: " << fullName << endl;return 0;}// a candybar structurestruct CandyBar {char brand[40];double weight;int calories;};#include <iostream>int main(){using namespace std; //introduces namespace stdCandyBar snack = { "Mocha Munch", 2.3, 350 };cout << "Brand name: " << snack.brand << endl;cout << "Weight: " << snack.weight << endl;cout << "Calories: " << snack.calories << endl;return 0;}#include <iostream>const int Slen = 70;struct pizza {char name[Slen];float diameter;float weight;};int main(void){using namespace std;pizza pie;cout << "What is the name of the pizza company? ";cin.getline(, Slen);cout << "What is the diameter of the pizza in inches? "; cin >> pie.diameter;cout << "How much does the pizza weigh in ounces? ";cin >> pie.weight;cout << "Company: " << << "\n";cout << "Diameter: " << pie.diameter << " inches\n";cout << "Weight: " << pie.weight << " ounces\n";return 0;}Chapter 5#include <iostream>int main(void){using namespace std;double sum = 0.0;double in;cout << "Enter a number (0 to terminate) : ";cin >> in;while (in != 0) {sum += in;cout << "Running total = " << sum << "\n";cout << "Enter next number (0 to terminate) : ";cin >> in;}cout << "Bye!\n";return 0;}// book sales#include <iostream>const int MONTHS = 12;const char * months[MONTHS] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};int main(){using namespace std; //introduces namespace stdint sales[MONTHS];int month;cout << "Enter the monthly sales for \"C++ for Fools\":\n";for (month = 0; month < MONTHS; month++){cout << "Sales for " << months[month] << ": ";cin >> sales[month];}double total = 0.0;for (month = 0; month < MONTHS; month++)total += sales[month];cout << "Total sales: " << total << endl;return 0;}#include <iostream>struct car { char name[20]; int year;};int main(void){using namespace std;int n;cout << "How many cars do you wish to catalog?: ";cin >> n;while(cin.get() != '\n') // get rid of rest of line;car * pc = new car [n];int i;for (i = 0; i < n; i++){cout << "Car #" << (i + 1) << ":\n";cout << "Please enter the make: ";cin.getline(pc[i].name,20);cout << "Please enter the year made: ";cin >> pc[i].year;while(cin.get() != '\n') // get rid of rest of line ;}cout << "Here is your collection:\n";for (i = 0; i < n; i++)cout << pc[i].year << " " << pc[i].name << "\n";delete [] pc;return 0;}// pe5-7.cpp -- count words using C-style string#include <iostream>#include <cstring> // prototype for strcmp()const int STR_LIM = 50;int main(){using namespace std;char word[STR_LIM];int count = 0;cout << "Enter words (to stop, type the word done):\n";while (cin >> word && strcmp("done", word))++count;cout << "You entered a total of " << count << " words.\n"; return 0;}//nested loops#include <iostream>int main(){using namespace std; //introduces namespace stdint rows;int row;int col;int periods;cout << "Enter number of rows: ";cin >> rows;for (row = 1; row <= rows; row++){periods = rows - row;for (col = 1; col <= periods; col++)cout << '.';// col already has correct value for next loop for ( ; col <= rows; col++)cout << '*';cout << endl;}return 0;}Chapter 6#include <iostream>#include <cctype>int main( ){using namespace std; //introduces namespace std char ch;cin.get(ch);while(ch != '@'){if (!isdigit(ch)){if (isupper(ch))ch = tolower(ch);else if (islower(ch))ch = toupper(ch);cout << ch;}cin.get(ch);}return 0;}#include <iostream>int main(void){using namespace std;cout << "Please enter one of the following choices:\n";cout << "c) carnivore p) pianist\n"<< "t) tree g) game\n";char ch;cin >> ch;while (ch != 'c' && ch != 'p' && ch != 't' && ch != 'g'){cout << "Please enter a c, p, t, or g: ";cin >> ch;}switch (ch){case 'c' : cout << "A cat is a carnivore.\n";break;case 'p' : cout << "Radu Lupu is a pianist.\n";break;case 't' : cout << "A maple is a tree.\n";break;case 'g' : cout << "Golf is a game.\n";break;default : cout << "The program shouldn't get here!\n"; }return 0;}// Neutronia taxation#include <iostream>const double LEV1 = 5000;const double LEV2 = 15000;const double LEV3 = 35000;const double RATE1 = 0.10;const double RATE2 = 0.15;const double RATE3 = 0.20;int main( ){using namespace std;double income;double tax;cout << "Enter your annual income in tvarps: ";cin >> income;if (income <= LEV1)tax = 0;else if (income <= LEV2)tax = (income - LEV1) * RATE1;else if (income <= LEV3)tax = RATE1 * (LEV2 - LEV1) + RATE2 * (income - LEV2);elsetax = RATE1 * (LEV2 - LEV1) + RATE2 * (LEV3 - LEV2)+ RATE3 * (income - LEV3);cout << "You owe Neutronia " << tax << " tvarps in taxes.\n"; return 0;}#include <iostream>#include <string>int main(){using namespace std;string word;char ch;int vowel = 0;int consonant = 0;int other = 0;cout << "Enter words (q to quit):\n";cin >> word;while ( word != "q"){ch = tolower(word[0]);if (isalpha(ch)){if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')vowel++;elseconsonant++;}elseother++;cin >> word;}cout << vowel <<" words beginning with vowels\n";cout << consonant << " words beginning with consonants\n";cout << other << " others\n";return 0;}// pe6-8.cpp -- counting characters#include <iostream>#include <fstream> // file I/O suppport#include <cstdlib> // support for exit()const int SIZE = 60;int main(){using namespace std;char filename[SIZE];char ch;ifstream inFile; // object for handling file input cout << "Enter name of data file: ";cin.getline(filename, SIZE);inFile.open(filename); // associate inFile with a fileif (!inFile.is_open()) // failed to open file{cout << "Could not open the file " << filename << endl; cout << "Program terminating.\n";exit(EXIT_FAILURE);}int count = 0; // number of items readinFile >> ch; // get first valuewhile (inFile.good()) // while input good and not at EOF {count++; // one more item readinFile >> ch; // get next value}cout << count << " characters in " << filename << endl;inFile.close(); // finished with the filereturn 0;}Chapter 7//pe7-1.cpp -- harmonic mean#include <iostream>double h_mean(double x, double y);int main(void){using namespace std;double x,y;cout << "Enter two numbers (a 0 terminates): "; while (cin >> x >> y && x * y != 0)cout << "harmonic mean of " << x << " and " << y << " = " << h_mean(x,y) << "\n"; /* or do the reading and testing in two parts:while (cin >> x && x != 0){cin >> y;if (y == 0)break;...*/cout << "Bye\n";return 0;}double h_mean(double x, double y){return 2.0 * x * y / (x + y);}#include <iostream>struct box {char maker[40];float height;float width;float length;float volume;};void showbox(box b);void setbox(box * pb);int main(void){box carton = {"Bingo Boxer", 2, 3, 5}; // no volume providedsetbox(&carton);showbox(carton);return 0;}void showbox(box b){using namespace std;<< "\nvolume: " << b.volume << "\n";}void setbox(box * pb){pb->volume = pb->height * pb->width * pb->length;}// pe7-4.cpp -- probability of winning#include <iostream>long double probability(unsigned numbers, unsigned picks);int main(){using namespace std;double total, choices;double mtotal;double probability1, probability2;cout << "Enter total number of game card choices and\n""number of picks allowed for the field:\n";while ((cin >> total >> choices) && choices <= total){cout << "Enter total number of game card choices ""for the mega number:\n";if (!(cin >> mtotal))break;cout << "The chances of getting all " << choices << " picks is one in "<< (probability1 = probability(total, choices) ) << ".\n";cout << "The chances of getting the megaspot is one in "<< (probability2 = probability(mtotal, 1) ) << ".\n";cout << "You have one chance in ";cout << probability1 * probability2; // compute the probabilitycout << " of winning.\n";cout << "Next set of numbers (q to quit): ";}cout << "bye\n";return 0;}// the following function calculates the probability of picking picks // numbers correctly from numbers choiceslong double probability(unsigned numbers, unsigned picks){long double result = 1.0; // here come some local variableslong double n;unsigned p;for (n = numbers, p = picks; p > 0; n--, p--)result = result * n / p ;return result;}#include <iostream>int Fill_array(double ar[], int size);void Show_array(const double ar[], int size);void Reverse_array(double ar[], int size);const int LIMIT = 10;int main( ){using namespace std;double values[LIMIT];int entries = Fill_array(values, LIMIT);cout << "Array values:\n";Show_array(values, entries);cout << "Array reversed:\n";Reverse_array(values, entries);Show_array(values, entries);cout << "All but end values reversed:\n";Reverse_array(values + 1, entries - 2);Show_array(values, entries);return 0;}int Fill_array(double ar[], int size){using namespace std;int n;cout << "Enter up to " << size << " values (q to quit):\n"; for (n = 0; n < size; n++){cin >> ar[n];if (!cin)break;}return n;}void Show_array(const double ar[], int size){using namespace std;int n;for (n = 0; n < size; n++){cout << ar[n];if (n % 8 == 7)cout << endl;elsecout << ' ';}if (n % 8 != 0)cout << endl;}void Reverse_array(double ar[], int size){int i, j;double temp;for (i = 0, j = size - 1; i < j; i++, j--){temp = ar[i];ar[i] = ar[j];ar[j] = temp;}}#include <iostream>double calculate(double x, double y, double (*pf)(double, double)); double add(double x, double y);double sub(double x, double y);double mean(double x, double y);int main(void){using namespace std;double (*pf[3])(double,double) = {add, sub, mean};char * op[3] = {"sum", "difference", "mean"};double a, b;cout << "Enter pairs of numbers (q to quit): ";int i;while (cin >> a >> b){// using function namescout << calculate(a, b, add) << " = sum\n";cout << calculate(a, b, mean) << " = mean\n";// using pointersfor (i = 0; i < 3; i++)cout << calculate(a, b, pf[i]) << " = "<< op[i] << "\n";}cout << "Done!\n";return 0;}double calculate(double x, double y, double (*pf)(double, double)) {return (*pf)(x, y);}double add(double x, double y){return x + y;}double sub(double x, double y){return x - y;}double mean(double x, double y)return (x + y) / 2.0;}Chapter 8#include <iostream>void silly(const char * s, int n = 0);int main(void){using namespace std;char * p1 = "Why me?\n";silly(p1);for (int i = 0; i < 3; i++){cout << i << " = i\n";silly(p1, i);}cout << "Done\n";return 0;}void silly(const char * s, int n){using namespace std;static int uses = 0;int lim = ++uses;if (n == 0)lim = 1;for (int i = 0; i < lim; i++)cout << s;}#include <iostream>#include <cstring> // for strlen(), strcpy() using namespace std;struct stringy {char * str; // points to a stringint ct; // length of string (not counting '\0')};void show(const char *str, int cnt = 1);void show(const stringy & bny, int cnt = 1);void set(stringy & bny, const char * str);int main(void){stringy beany;char testing[] = "Reality isn't what it used to be.";set(beany, testing); // first argument is a reference, // allocates space to hold copy of testing,// sets str member of beany to point to the// new block, copies testing to new block,// and sets ct member of beanyshow(beany); // prints member string onceshow(beany, 2); // prints member string twicetesting[0] = 'D';testing[1] = 'u';show(testing); // prints testing string onceshow(testing, 3); // prints testing string thriceshow("Done!");return 0;}void show(const char *str, int cnt){while(cnt-- > 0){cout << str << endl;}}void show(const stringy & bny, int cnt){while(cnt-- > 0){cout << bny.str << endl;}}void set(stringy & bny, const char * str){bny.ct = strlen(str);bny.str = new char[bny.ct+1];strcpy(bny.str, str);}#include <iostream>template <class T>T max5(T ar[]){int n;T max = ar[0];for (n = 1; n < 5; n++)if (ar[n] > max)max = ar[n];return max;}const int LIMIT = 5;int main( ){using namespace std;double ard[LIMIT] = { -3.4, 8.1, -76.4, 34.4, 2.4}; int ari[LIMIT] = {2, 3, 8, 1, 9};double md;int mi;md = max5(ard);mi = max5(ari);cout << "md = " << md << endl;cout << "mi = " << mi << endl;return 0;}Chapter 9PE 9-1const int Len = 40;struct golf{char fullname[Len];int handicap;};// non-interactive version// function sets golf structure to provided name, handicap// using values passed as arguments to the functionvoid setgolf(golf & g, const char * name, int hc);// interactive version// function solicits name and handicap from user// and sets the members of g to the values entered// returns 1 if name is entered, 0 if name is empty stringint setgolf(golf & g);// function resets handicap to new valuevoid handicap(golf & g, int hc);// function displays contents of golf structurevoid showgolf(const golf & g);#include <iostream>#include "pe9-golf.h"#include <cstring>// function solicits name and handicap from user// returns 1 if name is entered, 0 if name is empty stringint setgolf(golf & g){std::cout << "Please enter golfer's full name: ";std::cin.getline(g.fullname, Len);if (g.fullname[0] == '\0')return 0; // premature terminationstd::cout << "Please enter handicap for " << g.fullname << ": "; while (!(std::cin >> g.handicap)){std::cin.clear();std::cout << "Please enter an integer: ";}while (std::cin.get() != '\n')continue;return 1;}// function sets golf structure to provided name, handicap void setgolf(golf & g, const char * name, int hc){std::strcpy(g.fullname, name);g.handicap = hc;}// function resets handicap to new valuevoid handicap(golf & g, int hc){g.handicap = hc;}// function displays contents of golf structurevoid showgolf(const golf & g){std::cout << "Golfer: " << g.fullname << "\n";std::cout << "Handicap: " << g.handicap << "\n\n";}#include <iostream>#include "pe9-golf.h"const int Mems = 5;int main(void){using namespace std;golf team[Mems];cout << "Enter up to " << Mems << " golf team members:\n"; int i;for (i = 0; i < Mems; i++)if (setgolf(team[i]) == 0)break;for (int j = 0; j < i; j++)showgolf(team[j]);setgolf(team[0], "Fred Norman", 5);showgolf(team[0]);handicap(team[0], 3);showgolf(team[0]);return 0;}PE 9-3//pe9-3.cpp -- using placement new#include <iostream>#include <new>#include <cstring>struct chaff{char dross[20];int slag;};// char buffer[500]; // option 1int main(){using std::cout;using std::endl;chaff *p1;int i;char * buffer = new char [500]; // option 2p1 = new (buffer) chaff[2]; // place structures in buffer std::strcpy(p1[0].dross, "Horse Feathers");p1[0].slag = 13;std::strcpy(p1[1].dross, "Piffle");p1[1].slag = -39;for (i = 0; i < 2; i++)cout << p1[i].dross << ": " << p1[i].slag << endl;delete [] buffer; // option 2return 0;}Chapter 10PE 10-1#include <iostream>#include <cstring>// class declarationclass BankAccount{private:char name[40];char acctnum[25];double balance;public:BankAccount(char * client = "no one", char * num = "0",double bal = 0.0); void show(void) const; void deposit(double cash); void withdraw(double cash); };// method definitionsBankAccount::BankAccount(char * client, char * num, double bal) {std::strncpy(name, client, 39);name[39] = '\0';std::strncpy(acctnum, num, 24);acctnum[24] = '\0';balance = bal;}void BankAccount::show(void) const{using std::cout;using std:: endl;cout << "Client: " << name << endl;cout << "Account Number: " << acctnum << endl;cout << "Balance: " << balance << endl;}void BankAccount::deposit(double cash){if (cash >= 0)balance += cash;elsestd::cout << "Illegal transaction attempted";}void BankAccount::withdraw(double cash){if (cash < 0)std::cout << "Illegal transaction attempted";else if (cash <= balance)balance -=cash;elsestd::cout << "Request denied due to insufficient funds.\n"; }// sample useint main(){BankAccount bird;BankAccount frog("Kermit", "croak322", 123.00);bird.show();frog.show();bird = BankAccount("Chipper", "peep8282", 214.00);bird.show();frog.deposit(20);frog.show();frog.withdraw(4000);frog.show();frog.withdraw(50);frog.show();}PE10-4#ifndef SALES__#define SALES__namespace SALES{const int QUARTERS = 4;class Sales{private:double sales[QUARTERS];double average;double max;double min;public:// default constructorSales();// copies the lesser of 4 or n items from the array ar// to the sales member and computes and stores the// average, maximum, and minimum values of the entered items; // remaining elements of sales, if any, set to 0Sales(const double ar[], int n);// gathers sales for 4 quarters interactively, stores them// in the sales member of object and computes and stores the // average, maximum, and minumum valuesvoid setSales();// display all information in objectvoid showSales();};}#endif#include <iostream>#include "pe10-4.h"int main(){using SALES::Sales;double vals[3] = {2000, 3000, 5000};Sales forFiji(vals, 3);forFiji.showSales();Sales red;red.showSales();red.setSales();red.showSales();return 0;}#include <iostream>#include "pe10-4.h"namespace SALES{using std::cin;using std::cout;using std::endl;Sales::Sales(const double ar[], int n){if (n < 0)n = 0;int limit = n < QUARTERS ? n : QUARTERS; double total = 0;min = 0;max = 0;average = 0;if (limit > 0)min = max = ar[0];int i;for (i = 0; i < limit; i++){sales[i] = ar[i];total += ar[i];if (ar[i] > max)max = ar[i];else if (ar[i] < min)min = ar[i];}for (i = limit; i < QUARTERS; i++)sales[i] = 0;if (limit > 0)average = total / limit;}Sales::Sales(){min = 0;max = 0;average = 0;for (int i = 0; i < QUARTERS; i++)sales[i] =0;}。
C++-primer-plus(第6版)中文版-编程练习答案(word版)
第二章:开始学习C++ n”;}<<endl; return 0;}double C2F(double t){return *t+32;}<<endl; return 0;}double convert(double t){return 63240*t;n"; return 0;}style(miles per gallon):"<<endl;cout<<Euro_style<<" L/100Km = "<<*Euro_style<<" mpg\n"; return 0;}Enter the automobile gasoline consumption figure inEuropean style(liters per 100kilometers): Converts to .style(miles per gallon):L/100Km = mpgPress any key to continuestyle(miles pergallon):"; doubleUS_style;cin>>US_style;cout<<"Converts to European style(miles per gallon):"<<endl; cout<<US_style<<" mpg = "<< *US_style<<"L/100Km\n"; return 0;}style(miles per gallon):19Converts to European style(miles per gallon): 19 mpg = 100KmPress any key to continue第四章复合类型n";return 0;}rand<<endl<<snack[i].weight<<endl<<snack[i].calory<<endl<<endl;}return 0;}rand="A";eight=;snack[0].calory=200;snack[1].brand="B";snack[1].weight=;snack[1].calory=400;snack[2].brand="C";snack[2].weight=;snack[2].calory=500;for(int i=0;i<3;i++){cout << " brand: " <<snack[i].brand << endl; cout<< " weight: " <<snack[i].weight << endl;cout << " calorie: " << snack[i].calory << endl<<endl;}delete []snack;return 0;}et(); car*ps=newcar[num];for(int i=0;i<num;++i){cout<<"Car #"<<i+1<<":\n";cout<<"Please enter themake: ";getline(cin,ps[i].name);cout<<"Please enter theyear made: ";(cin>>ps[i].year).get();}cout<<"Here is yourcollection:\n"; for(int i=0;i<num;++i)cout<<ps[i].year<<""<<ps[i].name<<endl; delete [] ps;return 0;}#include <iostream>#include<string> usingnamespace std;struct car{string maker;int year;};int main(){int number;cout << "How many cars do you wish to catalog "; cin >> number;car* a = new car[number];for (int i = 0; i < number; i++){cout << "Car #" << i+1 << ": " <<endl; cout << "Please enter themaker: "; ();getline(cin,a[i].maker);cout << "Please enter the yearmade: "; cin >> a[i].year;}cout << "Here is your collection: "<< endl; for (int i = 0; i < number;i++)cout << a[i].year << " " << a[i].maker <<endl; delete [] a;return 0;}#include<iostream> usingnamespace std;struct car{charmaker[20];int year;};int main(){int number;cout << "How many cars do you wish to catalog "; cin >> number;car* a = new car[number];for (int i = 0; i < number; i++){cout << "Car #" << i+1 << ": " <<endl; cout << "Please enter themaker: "; ();(a[i].maker, 20);cout << "Please enter the yearmade: "; cin >> a[i].year;}cout << "Here is your collection: "<< endl; for (int i = 0; i < number;i++)cout << a[i].year << " " << a[i].maker <<endl; delete [] a;return 0;}n"; return 0;}n";return 0;}和的区别是:word != "done",因为当 word = done 一样时,返回值为1,不一样时才是返回0.;for(intk=0;k<=i;++k)cout<<"*";cout<<endl;}return 0;}第六章分支语句和逻辑运算符n"; break;case 'p':cout<<"A maple is apianist.\n"; break;case 't':cout<<"A maple is atree.\n"; break;case 'g':cout<<"A maple is a game.\n";}return0;}#include<iostream> usingnamespace std;void show();int main(){show();char choice;while (cin >> choice){switch(choice){case 'c' : cout << "It's acarnivore.\n"; break;case 'p' : cout << "It's apianist.\n"; break;case 't' : cout << "A maple is atree.\n"; break;case 'g' : cout << "It's agame.\n"; break;default : cout << "Please enter a c, p, t, org:";}}return 0;}void show(){cout << "Please enter one of the followingchoices: \n" "c) carnivore p)pianist\n""t) tree g) game\n";}display by name b. display by title\n"<<"c. display by bopname d. diplay bypreference\n"<<"q.quit\n";char ch;bop member[5]={{"Wimp Macho","EnglishTeacher","DEMON",0},{"Raki Rhodes","JuniorProgrammer","BOOM",1},{"Celia Laiter","Super Star","MIPS",2},{"Hoppy Hipman","AnalystTrainee","WATEE",1},{"Pat Hand","Police","LOOPY",2}};cout<<"Enter your choice:";while(cin>>ch&&ch!='q'){switch(ch){case 'a':for(int i=0;i<5;i++)cout<<member[i].fullname<<endl; break;case 'b':for(int i=0;i<5;i++)cout<<member[i].title<<endl; break;case 'c':for(int i=0;i<5;i++)cout<<member[i].bopname<<endl; break;case 'd':for(int i=0;i<5;i++){if(member[i].preference==0)cout<<member[i].fullname<<endl; elseif(member[i].preference==1)cout<<member[i].title<<endl; elseif(member[i].preference==2)cout<<member[i].bopname<<endl;}break;}cout<<"Next choice: ";}cout<<"Bye!\n";return 0;}#include <iostream> using namespace std; const int strsize = 30; struct bop{charfullname[strsize];chartitle[strsize];charbopname[strsize];int preference;};void show();int main(){bop A[5] ={{"Wimp Macho", "Teacher", "HAHA", 0},{"Raki Rhodes", "Junior Programmer", "LIAR",1},{"Celia", "engineer", "MIPS", 2},{"Hoppy Hipman", "Analyst Trainee", "WAHU", 1},{"Pat Hand", "Student", "LOOPY", 2}};cout << "Benevolent Order of ProgrammersReport\n"; show();cout << "Enter yourchoice: "; char choice;cin >> choice;while (choice != 'q'){switch(choice){case 'a' : cout << A[0].fullname << endl << A[1].fullname << endl<< A[2].fullname << endl << A[3].fullname<< endl<< A[4].fullname <<endl; break;case 'b' : cout << A[0].title << endl << A[1].title<< endl<< A[2].title << endl << A[3].title<< endl<< A[4].title <<endl; break;case 'c' : cout << A[0].bopname << endl << A[1].bopname << endl<< A[2].bopname << endl << A[3].bopname<< endl<< A[4].bopname <<endl; break;case 'd' : cout << A[0].fullname << endl << A[1].title << endl<< A[2].bopname << endl << A[3].title <<endl<< A[4].bopname <<endl; break;default : cout << "That's not the properchoice.\n";}cout << "Next choice:"; cin >> choice;}cout <<"Bye!\n";return 0;}void show(){cout << "a. display by name b. display by title\n"<< "c. display by bopname d. display bypreference\n"<< "q. quit\n";}ame); cout<<"请输入第"<<i+1<<"位捐款人捐款的数目:";cin>>ps[i].money;();}cout<<"GrandPatrons:\n"; for(inti=0;i<num;++i)if(ps[i].money>10000){cout<<ps[i].name<<"\n"<<ps[i].money<<endl;++temp;}if(temp==0)cout<<"none\n";cout<<"Patrons:\n"; for(inti=0;i<num;++i)if(ps[i].money<=10000){cout<<ps[i].name<<"\n"<<ps[i].money<<endl;++temp;}if(temp==0)cout<<"none\n";delete []ps; return0;}#include <iostream>#include<string> usingnamespace std;struct charity{string name;double money;};int main(){int number;int count =0;cout << "Please enter the number ofdonator: "; cin >> number;charity *pt = newcharity[number]; for (int i= 0; i < number; i++){cout << "Please enter yourname: "; ();getline(cin, pt[i].name);cout << "Please enter the money you are going todonate: "; cin >> pt[i].money;if(pt[i].money >10000) count++;}if(count == 0)cout << "None(money >10000)"; else{cout << "Grand Patron\n";for(int i = 0; i < number;i++){if(pt[i].money > 10000)cout << pt[i].name << " " << pt[i].money<< endl;}}cout << endl;if(10 - count == 0)cout << "None(money <10000)"; else{cout << "Patron\n";for(int i = 0; i < number; i++){if(pt[i].money < 10000)cout << pt[i].name << " " << pt[i].money<< endl;}}return 0;}n"; exit(EXIT_FAILURE);}inFile>>ch;while()){++sum;inFile>>ch;}if())cout<<"End of filereached.\n"; else if())cout<<"Input terminated by datamismatch.\n"; elsecout<<"Input terminated for unkonwn reason.\n";cout<<"总共有"<<sum<<"个字符在这个文件中。
C++-primer-plus(第6版)中文版-编程练习答案(word版)
第二章:开始学习C++ n”;}<<endl; return 0;}double C2F(double t){return *t+32;}<<endl; return 0;}double convert(double t){return 63240*t;n"; return 0;}style(miles per gallon):"<<endl; cout<<Euro_style<<"L/100Km = "<<*Euro_style<<" mpg\n"; return 0;}Enter the automobile gasoline consumption figure inEuropean style(liters per 100 kilometers):Converts to . style(miles per gallon):L/100Km = mpgPress any key to continuestyle(miles per gallon):";double US_style;cin>>US_style;cout<<"Converts to European style(miles per gallon):"<<endl;cout<<US_style<<" mpg = "<< *US_style<<"L/100Km\n"; return 0;}style(miles per gallon):19Converts to European style(miles pergallon): 19 mpg = 100KmPress any key to continue第四章复合类型n";return 0;}rand<<endl<<snack[i].weight<<endl<<snack[i].calory<<endl<<endl;}return 0;}rand="A";eight=;snack[0].calory=200;snack[1].brand="B";snack[1].weight=;snack[1].calory=400;snack[2].brand="C";snack[2].weight=;snack[2].calory=500;for(int i=0;i<3;i++){cout << " brand: " << snack[i].brand<< endl; cout << " weight: " <<snack[i].weight << endl;cout << " calorie: " << snack[i].calory << endl<<endl;}delete [] snack;return 0;}et(); car* ps=newcar[num];for(int i=0;i<num;++i){cout<<"Car #"<<i+1<<":\n";cout<<"Please enter the make: ";getline(cin,ps[i].name); c out<<"Pleaseenter the year made: ";(cin>>ps[i].year).get();}cout<<"Here is your collection:\n";for(int i=0;i<num;++i)cout<<ps[i].year<<" "<<ps[i].name<<endl;delete [] ps;return 0;}#include <iostream>#include <string> usingnamespace std; structcar{string maker; intyear;};int main(){int number;cout << "How many cars do you wish to catalog "; cin >>number;car* a = new car[number];for (int i = 0; i < number; i++){cout << "Car #" << i+1 << ": " << endl; cout <<"Please enter the maker: "; ();getline(cin,a[i].maker);cout << "Please enter the year made: "; cin >>a[i].year;}cout << "Here is your collection: " << endl; for (inti = 0; i < number; i++)cout << a[i].year << " " << a[i].maker <<endl; delete [] a;return 0;}#include <iostream> usingnamespace std; struct car{char maker[20];int year;};int main(){int number;cout << "How many cars do you wish to catalog "; cin >>number;car* a = new car[number];for (int i = 0; i < number; i++){cout << "Car #" << i+1 << ": " << endl; cout <<"Please enter the maker: "; ();(a[i].maker, 20);cout << "Please enter the year made: "; cin >>a[i].year;}cout << "Here is your collection: " << endl; for (int i = 0; i < number; i++)cout << a[i].year << " " << a[i].maker <<endl; delete [] a;return 0;}n"; return 0;}n";return 0;}和的区别是:word != "done",因为当 word = done 一样时,返回值为1,不一样时才是返回0.;for(int k=0;k<=i;++k)cout<<"*";cout<<endl;}return 0;}第六章分支语句和逻辑运算符n"; break;case 'p':cout<<"A maple is a pianist.\n";break;case 't':cout<<"A maple is a tree.\n";break;case 'g':cout<<"A maple is a game.\n";}return 0;}#include <iostream> usingnamespace std; void show();int main(){show();char choice;while (cin >> choice){switch(choice){case 'c' : cout << "It's a carnivore.\n"; break;case 'p' : cout << "It's a pianist.\n"; break;case 't' : cout << "A maple is a tree.\n"; break;case 'g' : cout << "It's a game.\n"; break;default : cout << "Please enter a c, p, t, or g:";}}return 0;}void show(){cout << "Please enter one of the following choices: \n" "c) carnivore p) pianist\n""t) tree g) game\n";}display by name b. display by title\n"<<"c. display by bopname d. diplay by preference\n"<<"q. quit\n";char ch;bop member[5]={{"Wimp Macho","English Teacher","DEMON",0},{"Raki Rhodes","Junior Programmer","BOOM",1},{"Celia Laiter","Super Star","MIPS",2},{"Hoppy Hipman","Analyst Trainee","WATEE",1},{"Pat Hand","Police","LOOPY",2}};cout<<"Enter your choice:";while(cin>>ch&&ch!='q'){switch(ch){case 'a':for(int i=0;i<5;i++)cout<<member[i].fullname<<endl;break;case 'b':for(int i=0;i<5;i++)cout<<member[i].title<<endl; break;case 'c':for(int i=0;i<5;i++)cout<<member[i].bopname<<endl; break;case 'd':for(int i=0;i<5;i++){if(member[i].preference==0)cout<<member[i].fullname<<endl;else if(member[i].preference==1)cout<<member[i].title<<endl; e lseif(member[i].preference==2)cout<<member[i].bopname<<endl;}break;}cout<<"Next choice: ";}cout<<"Bye!\n";return 0;}#include <iostream> usingnamespace std; const intstrsize = 30; struct bop{char fullname[strsize];char title[strsize]; charbopname[strsize]; intpreference;};void show(); intmain(){bop A[5] ={{"Wimp Macho", "Teacher", "HAHA", 0},{"Raki Rhodes", "Junior Programmer", "LIAR", 1},{"Celia", "engineer", "MIPS", 2},{"Hoppy Hipman", "Analyst Trainee", "WAHU", 1},{"Pat Hand", "Student", "LOOPY", 2}};cout << "Benevolent Order of Programmers Report\n"; show();cout << "Enter your choice: "; charchoice;cin >> choice;while (choice != 'q'){switch(choice){case 'a' : cout << A[0].fullname << endl << A[1].fullname << endl<< A[2].fullname << endl << A[3].fullname << endl<< A[4].fullname << endl; break;case 'b' : cout << A[0].title << endl << A[1].title << endl<< A[2].title << endl << A[3].title << endl<< A[4].title << endl;break;case 'c' : cout << A[0].bopname << endl << A[1].bopname << endl<< A[2].bopname << endl << A[3].bopname << endl<< A[4].bopname << endl; break;case 'd' : cout << A[0].fullname << endl << A[1].title << endl<< A[2].bopname << endl << A[3].title << endl<< A[4].bopname << endl;break;default : cout << "That's not the proper choice.\n";}cout << "Next choice: ";cin >> choice;}cout << "Bye!\n";return 0;}void show(){cout << "a. display by name b. display by title\n"<< "c. display by bopname d. display by preference\n"<< "q. quit\n";}ame); c out<<"请输入第"<<i+1<<"位捐款人捐款的数目:"; cin>>ps[i].money;();}cout<<"Grand Patrons:\n";for(int i=0;i<num;++i)if(ps[i].money>10000){cout<<ps[i].name<<"\n"<<ps[i].money<<endl;++temp;}if(temp==0)cout<<"none\n";cout<<"Patrons:\n";for(int i=0;i<num;++i)if(ps[i].money<=10000){cout<<ps[i].name<<"\n"<<ps[i].money<<endl;++temp;}if(temp==0)cout<<"none\n";delete [] ps;return 0;}#include <iostream>#include <string> usingnamespace std; structcharity{string name;double money;};int main(){int number; intcount = 0;cout << "Please enter the number of donator: "; cin >>number;charity *pt = new charity[number]; for(int i = 0; i < number; i++){cout << "Please enter your name: "; ();getline(cin, pt[i].name);cout << "Please enter the money you are going to donate: "; cin >>pt[i].money;if(pt[i].money > 10000)count++;}if(count == 0)cout << "None(money > 10000)"; else{cout << "Grand Patron\n"; for(int i =0; i < number; i++){if(pt[i].money > 10000)cout << pt[i].name << " " << pt[i].money << endl;}}cout << endl;if(10 - count == 0)cout << "None(money < 10000)"; else {cout << "Patron\n";for(int i = 0; i < number; i++){if(pt[i].money < 10000)cout << pt[i].name << " " << pt[i].money << endl;}}return 0;}n"; exit(EXIT_FAILURE);}inFile>>ch; while()){++sum;inFile>>ch;}if())cout<<"End of file reached.\n";else if())cout<<"Input terminated by data mismatch.\n";elsecout<<"Input terminated for unkonwn reason.\n";cout<<"总共有"<<sum<<"个字符在这个文件中。
(完整word版)c++primerplus(第六版)课后编程练习答案
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;
#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<<"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:";
cout<<light_years<<" light_years = "<<astro_units<<" astronomical units."<<endl;
C++_Primer_Plus(第六版)编程习题解答
Chapter 2// pe2-2.cpp#include <iostream>int main(void){using namespace std;cout << "Enter a distance in furlongs: "; double furlongs;cin >> furlongs;double feet;feet = 220 * furlongs;cout << furlongs << " furlongs = "<< feet << " feet\n";return 0;}// pe2-3.cpp#include <iostream>using namespace std;void mice();void run();int main(){mice();mice();run();run();return 0;}void mice(){cout << "Three blind mice\n";}void run(){cout << "See how they run\n";}// pe2-4.cpp#include <iostream>double C_to_F(double);int main(){using namespace std;cout << "Enter a temperature in Celsius: ";double C;cin >> C;double F;F = C_to_F(C);cout << C << " degrees Celsius = "<< F << " degrees Fahrenheit\n";return 0;}double C_to_F(double temp){return 1.8 * temp + 32.0;}Chapter 3// pe3-1.cpp#include <iostream>const int Inch_Per_Foot = 12;int main(void){using namespace std;// Note: some environments don't support the backspace character cout << "Please enter your height in inches: ___/b/b/b ";int ht_inch;cin >> ht_inch;int ht_feet = ht_inch / Inch_Per_Foot;int rm_inch = ht_inch % Inch_Per_Foot;cout << "Your height is " << ht_feet << " feet, ";cout << rm_inch << " inch(es).\n";return 0;}// pe3-3.cpp#include <iostream>const double MINS_PER_DEG = 60.0;const double SECS_PER_MIN = 60.0;int main(){using namespace std;int degrees;int minutes;int seconds;double latitude;cout << "Enter a latitude in degrees, minutes, and seconds:\n";cout << "First, enter the degrees: ";cin >> degrees;cout << "Next, enter the minutes of arc: ";cin >> minutes;cout << "Finally, enter the seconds of arc: ";cin >> seconds;latitude = degrees + (minutes + seconds / SECS_PER_MIN)/MINS_PER_DEG; cout << degrees << " degrees, " << minutes << " minutes, "<< seconds << " seconds = " << latitude << " degrees\n";return 0;}// pe3-5.cpp#include <iostream>int main(void){using namespace std;cout << "How many miles have you driven your car? ";float miles;cin >> miles;cout << "How many gallons of gasoline did the car use? ";float gallons;cin >> gallons;cout << "Your car got " << miles / gallons;cout << " miles per gallon.\n";return 0;}// pe3-6.cpp#include <iostream>const double KM100_TO_MILES = 62.14;const double LITERS_PER_GALLON = 3.875;int main ( void ){using namespace std;double euro_rating;double us_rating;cout << "Enter fuel consumption in liters per 100 km: ";cin >> euro_rating;// divide by LITER_PER_GALLON to get gallons per 100-km// divide by KM100_TO_MILES to get gallons per mile// invert result to get miles per gallonus_rating = (LITERS_PER_GALLON * KM100_TO_MILES) / euro_rating;cout << euro_rating << " liters per 100 km is ";cout << us_rating << " miles per gallon.\n";return 0;}Chapter 4// pe4-2.cpp -- storing strings in string objects#include <iostream>#include <string>int main(){using namespace std;string name;string dessert;cout << "Enter your name:\n";getline(cin, name); // reads through newlinecout << "Enter your favorite dessert:\n";getline(cin, dessert);cout << "I have some delicious " << dessert;cout << " for you, " << name << ".\n";return 0;}// pe4-3.cpp -- storing strings in char arrays#include <iostream>#include <cstring>const int SIZE = 20;int main(){using namespace std;char firstName[SIZE];char lastName[SIZE];char fullName[2*SIZE + 1];cout << "Enter your first name: ";cin >> firstName;cout << "Enter your last name: ";cin >> lastName;strncpy(fullName,lastName,SIZE);strcat(fullName, ", ");strncat(fullName, firstName, SIZE);fullName[SIZE - 1] = '\0';cout << "Here's the information in a single string: " << fullName << endl;return 0;}// pe4-5.cpp// a candybar structurestruct CandyBar {char brand[40];double weight;int calories;};#include <iostream>int main(){using namespace std; //introduces namespace stdCandyBar snack = { "Mocha Munch", 2.3, 350 };cout << "Brand name: " << snack.brand << endl;cout << "Weight: " << snack.weight << endl;cout << "Calories: " << snack.calories << endl;return 0;}// p#include <iostream>const int Slen = 70;struct pizza {char name[Slen];float diameter;float weight;};int main(void){using namespace std;pizza pie;cout << "What is the name of the pizza company? ";cin.getline(, Slen);cout << "What is the diameter of the pizza in inches? "; cin >> pie.diameter;cout << "How much does the pizza weigh in ounces? ";cin >> pie.weight;cout << "Company: " << << "\n";cout << "Diameter: " << pie.diameter << " inches\n";cout << "Weight: " << pie.weight << " ounces\n";return 0;}Chapter 5// pe5-2.cpp#include <iostream>int main(void){using namespace std;double sum = 0.0;double in;cout << "Enter a number (0 to terminate) : ";cin >> in;while (in != 0) {sum += in;cout << "Running total = " << sum << "\n";cout << "Enter next number (0 to terminate) : ";cin >> in;}cout << "Bye!\n";return 0;}// pe5-4.cpp// book sales#include <iostream>const int MONTHS = 12;const char * months[MONTHS] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};int main(){using namespace std; //introduces namespace stdint sales[MONTHS];int month;cout << "Enter the monthly sales for \"C++ for Fools\":\n";for (month = 0; month < MONTHS; month++){cout << "Sales for " << months[month] << ": ";cin >> sales[month];}double total = 0.0;for (month = 0; month < MONTHS; month++)total += sales[month];cout << "Total sales: " << total << endl;return 0;}// pe5-6.cpp#include <iostream>struct car { char name[20]; int year;};int main(void){using namespace std;int n;cout << "How many cars do you wish to catalog?: ";cin >> n;while(cin.get() != '\n') // get rid of rest of line;car * pc = new car [n];int i;for (i = 0; i < n; i++){cout << "Car #" << (i + 1) << ":\n";cout << "Please enter the make: ";cin.getline(pc[i].name,20);cout << "Please enter the year made: ";cin >> pc[i].year;while(cin.get() != '\n') // get rid of rest of line ;}cout << "Here is your collection:\n";for (i = 0; i < n; i++)cout << pc[i].year << " " << pc[i].name << "\n";delete [] pc;return 0;}// pe5-7.cpp -- count words using C-style string#include <iostream>#include <cstring> // prototype for strcmp()const int STR_LIM = 50;int main(){using namespace std;char word[STR_LIM];int count = 0;cout << "Enter words (to stop, type the word done):\n";while (cin >> word && strcmp("done", word))++count;cout << "You entered a total of " << count << " words.\n"; return 0;}// pe5-9.cpp//nested loops#include <iostream>int main(){using namespace std; //introduces namespace stdint rows;int row;int col;int periods;cout << "Enter number of rows: ";cin >> rows;for (row = 1; row <= rows; row++){periods = rows - row;for (col = 1; col <= periods; col++)cout << '.';// col already has correct value for next loopfor ( ; col <= rows; col++)cout << '*';cout << endl;}return 0;}Chapter 6// pe6-1.cpp#include <iostream>#include <cctype>int main( ){using namespace std; //introduces namespace stdchar ch;cin.get(ch);while(ch != '@'){if (!isdigit(ch)){if (isupper(ch))ch = tolower(ch);else if (islower(ch))ch = toupper(ch);cout << ch;}cin.get(ch);}return 0;}// pe6-3.cpp#include <iostream>int main(void){using namespace std;cout << "Please enter one of the following choices:\n";cout << "c) carnivore p) pianist\n"<< "t) tree g) game\n";char ch;cin >> ch;while (ch != 'c' && ch != 'p' && ch != 't' && ch != 'g'){cout << "Please enter a c, p, t, or g: ";cin >> ch;}switch (ch){case 'c' : cout << "A cat is a carnivore.\n";break;case 'p' : cout << "Radu Lupu is a pianist.\n";break;case 't' : cout << "A maple is a tree.\n";break;case 'g' : cout << "Golf is a game.\n";break;default : cout << "The program shouldn't get here!\n"; }return 0;}// pe6-5.cpp// Neutronia taxation#include <iostream>const double LEV1 = 5000;const double LEV2 = 15000;const double LEV3 = 35000;const double RATE1 = 0.10;const double RATE2 = 0.15;const double RATE3 = 0.20;int main( ){using namespace std;double income;double tax;cout << "Enter your annual income in tvarps: ";cin >> income;if (income <= LEV1)tax = 0;else if (income <= LEV2)tax = (income - LEV1) * RATE1;else if (income <= LEV3)tax = RATE1 * (LEV2 - LEV1) + RATE2 * (income - LEV2); elsetax = RATE1 * (LEV2 - LEV1) + RATE2 * (LEV3 - LEV2)+ RATE3 * (income - LEV3);。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf("starting now:\n"); one_three(); printf("done!\n"); return 0;
}
void one_three(void)
{
printf("one\n"); two();
printf("three\n");
}
void two(void)
{
printf("two\n");
}
/* or create two more variables, set them to 2 * toes and toes * toes */
PE
/* Programming Exercise 2-8 */
#include <> void one_three(void); void two(void); int main(void)
{ jolly(); jolly(); jolly(); deny(); return 0; }
void jolly(void)
{
printf("For he's a jolly good fellow!\n");
}
void deny(void)
{
printf("Which nobody can deny!\n");
Chapter
PE
/* Programming Exercise 2-1 */
#include <> int main(void)
{ printf("Gustav Mahler\n"); printf("Gustav\nMahler\n"); printf("Gustav "); printf("Mahler\n"); return 0;
}
PE
/* Programming Exercise 2-3 */
#include <> int main(void)
{ int ageyears; /* age in years */ int agedays; /* age in days */
/* large ages may require the long type */ ageyears = 101; agedays = 365 * ageyears;
printf("Enter the number of quarts of water: "); scanf("%f", &quarts);
molecules = quarts * mass_qt / mass_mol;
printf("%f quarts of water contain %e molecules.\n", quarts, molecules); return 0;
}
PE
/* Programming Exercise 3-6 */
#include <> int main(void)
{
float mass_mol = ; /* mass of water molecule in grams */ float mass_qt = 950; /* mass of quart of water in grams */ float quarts; float molecules;
}
Chapter
PE
/* Programming Exercise 4-1 */
#include <> int main(void)
{ char fname[40]; char lname[40];
printf("Enter your first name: "); scanf("%s", fname); printf("Enter your last name: "); scanf("%s", lname); printf("%s, %s\n", lname, fname); return 0;
}
PE
/* Programming Exercise 3-4 */
#include <> int main(void)
{ float num;
printf("Enter a floating-point value: "); scanf("%f", &num);
printf("fixed-point notation: %f\n", num); printf("exponential notation: %e\n", num); printf("p notation: %a\n", num); return 0;
printf("An age of %d years is %d days.\n", ageyears, agedays); return 0;
}
PE
/* Programming Exercise 2-4 */
#inห้องสมุดไป่ตู้lude <> void jolly(void); void deny(void); int main(void)
}
Chapter
PE
/* Programming Exercise 3-2 */
#include <> int main(void)
{
int ascii;
printf("Enter an ASCII code: "); scanf("%d", &ascii);
printf("%d is the ASCII code for %c.\n", ascii, ascii); return 0;
}
PE
/* Programming Exercise 2-6 */
#include <> int main(void)
{ int toes; toes = 10;
printf("toes = %d\n", toes);
printf("Twice toes = %d\n", 2 * toes); printf("toes squared = %d\n", toes * toes); return 0;
}
PE
/* Programming Exercise 4-4 */
#include <> int main(void)
{ float height; char name[40];
printf("Enter your height in inches: "); scanf("%f", &height); printf("Enter your name: "); scanf("%s", name);