c++primerplus中文版第六版源代码

合集下载

C++--primer-plus-(第6版)-中文版编程练习答案

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第六版中文版习题答案

C-Primer-Plus第六版中文版习题答案

C Primer Plus第六版中文版习题答案Github: /zhayujie/C-Primer-Plus第一章1.#include <stdio.h>int main(void) {double inch, cm;printf("Please input the inches: ");scanf("%lf", &inch);cm = inch * 2.54;printf("%g cm\n", cm);return 0;}第二章3.#include<stdio.h>int main(void){int days,years=21;days=years*365;printf("我的年龄是%d岁,%d天\n",years,days);return 0;}4.#include<stdio.h>void jolly(void);void deny(void);int main(void){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");}5.#include<stdio.h>void br(void);void ic(void);int main(void){br();printf(",");ic();printf("\n");ic();printf("\n");br();printf("\n");return 0;}void br(void){printf("Brazil,Russia");}void ic(void){printf("India,China");}6.#include<stdio.h>int main(void){int toes=10;int toes_2,toes2;toes_2=2*toes;toes2=toes*toes;printf("toes是%d,toes的两倍是%d,toes的平方是%d\n",toes,toes_2,toes2); return 0;}8.#include<stdio.h>void one_three(void);void two(void);int main(void){printf("starting now\n");one_three();}void one_three(void){printf("one\n");two();printf("three\n");printf("done!\n");}void two(void){printf("two\n");}第三章2.#include<stdio.h>int main(void){char ch;printf("please input a number:");scanf("%d",&ch);printf("%c\n",ch);return 0;}4.#include<stdio.h>int main(void){float a;printf("Enter a floating-point value: ");scanf("%f",&a);printf("fixed-point notation: %f\n",a);printf("exponential notation: %e\n",a);return 0;}5.#include<stdio.h>int main(void){int age;double seconds;printf("please input your age: ");scanf("%d",&age);seconds=age*3.156e7;printf("the corresponding seconds are: %e\n",seconds);return 0;}7.#include<stdio.h>int main(void){float inches,cms;printf("input your height(inch): ");scanf("%f",&inches);cms=inches*2.54;printf("your height(cm): %f\n",cms);return 0;}8.#include<stdio.h>int main(void){float pint,ounce,soupspoon,teaspoon,cup;printf("input the number of cups: ");scanf("%f",&cup);pint=cup/2;ounce=cup*8;soupspoon=ounce*2;teaspoon=soupspoon*3;printf("they are equivalent of:\n%f pint\n%f ounce\n%f soupspoons\n%f teaspoons\n",pint,ounce,soupspoon,teaspoon);return 0;}第四章1.#include<stdio.h>int main(void){char firstname[40],lastname[40];printf("Input your firstname: ");scanf("%s",firstname);printf("Input your lastname: ");scanf("%s",lastname);printf("Your name is %s,%s\n",firstname,lastname);return 0;}2.#include<stdio.h>#include<string.h>int main(void){char name[40];int width;printf("Input your name: ");scanf("%s",name);width=strlen(name)+3;printf("%*s\n",width,name); //输入的名和姓中间不能分隔return 0;}4.#include<stdio.h>int main(void){float height;char name[40];printf("Input your height(cm) and name: ");scanf("%f%s",&height,name);height=height/100;printf("%s, you are %.3fm tall\n",name,height);return 0;}5.#include<stdio.h>int main(void){float speed,size,time;printf("Input the download speed(Mb/s) and the file size(MB):\n"); scanf("%f%f",&speed,&size);time=size/speed*8.0;printf("At %.2f megabits per second, a file of %.2f megabytes\n",speed,size);printf("downloads in %.2f seconds.\n",time);return 0;}6.#include<stdio.h>#include<string.h>int main(void){char firstname[40],lastname[40];printf("Input your firstname: ");scanf("%s",firstname);printf("Input your lastname: ");scanf("%s",lastname);printf("%s %s\n",firstname,lastname);printf("%*d %*d\n",strlen(firstname),strlen(firstname),strlen(lastname),strlen(lastname)); printf("%s %s\n",firstname,lastname);printf("%*d %*d\n",-strlen(firstname),strlen(firstname),-strlen(lastname),strlen(lastname) );return 0;}7.#include<stdio.h>#include<float.h>int main(void){double a=1.0/3.0;float b=1.0/3.0;printf("%.6f %.6f\n",a,b); //左侧double型右侧float型printf("%.12f, %.12f\n",a,b);printf("%.16f, %.16f\n",a,b);printf("DBL_DIG: %d\n",DBL_DIG);printf("FLT_DIG: %d\n",FLT_DIG);return 0;}8.#include<stdio.h>#define GALLON 3.758 //1 gallon=3.785 liters#define MILE 1.609 //1 mile=1.609 kilometersint main(void){float gallon,mile;printf("Input miles and gallons: ");scanf("%f%f",&mile,&gallon);printf("Miles per gallon: %.1f\n",mile/gallon);printf("Litre per 100 kilometers: %.1f\n",gallon*GALLON/(mile*MILE)*100);return 0;}第五章1.#include<stdio.h>#define H_P_M 60 //1h=60minint main(void){int hour,min,left;printf("Enter the number of minutes: ");scanf("%d",&min);while(min>0){hour=min/H_P_M;left=min%H_P_M;printf("%d minutes is %d hours and %d minutes.\n",min,hour,left); printf("Enter your next value: ");scanf("%d",&min);}printf("Good bye!\n");return 0;}2.#include<stdio.h>int main(void){int num,count;printf("Input a integer: ");scanf("%d",&num);count=0;while(count++<11){printf("%d ",num);num++;}printf("\n");return 0;}3.#include<stdio.h>#define DAYS_PER_WEEK 7 //一周7天int main(void){int day,week,left;printf("Input the number of days: ");scanf("%d",&day);while(day>0){week=day/DAYS_PER_WEEK;left=day%DAYS_PER_WEEK;printf("%d days are %d weeks, %d days.\n",day,week,left); printf("Next input: ");scanf("%d",&day);}return 0;}4.#include<stdio.h>#define CM_PER_FEET 30.48 //1feet=30.48cm#define CM_PER_INCH 2.54 //1inch=2.54cmint main(void){int feet;float cm,inch;printf("Enter a height in centimeters: ");scanf("%f",&cm);while(cm>0){feet=(int)(cm/CM_PER_FEET);inch=(cm-feet*CM_PER_FEET)/CM_PER_INCH;printf("%.1f cm = %d feet, %.1f inches\n",cm,feet,inch); printf("Enter a height in centimeters (<=0 to quit): "); scanf("%f",&cm);}printf("bye\n");return 0;}5.#include<stdio.h>int main(void){int count,sum,days;printf("Input the number of days: ");scanf("%d",&days);count=sum=0;while(count++<days)sum=sum+count;printf("The money you earned: %d\n",sum);return 0;}6.#include<stdio.h>int main(void){int count,sum,days;printf("Input the number of days: ");scanf("%d",&days);count=sum=0;while(count++<days)sum=sum+count*count;printf("The money you earned: %d\n",sum);return 0;}7.#include<stdio.h>void cube(double n);int main(void){double num;printf("Input a number: ");scanf("%lf",&num);cube(num);}void cube(double n){printf("The cube of %f is %f\n",n,n*n*n);}8.#include<stdio.h>int main(void){int num1,num2;printf("This program computes moduli.\n");printf("Enter an integer to serve as the second operand: ");scanf("%d",&num1);printf("Now enter the first operand: ");scanf("%d",&num2);while(num2>0){printf("%d %% %d is %d\n",num2,num1,num2%num1);printf("Enter next number for first operand (<= 0 to quit): "); scanf("%d",&num2);}printf("Done\n");}9.#include<stdio.h>void Temperatures(double fah);int main(void){double fah,cel,kel;//华氏温度,摄氏温度,开氏温度printf("Input the Fahrenheit temperature: ");while(scanf("%lf",&fah)==1){Temperatures(fah);printf("Next input: ");}printf("Done.\n");}void Temperatures(double fah){const double a=5.0,b=9.0,c=32.0,d=276.13; printf("%.2f ℉ is %.2f ℃, %.2f K.\n",fah,a/b*(fah-c),a/b*(fah-c)+d);}第六章1.#include<stdio.h>#define SIZE 26int main(void){char ch[SIZE];int index;for(index=0;index<SIZE;index++){ch[index]='a'+index;printf("%c ",ch[index]);}printf("\n");return 0;}2.#include<stdio.h>int main(void){int i,j;for(i=1;i<=5;i++){for(j=1;j<=i;j++)printf("$");printf("\n");}return 0;}3.#include<stdio.h>int main(void){int i,j;for(i=1;i<=6;i++){for(j=0;j<i;j++)printf("%c",'F'-j); printf("\n");}return 0;}4.#include<stdio.h>#define ROWS 6int main(void){char ch;int i,j;for(ch='A',i=0;i<ROWS;i++) {for(j=0;j<=i;j++)printf("%c",ch++); printf("\n");}return 0;}5.#include<stdio.h>#define ROWS 5int main(void){char ch='A';int i,j;for(i=1;i<=ROWS;i++){for(j=1;j<=ROWS-i;j++)printf(" ");for(j=0;j<i;j++)printf("%c",ch+j);for(j=i-2;j>=0;j--)printf("%c",ch+j);printf("\n");}return 0;}6.#include<stdio.h>int main(void){int max,min,num;printf("Input the min and max: ");scanf("%d%d",&min,&max);printf("%10s%10s%10s\n","number","square","cube");for(num=min;num<=max;num++)printf("%10d%10d%10d\n",num,num*num,num*num*num); return 0;}7.//与题目不同打印的是句子#include<stdio.h>#include<string.h>#define SIZE 40int main(void){int i,index=-1;char ch[SIZE];printf("Input a word: ");do{ index++;scanf("%c",&ch[index]);}while(ch[index]!='\n');for(i=index+1;i<=40;i++)ch[i]='\0';for(index=strlen(ch);index>=0;index--)printf("%c",ch[index]);printf("\n");return 0;}8.#include<stdio.h>int main(void){double n1,n2;printf("Input two numbers: ");while(2==scanf("%lf%lf",&n1,&n2)){printf("%f\n",(n1-n2)/n1*n2);printf("Input your next pair of numbers: ");}printf("Bye!\n");return 0;}9.#include<stdio.h>double calculate(double n1, double n2);int main(void){double num1, num2;printf("Input two numbers: ");while (2 == scanf("%lf%lf", &num1, &num2)) //输入两个浮点数 {printf("%f\n", calculate(num1, num2)); //函数调用printf("Input your next pair of numbers: ");}printf("Bye!\n");return 0;}double calculate(double n1, double n2){return ((n1 - n2) / (n1 * n2)); //返回运算结果}10.#include <stdio.h>int main(void){int lower, upper;int num, sum;printf("Enter lower and upper integer limits: ");scanf("%d%d", &lower, &upper);while (lower < upper){for (sum=0, num=lower; num <= upper; num++)sum = sum + num * num; //计算平方和printf("The sums of the squares from %d to %d is %d\n", lower * lower, upper * upper, sum); //输出结果printf("Enter next set of limits: ");scanf("%d%d", &lower, &upper); //下一次输入}printf("Done\n");return 0;}11.#include <stdio.h>#define SIZE 8int main(void){int num[SIZE];int index;printf("Enter 8 integers: ");for (index=0; index<SIZE; index++) //输入8个整数scanf("%d", &num[index]);for (index=SIZE-1; index >= 0; index--) //倒序输出printf("%d ", num[index]);printf("\n");return 0;}12.#include <stdio.h>int main(void){double sum1=0, sum2=0;int count, items, sign;printf("Enter the items: ");scanf("%d", &items); //输入序列的项数for (count=1, sign=1; count <= items; count++, sign *= -1){sum1 += 1.0 / count;sum2 += 1.0 * sign / count;} //分别计算两序列的和 printf("1.0 + 1.0/2.0 + 1.0/3.0 + 1.0/4.0 + ... = %f\n", sum1); printf("1.0 - 1.0/2.0 + 1.0/3.0 - 1.0/4.0 + ... = %f\n", sum2);return 0;}13.#include <stdio.h>#define SIZE 8int main(void){int index, count, num[SIZE];for (index = 0, count = 1; index < SIZE; index++){count *= 2;num[index] = count;} //for循环将数组元素设为2的前8次幂 index=0; //初始化index的值doprintf("%d ", num[index++]);while (index < SIZE); //do while循环显示数组元素的值printf("\n");return 0;}14.#include <stdio.h>#define SIZE 8int main(){double num1[SIZE], num2[SIZE];int index1, index2, index;printf("Enter 8 numbers to the first array:\n");for (index1 = 0; index1 < SIZE; index1++)scanf("%lf", &num1[index1]); //向第一个数组输入8个数 num2[0] = num1[0];for (index1 = 1, index2 = 1; index1 < SIZE; index1++, index2++) num2[index2] = num2[index2-1] + num1[index1];//为第二个数组赋值(是第一个数组对应的元素之和)printf("The first array: ");for (index=0; index < SIZE; index++) {printf("%6.2f", num1[index]);} //输出第一个数组的内容 printf("\nThe second array: ");for (index=0; index < SIZE; index++) {printf("%6.2f", num2[index]); //输出第二个数组的内容 }printf("\n");return 0;}15.#include <stdio.h>#include <string.h>#define SIZE 255int main(void){int index;char ch[SIZE];printf("Enter a line: ");for(index = 0, scanf("%c", &ch[0]); ch[index] != '\n';){index++;scanf("%c", &ch[index]);} //输入内容到字符数组中,回车时结束for(index += 1; index < SIZE; index++)ch[index] = '\0'; //将数组剩余空间补充为'\0'for(index = strlen(ch); index >=0; index--)printf("%c", ch[index]); //倒序输出内容printf("\n");return 0;}16.#include <stdio.h>#define RATE_DAPHNE 0.1#define RATE_DEIRDRE 0.05 //两人的利率#define MONEY 100int main(void){int year;double daphne = MONEY, deirdre = MONEY; //两人的初始投资额相同for (year = 1; daphne >= deirdre; year++){daphne += MONEY * RATE_DAPHNE;deirdre += deirdre * RATE_DEIRDRE;}//计算Deirdre投资额超过Daphne需要的年数和当时的金额printf("After %d year, Deirdre's investment will be more than Daphne's,\n""Daphne's investment will be $%lf,\nand Deirdre's investment will be $%lf.\n",year, daphne, deirdre); //输出结果return 0;}17.#include <stdio.h>#define INITIAL_MONEY 100 //账户初始金额为100万元#define ANNUAL_RATE 0.08 //年利率为8%int main(void){int year;double money;for(year = 1, money=INITIAL_MONEY; money>0; year++)money += money * ANNUAL_RATE - 10; //计算每年年终的账户余额printf("After %d years, Chuckie will draw all money from his account.\n", year);return 0;}18.#include <stdio.h>#define INITIAL_NUMBER 5 //初始朋友数为5人#define DUNBAR_NUMBER 150 //邓巴数int main(void){int week;int number = INITIAL_NUMBER;for (week = 1; number <= DUNBAR_NUMBER; week++){number = (number - week) * 2; //计算每周的朋友数量printf("After %d week, the number of Rabnud's friends is %d\n", week, number);}return 0;}第七章1.#include <stdio.h>int main(void){char ch;int n_space = 0; //空格数int n_newline = 0; //换行数int n_others = 0; //其他字符数printf("Enter some text; Enter # to quit.\n"); while ((ch = getchar()) != '#'){if (ch == ' ')n_space++;else if (ch == '\n')n_newline++;elsen_others++;}printf("Spaces: %d, newlines: %d, others: %d\n", n_space, n_newline, n_others);return 0;}2.#include <stdio.h>#define CHARS_PER_LINE 8 //每行字符数int main(void){char ch;int n_chars = 1; //字符数printf("Enter some characters(# to quit):\n"); while ((ch = getchar()) != '#'){printf("%3c(%3d) ", ch, ch);if (n_chars++ % CHARS_PER_LINE == 0)printf("\n");}printf("\n");return 0;}3.#include <stdio.h>int main(void){int num;int n_even = 0, n_odd = 0; //偶数和奇数个数int sum_even = 0, sum_odd = 0; //偶数和奇数和printf("Enter some integers(0 to quit):\n");scanf("%d", &num);while (num != 0){if (num % 2 == 0){n_even++;sum_even += num;} //计算偶数个数和偶数和else{n_odd++;sum_odd +=num;} //计算奇数个数和奇数和scanf("%d",&num);}printf("The number of even numbers is %d, ""and the everage of even numbers is %.2f\n",n_even, (n_even == 0) ? 0 : (float)sum_even / n_even); printf("The number of odd numbers is %d, ""and the everrage of odd numers is %.2f\n",n_odd, (n_odd == 0) ? 0 : (float)sum_odd / n_odd);return 0;}4.#include <stdio.h>int main(void){char ch;int n_repl = 0; //替换次数printf("Enter some texts(# to quit):\n");while ((ch = getchar()) != '#') {if (ch == '.'){ch = '!';n_repl++;} //替换句号else if (ch == '!'){printf("!");n_repl++;} //替换感叹号printf("%c", ch);}printf("\n%d substitutions were made.\n", n_repl);return 0;}5.#include <stdio.h>int main(void){char ch;int n_repl = 0; //替换次数printf("Enter some texts(# to quit):\n");while ((ch = getchar()) != '#') {switch (ch){case '.': ch = '!';n_repl++;break;case '!': printf("!");n_repl++;break;default: break;} //利用switch语句进行替换 printf("%c",ch);}printf("\n%d substitutions were made.\n", n_repl);return 0;}6.#include <stdio.h>int main(void){char ch;char last_ch = 0; //前一个字符int count=0;printf("Enter some texts(# to quit):\n");while ((ch = getchar()) != '#'){if ((ch == 'i') && (last_ch == 'e'))count++;last_ch = ch; //出现ei时,计数+1}printf("\"ei\" appeared %d times.\n", count);return 0;}7.#include <stdio.h>#define BASE 1000 //基本工资 100美元/h#define TIME 40 //超过40h为加班#define MUL 1.5 //加班时间算作平时的1.5倍#define RATE1 0.15 //前300美元的税率#define RATE2 0.2 //300-450美元的税率#define RATE3 0.25 //大于450美元的税率#define BREAK1 300 //税率的第一个分界点#define BREAK2 450 //税率的第二个分界点int main(void){double hour, tax, gross;printf("Input your work hours in a week: ");scanf("%lf", &hour);if (hour <= TIME)gross = hour * BASE;elsegross = TIME * BASE + (hour - TIME) * MUL * BASE; //计算总收入if (gross <= BREAK1)tax = gross * RATE1;else if (gross <= BREAK2)tax = BREAK1 * RATE1 + (gross - BREAK1) * RATE2;elsetax = BREAK1 * RATE1 + (BREAK2 - BREAK1) * RATE2+ (gross - BREAK2) * RATE3;//计算税金printf("Your gross income is $%.2lf\nYour tax is $%.2lf\n""Your net income is $%.2lf\n",gross, tax, (gross - tax));return 0;8.#include <stdio.h>#define BASE1 8.75#define BASE2 9.33#define BASE3 10.00#define BASE4 11.20//四种等级的基本工资#define TIME 40 //超过40h为加班#define MUL 1.5 //加班时间算作平时的1.5倍#define RATE1 0.15 //前300美元的税率#define RATE2 0.2 //300-450美元的税率#define RATE3 0.25 //大于450美元的税率#define BREAK1 300 //税率的第一个分界点#define BREAK2 450 //税率的第二个分界点int main(void){double base, hour, tax, gross;int count, num;const int LENGTH = 65; //*的长度printpart: for (count = 0; count < LENGTH; count++)printf("*");printf("\nEnter the number corresponding to the desired pay rate or action:\n");printf("%-36s%s","1) $8.75/hr", "2) $9.33/hr\n");printf("%-36s%s","3) $10.00/hr", "4) $11.20/hr\n");printf("%s\n", "5) quit");for (count = 0; count < LENGTH; count++)printf("*");printf("\n");//打印表格while (scanf("%d", &num) == 1) {switch (num){case 1: base = BASE1;break;case 2: base = BASE2;break;case 3: base = BASE3;break;case 4: base = BASE4;break;case 5: printf("quit.\n");return 0;default: printf("Please input the right option.\n");goto printpart;} //选择基本工资等级printf("Input your work hours in a week: ");scanf("%lf", &hour);if (hour <= TIME)gross = hour * base;elsegross = TIME * base + (hour - TIME) * MUL * base;//计算总收入if (gross <= BREAK1)tax = gross * RATE1;else if (gross <= BREAK2)tax = BREAK1 * RATE1 + (gross - BREAK1) * RATE2;elsetax = BREAK1 * RATE1 + (BREAK2 - BREAK1) * RATE2+ (gross - BREAK2) * RATE3;//计算税金printf("Your gross income is $%.2lf\nYour tax is $%.2lf\n" "Your net income is $%.2lf\n",gross, tax, (gross - tax));printf("\nYour next choice:\n");}return 0;}9.#include <stdio.h>int main(void){int div, prime;int num, count;int flag;printf("Input a positive integer: ");scanf("%d", &num);printf("The prime numbers in range:\n");for (prime = 2; prime <= num; prime++) //外层循环显示所有素数 {flag = 1;for (div = 2; (div * div) <= prime; div++){if (prime % div == 0)flag = 0;} //内层循环检验是否为素数 if (flag) //利用标记flag判断printf("%d ",prime);}printf("\n");return 0;}10.#include <stdio.h>#define RATE1 0.15#define RATE2 0.28#define SINGLE 17850 //单身人群的税率分界点#define HOST 23900 //户主人群的税率分界点#define MAR_SHA 29750 //已婚共有人群的分界点#define MAR_DEV 14875 //已婚离异人群的分界点int main(void){int num;double income, tax_break, tax;printpart: printf("Please enter Corresponding""figures to select the type\n");printf("1 single, 2 host, 3 married and shared, ""4 married but devoced and 5 to quit.\n");scanf("%d", &num);switch (num){case 1: tax_break = SINGLE;break;case 2: tax_break = HOST;break;case 3: tax_break = MAR_SHA;break;case 4: tax_break = MAR_DEV;break;case 5: printf("quit.\n");return 0;default: printf("Please input right number.");goto printpart; //回到输入阶段}printf("Enter your income: "); //指定种类和收入while (scanf("%lf", &income) == 1){if (income <= tax_break)tax = income * RATE1;elsetax = tax_break * RATE1 + (income - tax_break) * RATE2; //计算税金printf("The tax is $%.2lf.\n", tax);printf("Your next input: \n");goto printpart; //回到输入阶段}return 0;}11.#include <stdio.h>#include <ctype.h>#define ARTICHOKE 2.05 //洋蓟2.05美元/磅#define BEET 1.15 //甜菜1.15美元/磅#define CARROT 1.09 //胡萝卜1.09美元/磅#define DISCOUNT_LIMIT 100//包装费和运费打折要求订单100美元#define DISCOUNT_RATE 0.05 //折扣为%5#define BREAK1 5#define BREAK2 20 //装运费的分界点#define FEE1 6.5#define FEE2 14#define FEE3_RATE 0.5//不同重量区间的装运费,其中超过20磅的每续重一磅//增加0.5元int main(void){double weight;double weight_artichoke = 0;double weight_beet = 0;double weight_carrot = 0; //购买三种蔬菜的重量double total_weight; //总重量double veg_cost; //三种蔬菜总共花费double order_cost; //订单总额double total_cost; //费用总额double pack_tran_fee; //装运费double discount;int count = 0;char ch;printf("Please select the vegetables you want to buy:\n");printf("a: artichoke $%.2f/lb\n", ARTICHOKE);printf("b: beet $%.2f/lb\n", BEET);printf("c: carrot $%.2f/lb\n", CARROT);printf("q: quit.\n");//打印选择信息while ((ch = tolower(getchar())) != 'q'){// if (ch == '\n')// continue; //滤掉回车switch (ch){case 'a': printf("Input the weight of artichoke in pound: "); scanf("%lf", &weight);weight_artichoke += weight;count++;printf("Continue entering a, b, c or q: ");break;case 'b': printf("Input the weight of beet in pound: ");scanf("%lf", &weight);weight_beet += weight;count++;printf("Continue entering a, b, c or q: ");break;case 'c': printf("Input the weight of carrot in pound: ");scanf("%lf", &weight);weight_carrot += weight;count++;printf("Continue entering a, b, c or q: ");break;default: printf("Please enter the right character.");}while (getchar () != '\n')continue; //滤掉输入重量后面的所有字符}if (!count){printf("Bye.\n");return 0;} //开始输出q,直接退出total_weight = weight_artichoke + weight_beet + weight_carrot;veg_cost = weight_artichoke * ARTICHOKE + weight_beet * BEET+ weight_carrot * CARROT;discount = 0;if (veg_cost >= DISCOUNT_LIMIT){discount = veg_cost * DISCOUNT_RATE;order_cost = veg_cost - discount;}elseorder_cost = veg_cost; //折扣计算if (total_weight <= BREAK1)pack_tran_fee = FEE1;else if (total_weight <= BREAK2)pack_tran_fee = FEE2;elsepack_tran_fee = FEE2 + (total_weight - BREAK2) * FEE3_RATE;//装运费计算total_cost = order_cost + pack_tran_fee;printf("\nHere is what you choose:\n");if (weight_artichoke) {printf("artichoke Price: $%.2f/lb weight: %.2f pounds cost: $%.2f\n",ARTICHOKE, weight_artichoke, weight_artichoke * ARTICHOKE); }if (weight_beet) {printf("beet Price: $%.2f/lb weight: %.2f pounds cost: $%.2f\n",。

C++PrimerPlus中文第六版第六章编程练习

C++PrimerPlus中文第六版第六章编程练习
if(isalpha(ch)) {
if (islower(ch)) {
ch = toupper(ch); } else {
ch = tolower(ch); } cout << ch; } cin >> ch; } cout << endl; cout << "Press any key to return."; cin.get(); cin.get(); return 0; */ //2
return 0; */ //7 //8、
ofstream fw; fw.open("juankuanxinxi.txt");//汉语命名乱码 struct juankuan {
string name; double kuanxiang; }; int shumu; cout << "输入捐献者数目:"; cin >> shumu; fw << "捐款者数目:" << shumu << endl; juankuan * pt = new juankuan[shumu]; int i; int count = 0; for (i = 0;i < shumu;i++) { cout << "输入第" << i + 1 << "位捐款者姓名:"; cin >> pt[i].name; fw << "第" << i +1 << "位捐款者姓名:" << pt[i].name << endl; cout << "输入捐款数额:"; cin >> pt[i].kuanxiang; fw << "捐款数额:" << pt[i].kuanxiang << endl; } cout << "重要捐款者姓名和捐款数额:\n"; fw << "重要捐款者:\n"; for (i = 0;i < shumu;i++) { if (pt[i].kuanxiang > 10000) {

C++-Primer-Plus(第六版)编程习题解答

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 中文版 第六版源代码

c++ primer plus 中文版 第六版源代码

C++ primer plus 中文版第六版源代码第二章到第四章,后续继续更新………第二章1:#include<iostream>void main(){using namespace std;int carrots;carrots=25;cout<<"I have ";cout<<carrots;cout<<"carrots.";cout<<endl;carrots=carrots-1;cout<<"Crunch,crunch.Now I have "<<carrots<<" carrots"<<endl; }2:#include<iostream>int stonetolb(int);int main(){using namespace std;int stone;cout<<"Enter the weight in stone: ";cin>>stone;int pounds=stonetolb(stone);cout<<stone<<" stone= ";cout<<pounds<<" pounds."<<endl;return 0;}int stonetolb(int sts){return 14*sts;}3:#include<iostream>void main(){using namespace std;int carrots;carrots=25;cout<<"How many carrots do you have?"<<endl;cin>>carrots;cout<<"Here are two more.";carrots=carrots+2;cout<<"Now you have "<<carrots<<" carrots."<<endl;//下两行专门测试cin.get()cin.get();cin.get();}4:#include<iostream>using namespace std;void main(){cout<<"Come up and C++ me some time.";cout<<endl;cout<<"You won't regret it!"<<endl;}5#include<iostream>void simon(int);int main(){using namespace std;simon(3);cout<<"Pick an integer: ";int count;cin>>count;simon(count);cout<<"Done !"<<endl;return 0;}void simon(int n){using namespace std;cout<<"Simon says touch your toes "<<n<<" times."<<endl; }6:#include<iostream>#include<cmath>void main(){using namespace std;double area;cout<<"Enter the floor arae,in square feet,of your home: ";cin>>area;double side;side=sqrt(area);cout<<"That's the equivalent of a square "<<side<<" feet to the side."<<endl;cout<<"How fascinating!"<<endl;}第三章1:#include<iostream>#include<climits>using namespace std;int main(){int n_int=INT_MAX;short n_short=SHRT_MAX;long n_long=LONG_MAX;cout<<"int is "<<sizeof(int)<<" bytes."<<endl;cout<<"short is"<<sizeof n_short<<" bytes."<<endl;cout<<"long is"<<sizeof n_long<<" bytes."<<endl<<endl;cout<<"Maximum values :"<<endl;cout<<"int :"<<n_int<<endl;cout<<"short :"<<n_short<<endl;cout<<"long :"<<n_long<<endl;cout<<"Minimum int value = "<<INT_MIN<<endl;cout<<"Bits per byts = "<<CHAR_BIT<<endl;return 0;}2:#include<iostream>#include<climits>#define ZERO 0using namespace std;int main(){short sam=SHRT_MAX;unsigned short sue=sam;cout<<"sam has "<<sam<<" dollars and sue has "<<sue;cout<<" dollars deposited."<<endl<<"Add $1 to each account."<<endl<<"Now ";sam=sam+1;sue=sue+1;cout<<"Sam has "<<sam<<" dollars and sue has "<<sue;cout<<" dollars deposited.\npoor sam!"<<endl;sam=ZERO;sue=ZERO;cout<<"sam has "<<sam<<" dollars and sue has "<<sue;cout<<" dollars deposited."<<endl;cout<<"Take $1 from each account."<<endl<<"Now ";sam=sam-1;sue=sue-1;cout<<"sam has "<<sam<<" dolars and sue has "<<sue;cout<<" dollars deposited."<<endl<<"Lucky sue!"<<endl;return 0;}3:#include<iostream>using namespace std;void main(){int chest=42;int waist=0x42;int inseam=042;cout<<"Monsieur cuts a striking figure!\n";cout<<"chest = "<<chest<<" (42 in decimal)\n";cout<<"waist = "<<waist<<" (0x42 in hex)\n";cout<<"inseam ="<<inseam<<" (042 in octal)\n";}4:#include<iostream>using namespace std;void main(){int chest=42;int waist=42;int inseam=42;cout<<"Monsieur cuts a striking figure!\n";cout<<"chest = "<<chest<<" (decimal for 42)"<<endl;cout<<hex;cout<<"waist = "<<waist<<" (hexadecimal for 42)"<<endl;cout<<oct;cout<<"inseam ="<<inseam<<" (octal for 42)\n"<<endl; }5:#include<iostream>using namespace std;void main(){cout<<"\aoperation \"HyperHype\" is now activated!\n";cout<<"Enter your agent code:__________\b\b\b\b\b\b\b\b";long code;cin>>code;cout<<"\aYou entered "<<code<<" ...\n";cout<<"\acode verified !proceed with plan z3!\n";}6:#include<iostream>using namespace std;void main(){char ch;cout<<"Enter a character:"<<endl;cin>>ch;cout<<"Hola! ";cout<<"Thank you for the "<<ch<<" character."<<endl;}7:#include<iostream>using namespace std;void main(){char ch='M';int i=ch;cout<<"The ASCII code for "<<ch<<" is "<<i<<endl;cout<<"Add one to the character code:"<<endl;ch=ch+1;i=ch;cout<<"The ASCII code for "<<ch<<" is "<<i<<endl;cout<<"Displaying char ch using cout.put(ch): ";cout.put(ch);cout.put('!');cout<<endl<<"Done"<<endl;}8:#include<iostream>using namespace std;void main(){cout.setf(ios_base::fixed,ios_base::floatfield);//控制cout显示的形式float tub=10.0/3.0;double mint=10.0/3.0;const float million=1.0e6;cout<<"tub = "<<tub;cout<<", a million tubs = "<<million*tub;cout<<",\nand ten million tubs = ";cout<<10*million*tub<<endl;cout<<"mint = "<<mint<<" and a million mints = ";cout<<million*mint<<endl;}9:#include<iostream>using namespace std;void main(){float a=2.34e+22f;float b=a+1.0f;cout<<"a= "<<a<<endl;cout<<"b-a= "<<b-a<<endl;}10:#include<iostream>using namespace std;void main(){double hats,heads;//或者是floatcout.setf(ios_base::fixed,ios_base::floatfield);cout<<"Enter a number: ";cin>>hats;cout<<"Enter another number: ";cin>>heads;cout<<"hats = "<<hats<<";heads = "<<heads<<endl;cout<<"hats+heads = "<<hats+heads<<endl;cout<<"hats-heads = "<<hats-heads<<endl;cout<<"hats*heads = "<<hats*heads<<endl;cout<<"hats/heads = "<<hats/heads<<endl;}11:#include<iostream>using namespace std;void main(){cout.setf(ios_base::fixed,ios_base::floatfield);cout<<"Integer division:9/5= "<<9/5<<endl;cout<<"Floating-point division: 9.0/5.0 = ";cout<<9.0/5.0<<endl;cout<<"Mixed division: 9.0/5 = "<<9.0/5<<endl;cout<<"double constants:1.e7/9.0 = ";cout<<1.e7/9.0<<endl;cout<<"float constants:1.e7f/9.0f = ";cout<<1.e7f/9.0f<<endl;}12:#include<iostream>using namespace std;void main(){const int Lbs_per_stn=14;int lbs;cout<<"Enter your weight in pounds: ";cin>>lbs;int stone=lbs/Lbs_per_stn;int pounds=lbs%Lbs_per_stn;cout<<lbs<<" pounds are "<<stone<<" stone, "<<pounds<<" pound(s).\n"; }13:#include<iostream>using namespace std;void main(){cout.setf(ios_base::fixed,ios_base::floatfield);float tree=3;int guess(3.9832);int debt=7.2E12;cout<<"tree = "<<tree<<endl;cout<<"guess = "<<guess<<endl;cout<<"debt = "<<debt<<endl;}14:#include<iostream>using namespace std;void main(){int auks,bats,coots;auks=19.99+11.99;bats=(int)19.99+(int)11.99;coots=int (19.99)+int (11.99);cout<<"auks = "<<auks<<",bats = "<<bats;cout<<",coots = "<<coots<<endl;char ch='Z';cout<<"The code for"<<ch<<" is ";cout<<int (ch)<<endl;cout<<"Yes,the code is ";//cout<<statiic_cast<int>(ch)<<endl;}第四章1:#include<iostream>using namespace std;void main(){int yams[3];yams[0]=7;yams[1]=8;yams[2]=6;int yamcosts[3]={20,30,5};cout<<"Total yams = ";cout<<yams[0]+yams[1]+yams[2]<<endl;cout<<"The package with "<<yams[1]<<" yams costs ";cout<<yamcosts[1]<<" cents per yam.\n";int total=yams[0]*yamcosts[0]+yams[1]*yamcosts[1];total=total+yams[2]*yamcosts[2];cout<<"The total yam expense is "<<total<<" cents.\n";cout<<"\nSize of yams array = "<<sizeof yams;cout<<" bytes.\n";cout<<"Size of one element = "<<sizeof yams[0];cout<<" bytes.\n";}2:#include<iostream>using namespace std;void main(){const int size=15;char name1[size];char name2[size]="C++owboy";cout<<"Howdy! I'm "<<name2;cout<<"! what's your name?\n";cin>>name1;cout<<"Well, "<<name1<<",your name has ";cout<<strlen(name1)<<" letters and is stored\n";cout<<" in an array of "<<sizeof name1<<" bytes.\n";cout<<"Your initial is "<<name1[0]<<".\n";name2[3]='\0';cout<<"Here are the first 3 charchters of my name: ";cout<<name2<<endl;}3:#include<iostream>using namespace std;void main(){const int arsize=20;char name[arsize];char dessert[arsize];cout<<"Enter your name:\n";cin>>name;cout<<"Enter your favorite dessert:\n";cin>>dessert;cout<<"I have some delicious "<<dessert;cout<<" for you, "<<name<<".\n";}4:#include<iostream>using namespace std;void main(){const int arsize=20;char name[arsize];char dessert[arsize];cout<<"Enter your name:\n";cin.getline(name,arsize);cout<<"Enter your favorite dessert:\n";cin.getline(dessert,arsize);cout<<"I have some delicious "<<dessert;cout<<" for you, "<<name<<".\n";}5:#include<iostream>using namespace std;void main(){const int arsize=20;char name[arsize];char dessert[arsize];cout<<"Enter your name:\n";cin.get(name,arsize).get();cout<<"Enter your favorite dessert:\n";cin.get(dessert,arsize);cout<<"I have some delicious "<<dessert;cout<<" for you, "<<name<<".\n";}6:#include<iostream>#include<string>using namespace std;void main(){char charr1[20];char charr2[20]="jaguar";string str1;string str2="panther";cout<<"Enter a kind of feline: ";cin>>charr1;cout<<"Enter another kind of feline: ";cin>>str1;cout<<"Here are some felines:\n";cout<<charr1<<" "<<charr2<<" "<<str1<<" "<<str2<<endl;cout<<"The third letter in "<<charr2<<" is "<<charr2[2]<<endl;cout<<"The third letter in "<<str2<<" is "<<str2[2]<<endl;}7:#include<iostream>#include<string>using namespace std;void main(){string s1="penguin";string s2,s3;cout<<"You can assign one string object to another:s2=s1\n";s2=s1;cout<<"s1: "<<s1<<",s2: "<<s2<<endl;cout<<"You can assign a c-style string to a string object.\n";cout<<"s2= \"buzzard\"\n";s2="buzzard";cout<<"s2: "<<s2<<endl;cout<<"You can concatenate strings: s3=s1+s2\n";s3=s1+s2;cout<<"s3: "<<s3<<endl;cout<<"You can append strings.\n";s1+=s2;cout<<"s1+=s2 yields s1= "<<s1<<endl;s2+=" for a day";cout<<"s1+=\" for a day\" yields s2 = "<<s2<<endl;}8:#include<iostream>#include<string>#include<cstring>using namespace std;void main(){char charr1[20];char charr2[20]="jaguar";string str1;string str2="panther";str1=str2;strcpy(charr1,charr2);str1+=" paste";strcat(charr1," juice");int len1=str1.size();int len2=strlen(charr1);cout<<"The string "<<str1<<" contains "<<len1<<" characters.\n";cout<<"The string "<<charr1<<" contains "<<len2<<" characters.\n";}9:#include<iostream>#include<string>#include<cstring>using namespace std;void main(){char charr[20];string str;cout<<"Length of string in charr before input: "<<strlen(charr)<<endl;cout<<"Length of string in str before input: "<<str.size()<<endl;cout<<"Enter a line of text:\n";cin.getline(charr,20);cout<<"You entered: "<<charr<<endl;cout<<"Enter another line of text:\n";getline(cin,str);//将cin用作参数,到str查找输入,会自动调整大小cout<<"You entered: "<<str<<endl;cout<<"Length of string in charr after input: "<<strlen(charr)<<endl;cout<<"Length of string in str before input: "<<str.size()<<endl;}10:#include<iostream>struct inflatable{char name[20];float volume;double price;};int main(){using namespace std;inflatable guest={"Glorious Gloria",1.88,29.99};inflatable pal={"Audacious Arthur",3.12,32.99};cout<<"Expand your guest list with "<<;cout<<" and "<<<<"!\n";cout<<"You can have both for $";cout<<guest.price+pal.price<<"!\n";cout<<guest.volume+pal.volume<<endl;return 0;}11:#include<iostream>using namespace std;struct inflatable{char name[20];float volume;double price;};int main(){inflatable bouquet={"sunflowers",0.20,12.49};inflatable choice;cout<<"bouquet: "<<<<" for $";cout<<bouquet.price<<endl;choice=bouquet;cout<<"choice: "<<<<" for $";cout<<choice.price<<endl;return 0;}12:#include<iostream>using namespace std;struct inflatable{char name[20];float volume;double price;};int main(){inflatable guests[2]={{ "Bambi",0.5,21.99 },{ "Godzilla",2000,565.99 }};cout<<"The guests "<<guests[0].name<<" and "<<guests[1].name <<"\nhave a combined volume of "<<guests[0].volume+guests[1].volume<<" cubic feet.\n";return 0;}13:#include<iostream>using namespace std;int main(){int donuts=6;double cups=4.5;cout<<"donuts valus = "<<donuts;cout<<" and donuts address = "<<&donuts<<endl;cout<<"cups value = "<<cups;cout<<" and cups addres = "<<&cups<<endl;}14:#include<iostream>using namespace std;int main(){int updates=6;int *p_updates;p_updates=&updates;cout<<"Value:updates = "<<updates;cout<<",*p_updates = "<<*p_updates<<endl;cout<<"Address: &update = "<<&updates;cout<<",p_updates = "<<p_updates<<endl;*p_updates=*p_updates+1;cout<<"Now updates = "<<updates<<endl;return 0;}15:#include<iostream>#include<cstring>using namespace std;char *getname(void);int main()char *name;name=getname();cout<<name<<" at "<<(int *)name<<endl;delete []name;name=getname();cout<<name<<" at "<<(int *)name<<endl;delete []name;return 0;}char *getname(){char temp[80];cout<<"Enter last name: ";cin>>temp;char *pn=new char[strlen(temp)+1];strcpy(pn,temp);return pn;}16:#include<iostream>using namespace std;int main(){double wages[3]={ 10000.0,20000.0,30000.0 };short stacks[3]={ 3,2,1 };double *pw=wages;short *ps=&stacks[0];cout<<"pw= "<<pw<<",*pw= "<<*pw<<endl;pw=pw+1;cout<<"add 1 to the pw pointer:\n";cout<<"pw= "<<pw<<",*pw= "<<*pw<<"\n\n";cout<<"ps= "<<ps<<",*ps= "<<*ps<<"\n\n";ps=ps+1;cout<<"add 1 to the ps pointer:\n";cout<<"ps= "<<ps<<",*ps= "<<*ps<<"\n\n";cout<<"access two elements with array notation\n";cout<<"stacks[0]= "<<stacks[0]<<",stacks[1]= "<<stacks[1]<<endl;cout<<"access two elements with pointer notation\n";cout<<"*stacks= "<<*stacks<<",*(stacks+1)= "<<*(stacks+1)<<endl;cout<<sizeof wages<<" =size of wages array\n";cout<<sizeof pw<<" =size of pw pointer\n";return 0;}17://指针和数组的真正区别#include<iostream>using namespace std;int main(){double *p3=new double[3];p3[0]=0.2;p3[1]=0.5;p3[2]=0.8;cout<<"p3[1] is "<<p3[1]<<".\n";p3=p3+1;cout<<"Now p3[0] is "<<p3[0]<<" and ";cout<<"p3[1] is "<<p3[1]<<".\n";p3=p3-1;cout<<"Now p3[0] is "<<p3[0]<<" and ";cout<<"p3[1] is "<<p3[1]<<".\n";delete [] p3;return 0;}18:#include<iostream>#include<cstring>using namespace std;struct inflatable{char name[20];float volume;double price;};int main()inflatable *ps=new inflatable;cout<<"Enter name of inflatable item: ";cin.get(ps->name,20);cout<<"Enter volume of cubic feet: ";cin>>(*ps).volume;cout<<"Enter price: $";cin>>ps->price;cout<<"Name: "<<(*ps).name<<endl;cout<<"V olume: "<<ps->volume<<" cubic feet\n";cout<<"Price: $"<<ps->price<<endl;delete ps;return 0;}19:#include<iostream>#include<cstring>#include<vector>using namespace std;int main()double a1[4]={ 1.2,2.4,3.6,4.8 };vector<double> a2(4);a2[0]=1.0/3.0;a2[1]=1.0/5.0;a2[2]=1.0/7.0;a2[3]=1.0/9.0;cout<<"a1[2]: "<<a1[2]<<" at "<<&a1[2]<<endl;cout<<"a2[2]: "<<a2[2]<<" at "<<&a2[2]<<endl;a1[-2]=20.2;cout<<"a1[-2]: "<<a1[-2]<<" at "<<&a1[-2]<<endl;return 0;}20:#include<iostream>#include<cstring>using namespace std;int main(){char animal[20]="bear";const char *bird="wren";char *ps;cout<<animal<<" and ";cout<<bird<<"\n";cout<<"Enter a kind of animal: ";cin>>animal;ps=animal;cout<<ps<<"!\n";cout<<"Before using strcpy():\n";cout<<animal<<" at "<<(int *)animal<<endl;cout<<ps<<" at "<<(int *)ps<<endl;ps=new char[strlen(animal+1)];strcpy(ps,animal);cout<<"After using strcpy():\n";cout<<animal<<" at "<<(int *)animal<<endl;cout<<ps<<" at "<<(int *)ps<<endl;delete [] ps;return 0;}21:#include<iostream>using namespace std;int main(){int higgens=5;int *pt=&higgens;cout<<"Value of higgens = "<<higgens<<";Address of higgens = "<<&higgens<<endl;cout<<"Value of *pt = "<<*pt<<";Address of pt = "<<pt<<endl;return 0;}22:#include<iostream>using namespace std;int main(){int nights=1001;int *pt=new int;*pt=1001;cout<<"nights value = ";cout<<nights<<": location "<<&nights<<endl;cout<<"int ";cout<<"value = "<<*pt<<": location = "<<pt<<endl;double *pd=new double;*pd=10000001.0;cout<<"double ";cout<<"value = "<<*pd<<": location = "<<pd<<endl;cout<<"location of pointer pd: "<<&pd<<endl;cout<<"size of pt = "<<sizeof pt;cout<<":size of *pt = "<<sizeof *pt<<endl;cout<<"size of pd = "<<sizeof pd;cout<<":size of *pd = "<<sizeof *pd<<endl;return 0;}23:#include<iostream>#include<cstring>using namespace std;struct antarctica_years_end{int year;};int main(){antarctica_years_end s01,s02,s03;s01.year=1998;antarctica_years_end *pa=&s02;pa->year=1999;antarctica_years_end trio[3];trio[0].year=2003;cout<<trio->year<<endl;const antarctica_years_end *arp[3]={ &s01,&s02,&s03 };cout<<arp[1]->year<<endl;const antarctica_years_end **ppa=arp;//auto ppb=arp;cout<<(*ppa)->year<<endl;//cout<<(*(ppb+1))->year<<endl;return 0; }。

C++ Primer Plus 勘误(第六版)

C++ Primer Plus 勘误(第六版)

删分号 加冒号 变小写 变小写 拼写错 加* 地址错 加d
所有权转让给 pu3 后就会被销毁。 变量错 -改_ 改小写 改小写 删掉 p 加叹号 加分号
W 为 0 表明, 默认的字段宽度为 0。 w 为 0 表明, 默认的字段宽度为 0。 改小写 拼写错 out 改为 in out 改为 in 改小写
P511 / F5 P536 / 图 14.1 / B5 P536 / B2 P536 / B1 P622 / F8 P667 / 16.2 / F7 P668 / 图 16.2-demo2-#2 / B2 P669 / 16.2.1 / B2 P673 / 16.2.3 / F14 P692 / 16.4.4-2 / F3 P708 / F10 P708 / F12 P721 / B7 P738 / 图 17.4-最 下面的图 P741 / 17.2.3 / B2 P744 / B1 P762 / B12 P755 / 表 17.8 / F5 P755 / 表 17.8 / F6 P782 / B9
Fn:正数第 n 行,Bn:倒数第 n 行
4
修改为 程序清单 2.2 carrots.cpp int、unsigned int、long、… unsigned int 转义序列\n 表示换行符 8.33E-4 表示 8.33/10 9.11e-31 kg 表示… d.dddE-n 指的是… perks 类型的变量—perks mr_blug; 程序需要 strlen(temp)+1 个字符 则 strcmp()将返回一个正数值 声明为 unsigned int 类型 rodents address = 0x0065fd44 我 们 使 用 “ coordin.h ” 而 不 是 , <coordin.h>。 Embarcadero C++ Builder 从而跳到#endif 后面的一行上 int *pin = new int {6}; cout << bozetta.Retort(); #define STOCK10_H_ Bozo fufu{“Fufu”, “O’Dweeb”}; // C++11 编译器将用 12 来替换它 随便说一句,程序清单 12.1… Klunk() { klunk_ct = 0; } 则 operator<()函数返回 true。 使用标准的 strcmp()函数 delete [] c_pointer; Show (&player1); Show (&rplayer1); void Move(int nx, int ny) { x = nx; y = ny; } void Move(int nx, int ny) { x = nx; y = ny; } void Move(int nx, int ny) { x = nx; y = ny; } 派生出 Ellipse 类和 Circle 类

C++Primer Plus(第6版)中文版编程练习答案--第六章

C++Primer Plus(第6版)中文版编程练习答案--第六章
5
cout<<"请输入捐款者数目:"<<endl; cin>>n_of_donation; donation* list=new donation[n_of_donation]; //创建动态分配的结构数组
for(int i=0;i<n_of_donation;i++) //输入捐款者的信息 { cout<<"输入第"<<i+1<<"位捐款者的信息:"<<endl; cout<<"名字:"; cin.sync(); getline(cin,list[i].name); cout<<"数目:"; cin>>list[i].money; } int temp=0; //记录有没有人的捐款大于一万元 cout<<"重要捐款人:"<<endl; for(int i=0;i<n_of_donation;i++) { if(list[i].money>10000) { cout<<list[i].name<<" "<<list[i].money<<endl; temp++; } } if(temp==0) cout<<"此项目没有人。"<<endl; temp=0; cout<<"捐款人:"<<endl; for(int i=0;i<n_of_donation;i++) { if(list[i].money<=10000) { cout<<list[i].name<<" "<<list[i].money<<endl; temp++; } } if(temp==0) cout<<"此项目没有人。"<<endl; delete list; getchar(); getchar(); return 0; }

C Primer Plus (第六版)中文版 4.8编程练习

C Primer Plus (第六版)中文版  4.8编程练习

4.8编程练习//*********************一****************************#include<stdio.h>int main(void){char name[10] ;//名char name2[10];//姓printf("请输入名和姓:\n");scanf("%s %s",name,name2);printf("%s,%s",name,name2);return 0;}//*********************二****************************#include<stdio.h>int main(void){char name[]="tghsjxijkm";printf("\"%s\"\n", name);//打印名字,包括双引号printf("\"%20s\"\n", name);//在宽度为20的字段右端打印名字,包括双引号printf("\"%-20s\"\n", name);//在宽度为20的字段左端打印名字,包括双引号printf("%13s\n", name);//在比姓名宽度宽3的字段中打印名字return 0;}//*********************三****************************#include<stdio.h>int main(void){float number;printf("请输入一个浮点数number=");scanf_s("%f", &number);printf("the input is %.1f or %.1e\n",number,number);printf("the input is %+.3f or %.3E\n",number,number);return 0;}//*********************四****************************#include<stdio.h>int main(void){float tall;//身高char name[30];//姓名printf("请输入您的身高和姓名\n");scanf("%f", &tall);scanf("%s", name);printf("%s,you are %.1f feet tall\n", name, tall);return 0;}//*********************五****************************#include<stdio.h>int main(){float v=0;//下载速度单位是兆位每秒float t=0;//下载时间float doc = 0;//文件大小单位是兆字节一个字节=8位printf("输入下载速度(Mb/s)\n");scanf("%f", &v);printf("输入文件大小(MB)\n");scanf("%f", &doc);t = 8*doc / v;//1(B)byte=8(b)bitsprintf("At %.2f megabits per second,a file of %.2f megabytes\n", v,doc);printf("downloads in %.2f seconds.\n", t);return 0;}//*********************六****************************#include<stdio.h>int main(void){char ming[20];char xing[20];int i=0,j=0;//循环int tempi, tempj;//存储姓和名最后一个字母的下标printf("请输入名字\n");scanf("%s", ming);for (; i < 20; i++){if (ming[i] == '\0')tempi=i;break;}}printf("请输入姓氏\n");scanf("%s", xing);for (; j < 20; j++){if (xing[j] == '\0'){tempj = j;break;}}printf("%7s %7s\n", ming, xing);printf("%7d %7d\n", tempi, tempj);printf("%7s %7s\n", ming, xing);printf("%-7d %-7d\n", tempi, tempj);return 0;}//*********************七****************************#include<stdio.h>#include<float.h>//浮点型限制int main(void){double number_1= 1.0 / 3.0;float number_2 = 1.0 / 3.0;printf("%-18.6lf %-18.6f\n", number_1, number_2);printf("%-18.12lf %-18.12f\n", number_1, number_2);printf("%-18.16lf %-18.16f\n", number_1, number_2);printf("%d %d\n", DBL_DIG, FLT_DIG); //输出结果为15 6 表示double能保证的有效位数最多是15~16位,完全能保证的是15位;float是6~7位,完全能保证的是6位。

《C++_Primer_Plus(第6版)中文版》编程练习6-10章

《C++_Primer_Plus(第6版)中文版》编程练习6-10章

else if (member[i].preference == 1) cout << member[i].title << endl; else cout << 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); else tax = RATE1 * (LEV2 - LEV1) + RATE2 * (LEV3 - LEV2) + RATE3 * (income - LEV3); cout << "You owe Neutronia " << tax << " tvarps in taxes.\n"; return 0; }

C++Primer Plus(第6版)中文版编程练习答案--第四章

C++Primer Plus(第6版)中文版编程练习答案--第四章
注释:这些程序是唐刀在学习的时候编写的,其中可能存在错误和不足,大家 做个参考就好。
1.
#include<iostream> #include<string> #include<cstring> using namespace std; void main() { string first_name; string last_name; cout<<"what's your first name?"; getline(cin,first_name); cout<<"what's your last name?"; getline(cin,last_name); char grade; cout<<"what letter grade do you deserve?"; cin>>grade; int age; cout<<"what is your age?"; cin>>age; cout<<"name:"<<last_name<<", "<<first_name<<endl; cout<<"grade:"<<char(grade+1)<<endl; cout<<"age:"<<age<<endl; }
2
cout<<"enter your last name:"<<endl; getline(cin,last_name); cout<<"here is the information in a single string:"<<last_name+", "+first_name<<endl; }

C++Primer Plus(第6版)中文版编程练习答案--第七章

C++Primer Plus(第6版)中文版编程练习答案--第七章

Reverse_array(new_array+1,count-2);//除第一个和最后一个元素外,其余的翻转 Show_array(new_array,count); delete new_array; getchar(); getchar(); getchar(); return 0; } int Fill_array(double * arr,int n) //数组填充 { int i=0; cout<<"请输入下一个 double 类型的数(输入为非数字时结束) :"<<endl; while(i<n&&cin>>arr[i]) i++; return i; } void Show_array(double * arr,int n) //数组显示 { cout<<"这个数组的内容如下:"<<endl; for(int i=0;i<n;i++) cout<<"第"<<i+1<<"个数:"<<arr[放内存
//方便阅读
//当达到数组长度或者输入非数字时结束
} double * Reverse_array(double * arr,int n) //数组翻转 { double * temp=new double[n]; //新建一个数组来翻转数组 for(int i=0;i<n;i++) temp[i]=arr[n-i-1]; for(int i=0;i<n;i++) arr[i]=temp[i]; delete temp; return arr; } //释放内存,这个最容易忘

C++ Premer Plus第六版示例程序-第五章

C++ Premer Plus第六版示例程序-第五章

/*第5章循环和关系表达式*//*程序清单5.1 forloop.cpp*///forloop.cpp -- 介绍循环#include<iostream>int main(){usingnamespace std;int i; //创建一个操作台//初始化,测试,更新操作for (i = 0; i < 5; i++)cout <<"C++ knows loops.\n";cout <<"C++ knows when to stope.\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.2 num_test.cpp*///num_test.cpp -- 使用数字对循环测试#include<iostream>int main(){usingnamespace std;cout <<"Enter the starting countdown value: ";int limit;cin >> limit;int i;for (i = limit; i; i--) //当i等于零停止cout <<"i = "<< i <<"\n";cout <<"Done now that i = "<< i <<"\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.3 express.cpp*///express.cpp -- 表达值#include<iostream>int main(){usingnamespace std;int x;cout <<"The expression x = 100 has the value ";cout << (x = 100) << endl;cout <<"Now x = "<< x << endl;cout <<"The expression x < 3 has the value ";cout << (x < 3) << endl;cout <<"The expression x > 3 has the value ";cout << (x > 3) << endl;cout.setf(ios_base::boolalpha); //一个新的C++特征cout <<"The expression x < 3 has the value ";cout << (x < 3) << endl;cout <<"The expression x > 3 has the value ";cout << (x > 3) << endl;system("pause"); //测试用,原程序没有return 0;}/*程序清单5.4 formore.cpp*///formore.cpp -- 更多for循环#include<iostream>constint ArSize = 16; //外部声明的例子int main(){longlong factorials[ArSize];factorials[1] = factorials[0] = 1LL;for (int i = 2; i < ArSize; i++)factorials[i] = i*factorials[i - 1];for (int i = 0; i < ArSize; i++)std::cout << i <<"! = "<<factorials[i] << std::endl;system("pause"); //测试用,原程序没有return 0;}/*程序清单5.5 bigstep.cpp*///bigstep.cpp -- 定向计算#include<iostream>constint ArSize = 16; //外部声明的例子int main(){using std::cout; //一个使用声明using std::cin;using std::endl;cout <<"Enter an integer: ";int by;cin >> by;cout <<"Counting by "<< by <<"s:\n";for (int i = 0; i < 100; i = i + by)cout << i << endl;system("pause"); //测试用,原程序没有return 0;}/*程序清单5.6 forstr1.cpp*///forstr1.cpp --使用字符串#include<iostream>#include<string>constint ArSize = 16; //外部声明的例子int main(){usingnamespace std;cout <<"Enter a word: ";string word;cin >> word;//用倒序方式显示字符for (int i = word.size() - 1; i >= 0; i--) cout << word[i];cout <<"\nBye.\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.7 plus_one.cpp*///plus_one.cpp --自增操作#include<iostream>#include<string>int main(){using std::cout;int a = 20;int b = 20;cout <<"a = "<< a <<": b = "<< b <<"\n";cout <<"a++ = "<< a++ <<": ++b = "<< ++b <<"\n";cout <<"a = "<< a <<": b = "<< b <<"\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.8 block.cpp*///block.cpp --使用程序块陈述#include<iostream>int main(){usingnamespace std;cout <<"The Amazing Accounto will sum and average ";cout <<"five numbers for you.\n";cout <<"Please enter five values:\n";double number;double sum = 0.0;for (int i = 1; i <= 5; i++){ //代码块在这开始cout <<"Value "<< i <<": ";cin >> number;sum += number;} //代码块在这停止cout <<"Five exquisite choices indeed! ";cout <<"They sum to "<< sum << endl;cout <<"and average to "<< sum / 5 <<".\n";cout <<"The Amazing Accounto bids you adieu!\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.9 forstr2.cpp*///forstr2.cpp -- 颠倒一个数组#include<iostream>#include<string>int main(){usingnamespace std;cout<<"Enter a word: ";string word;cin>>word;//体格上修正字符串的目的char temp;int i, j;for (j = 0, i = word.size() - 1; j<i; --i, ++j) {temp = word[i];word[i] = word[j];word[j] = temp;}cout<<word<<"\nDone\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.10 equal.cpp*///equal.cpp -- 平等分配#include<iostream>#include<string>int main(){usingnamespace std;int quizescores[10] ={ 20,20,20,20,20,19,20,18,20,20 };cout<<"Doing it ringht:\n";int i;for (i = 0; quizescores[i] == 20; i++)cout<<"quize "<<i<<" is a 20\n";//警告:你或许更喜欢读这个语法超过真实运行cout<<"Doing it dangerously wrong:\n";for (i = 0; quizescores[i] = 20; i++)cout<<"quize "<<i<<" is a 20\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.11 compstr1.cpp*///compstr1.cpp -- 比较使用字符串和数组#include<iostream>#include<cstring>int main(){usingnamespace std;char word[5] = "?ate";for (char ch = 'a'; strcmp(word, "mate"); ch++) {cout<<word<<endl;word[0] = ch;}cout<<"After loop ends,word is "<<word<<endl;system("pause"); //测试用,原程序没有return 0;}/*程序清单5.12 compstr2.cpp*///compstr2.cpp -- 比较使用字符串和数组#include<iostream>#include<string>//字符串风格int main(){usingnamespace std;string word = "?ate";for (char ch = 'a'; word!="mate"; ch++){cout<<word<<endl;word[0] = ch;}cout<<"After loop ends,word is "<<word<<endl;system("pause"); //测试用,原程序没有return 0;}/*程序清单5.13 while.cpp*///while.cpp -- 比较使用字符串和数组#include<iostream>constint ArSize = 20;int main(){usingnamespace std;char name[ArSize];cout<<"Your first name,please: ";cin>>name;cout<<"Here is your name, verticalized and ASCIIized:\n";int i = 0; //开始字符串while (name[i] != '\0') //处理字符串的结束{cout<<name[i] <<": "<<int(name[i]) <<endl;i++; //不能忘记这步}system("pause"); //测试用,原程序没有return 0;}/*程序清单5.14 waiting.cpp*///waiting.cpp -- 使用clock() 在时间延迟循环中#include<iostream>#include<ctime>//描述clock()函数,clock_t类型int main(){usingnamespace std;cout<<"Enter the delay time,in seconds: ";float secs;cin>>secs;clock_t delay = secs * CLOCKS_PER_SEC; //转变时钟运转cout<<"starting\a\n";clock_t start = clock();while (clock() - start<delay) //等直到时间流逝; //留意这个分号cout<<"done \a\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.15 dowhile.cpp*///dowhile.cpp -- 出口条件循环#include<iostream>int main(){usingnamespace std;int n;cout<<"Enter numbers in the range 1-10 to find ";cout<<"my favorite number\n";do{cin>>n; //执行部分} while (n!=7); //然后测试cout<<"Yes, 7 is my favorite.\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.16 textin1.cpp*///textin1.cpp -- 用while循环读字符#include<iostream>int main(){usingnamespace std;char ch;int count = 0; //使用基本输入cout<<"Enter characters;enter # to quit:\n";cin>>ch; //得到一个字符while (ch != '#'){cout<<ch; //回送这个字符++count; //计算这个字符cin>>ch; //得到下一个字符}cout<<endl<<count<<"characters read\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.17 textin2.cpp*///textin2.cpp -- 使用cin.get(char)#include<iostream>int main(){usingnamespace std;char ch;int count = 0;cout<<"Enter characters;enter # to quit:\n";cin.get(ch); //使用cin.get()函数while (ch != '#'){cout<<ch;++count;cin.get(ch); //再次使用它}cout<<endl<<count<<"characters read\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.18 textin3.cpp*///textin3.cpp -- 读字符结束文件#include<iostream>int main(){usingnamespace std;char ch;int count = 0; //尝试读一个字符cin.get(ch); //使用cin.get()函数while (cin.fail()==false) //对EOF进行测试{cout<<ch; //回送这个字符++count;cin.get(ch); //尝试读另一个字符}cout<<endl<<count<<" characters read\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.19 textin4.cpp*///textin4.cpp -- 读字符用cin.get()#include<iostream>int main(){usingnamespace std;int ch; //应该用整形而不是字符型int count = 0;while ((ch=cin.get())!=EOF) //此时结束文件{cout.put(char(ch));++count;}cout<<endl<<count<<" characters read\n";system("pause"); //测试用,原程序没有return 0;}/*程序清单5.20 nested.cpp*///nested.cpp -- 嵌套循环和二维数组#include<iostream>constint Cities = 5;constint Years = 4;int main(){usingnamespace std;constchar * cities[Cities] ={"Gribble City","Gribbletown","New Gribble","San Gribble","Gribble Vista"};int maxtemps[Years][Cities]={{96,100,87,101,105},{96,98,91,107,104},{97,101,93,108,107},{98,103,95,109,108}};cout<<"Maximum tempweratures for 2008 - 2011\n\n";for (int city = 0; city<Cities; ++city){cout<<cities[city] <<":\t";for (int year = 0; year<Years; ++year)cout<<maxtemps[year][city] <<"\t";cout<<endl;}//cin.get();system("pause"); //测试用,原程序没有return 0;}。

(完整word版)c++primerplus中文版第六版源代码

(完整word版)c++primerplus中文版第六版源代码

(完整word版)c++primerplus中文版第六版源代码C++ primer plus 中文版第六版源代码第二章到第四章,后续继续更新………第二章1:#include<iostream>void main(){using namespace std;int carrots;carrots=25;cout<<”I have ";cout〈〈carrots;cout〈〈"carrots.”;cout<〈endl;carrots=carrots-1;cout〈〈"Crunch,crunch。

Now I have ”<〈carrots<<” carrots"<〈endl;}2:#include〈iostream>(完整word版)c++primerplus中文版第六版源代码int stonetolb(int);int main(){using namespace std;int stone;cout<〈”Enter the weight in stone: ”;cin>〉stone;int pounds=stonetolb(stone);cout〈〈stone<〈” stone= ";cout〈<pounds〈〈" pounds."<<endl;return 0;}int stonetolb(int sts){return 14*sts;}3:#include〈iostream>void main(){using namespace std;int carrots;carrots=25;cout<<"How many carrots do you have?”<<endl;cin>〉carrots;cout<<”Here are two more。

C++ primer plus(第6版)中文版编程练习答案第10章

C++ primer plus(第6版)中文版编程练习答案第10章

第10章1、//Customs.h#include <stdio.h>#include <tchar.h>#include <string>#include <iostream>using namespace std;class Customs{private:string name;string accnum;double balance;public:Customs(const string &client, const string &num, double bal = 0.0);~Customs();void show()const;bool deposit(double cash);bool withdraw(double cash);};//Customs.cpp#include "Customs.h"Customs::Customs(const string &client,const string &num, double bal) {accnum = num;name = client;balance = bal;}Customs::~Customs(){}bool Customs::deposit(double cash){if (cash <= 0){cout << "Deposit must greater than zero\n";return false;}else{cout << "Custom deposits $" << cash << " dolars.\n";balance += cash;return true;}}bool Customs::withdraw(double cash){if (cash <= 0 || (balance - cash) < 0){cout << "Withdraw money error, must less than balance and greater than zero\n";return false;}else{cout << "Custom withdraws $" << cash << " dolars\n";balance -= cash;return true;}}void Customs::show()const{cout << "Account custom's name is " << name << endl;cout << "Account number is " << accnum << endl;cout << "Custom's balance is " << balance << endl;}//main.cpp#include "Customs.h"int main(){double input, output;char ch;Customs custom=Customs("Jacky","Jc",3000.32);custom.show();cout << "Please enter A to deposit balance ,\n"<< "P to withdraw balance, or Q to quit.: ";while (cin >> ch && toupper(ch)!='Q'){while (cin.get() != '\n')continue;if (!isalpha(ch)){cout << '\a';continue;}switch (ch){case'A':case'a':cout << "Enter a account number to deposit: ";cin >> input;if (!custom.deposit(input))cout << "Add error\n";elsecout << "Add success\n";break;case'P':case'p':cout << "Enter a account number to withdraw: ";cin >> output;if (!custom.withdraw(output))cout << "Withdraw error\n";elsecout << "Withdraw success\n";break;}custom.show();cout << "Please enter A to deposit balance ,\n"<< "P to withdraw balance, or Q to quit: ";}cout << "Bye\n";cin.get();cin.get();return 0;}2、//person.h#ifndef PERSON_H_#define PERSON_H_#include <iostream>#include <stdio.h>#include <tchar.h>#include <string>using namespace std;class Person{private:static const int Person::LIMIT = 25;string lname;char fname[LIMIT];public:Person(){ lname = ""; fname[0] = '\0'; }Person(const string &ln, const char *fn = "Heyyou");void Show()const;void FormalShow()const;};#endif//person.cpp#include "person.h"Person::Person(const string &ln, const char *fn){lname = ln;strncpy_s(fname, fn, LIMIT);fname[LIMIT] = '\0';}void Person::Show()const{cout << fname << " " << lname;}void Person::FormalShow()const{cout << lname << ", " << fname; }//usePerson.cpp#include "person.h"int main(){Person one;Person two("Smythecraft");Person three("Dimwiddy", "Sam");one.Show();cout << endl;one.FormalShow();cout << endl;two.Show();cout << endl;two.FormalShow();cout << endl;three.Show();cout << endl;three.FormalShow();cout << endl;cin.get();return 0;}3、//golf.h#ifndef GOLF_H_#define GOLF_H_#include <iostream>#include <string>using namespace std;class golf{private:static const int Len = 40;char fullname[Len];int handicap;public:golf();golf(const char *name, int hc = 0);golf(golf &g);~golf();void handicapf(int hc);void show()const;};#endif//golf.cpp#include "golf.h"golf::golf(){}golf::golf(const char *name, int hc){strncpy_s(fullname, name, Len);fullname[Len] = '\0';handicap = hc;}golf::golf(golf &g){strncpy_s(this->fullname, g.fullname, Len);this->handicap = g.handicap;}golf::~golf(){}void golf::handicapf( int hc){handicap = hc;}void golf::show()const{cout << fullname << ", " << handicap << endl; }//main.cpp#include "golf.h"int main(){char name[40] = "\0";int no;cout << "Enter a name: ";cin.getline(name, 40);cout << "Enter a level: ";cin >> no;golf ann(name, no);ann.show();golf andy = golf(ann);andy.show();cin.get();cin.get();return 0;}4、//Sales.h#ifndef SALE_H_#define SALE_H_#include <iostream>#include <string>using namespace std;namespace SALES{class Sales{private:static const int QUARTERS = 4;double sales[QUARTERS];double average;double max;double min;public:Sales();Sales(const double *ar);Sales(Sales &s);~Sales();void showSales()const;};}#endif//Sales.cpp#include "Sales.h"using namespace SALES;Sales::Sales(){sales[QUARTERS] = '\0';average = 0.0;max = 0.0;min = 0.0;}Sales::Sales(const double *ar){double sum=0.0;for (int i = 0; i < QUARTERS; i++){sales[i] = ar[i];sum += sales[i];}average = sum / QUARTERS;max = sales[0];for (int i = 0; i < QUARTERS-1; i++){if (sales[i] < sales[i + 1])max = sales[i + 1];}min = sales[0];for (int i = 0; i < QUARTERS-1; i++){if (sales[i] > sales[i + 1])min = sales[i + 1];}}Sales::Sales(Sales &s){for (int i = 0; i < QUARTERS; i++)this->sales[i] = s.sales[i];this->average = s.average;this->max = s.max;this->min = s.min;}Sales::~Sales(){}void Sales::showSales()const{cout << "The sales number is \n";for (int i = 0; i < QUARTERS; i++){cout << sales[i] << " ";}cout << endl;cout << "The sales average is " << average << endl;cout << "The sales max is " << max << endl;cout << "The sales min is " << min << endl;}//main.cpp#include "Sales.h"using namespace SALES;int main(){double nums[4];cout << "Please enter four numbers: \n";for (int i = 0; i < 4; i++)cin >> nums[i];Sales sn(nums);sn.showSales();Sales sn1(sn);sn1.showSales();cin.get();cin.get();return 0;}5、//stack.h#ifndef STACK_H_#define STACK_H_#include <iostream>#include <string>#include <stdio.h>using namespace std;struct customer{char fullname[35];double payment;};typedef struct customer Item;class Stack{private:enum{ MAX = 10 };Item items[MAX];double sum;int top;public:Stack();~Stack();bool isempty()const;bool isfull()const;bool push(const Item &item);bool pop(Item &item);};#endif#include "stack.h"Stack::Stack(){top = 0;sum = 0.0;}Stack::~Stack(){}bool Stack::isempty()const{return top == 0;}bool Stack::isfull()const{return top == MAX;}bool Stack::push(const Item &item) {if (top < MAX){items[top++] = item;return true;}elsereturn false;}bool Stack::pop(Item &item){if (top > 0){item = items[--top];sum += item.payment;cout << sum << endl;return true;}return false;}//main.cpp#include "stack.h"int main(){Stack st;char ch;Item cs;cout << "Please enter A to add a purchase order,\n"<< "P to process a PO, or Q to quit.\n";while (cin >> ch && toupper(ch) != 'Q'){while (cin.get() != '\n')continue;if (!isalpha(ch)){cout << '\a';continue;}switch (ch){case 'A':case 'a':cout << "Enter a PO number to add: ";cin >> cs.fullname;cin >> cs.payment;if (st.isfull())cout << "stack already full\n";elsest.push(cs);break;case 'P':case 'p':if (st.isempty())cout << "stack already empty\n";else{st.pop(cs);cout << "PO #" << cs.fullname << "popped\n";}break;}cout << "Please enter A to add a purchase order,\n"<< "P to process a PO, or Q to quit.\n";}cout << "Bye\n";cin.get();cin.get();return 0;}6、//Move.h#ifndef MOVE_H_#define MOVE_H_#include <stdio.h>#include <iostream>#include <string>using namespace std;class Move{private:double x;double y;public:Move(double a = 0, double b = 0);void showmove()const;Move add(const Move &m)const;void reset(double a = 0, double b = 0);};#endif//Move.cpp#include "Move.h"Move::Move(double a, double b){x = a;y = b;}void Move::showmove()const{cout << "x = " << x << endl;cout << "y = " << y << endl;}Move Move::add(const Move &m)const {Move xy_add;xy_add.x = m.x + this->x;xy_add.y = m.y + this->y;return xy_add;}void Move::reset(double a, double b) {x = a;y = b;}//main.cpp#include "Move.h"int main(){Move xy0(1, 1);xy0.showmove();Move xy1;xy1 = Move(2, 2);xy1.showmove();xy1 = xy1.add(xy0);xy1.showmove();xy1.reset(2.5, 2.5);xy1.showmove();cin.get();return 0;}7、//plorg.h#ifndef PLORG_H_#define PLORG_H_#include <iostream>#include <string>#include <stdio.h>using namespace std;class plorg{private:static const int len = 19;char fullname[len];int CI;public:plorg(const char *name = "Plorga", int ci = 50);~plorg();void p_fix(int ci);void show()const;};#endif//plorg.cpp#include "plorg.h"plorg::plorg(const char *name, int ci){strncpy_s(fullname, name, len);CI = ci;}plorg::~plorg(){}void plorg::p_fix(int ci){CI = ci;}void plorg::show()const{cout << fullname << ", " << CI << endl; }//main.cpp#include "plorg.h"int main(){plorg pl;pl.show();pl.p_fix(32);pl.show();plorg pll("Plorgb", 27);pll.show();pll.p_fix(32);pll.show();cin.get();return 0;}8、//list.h#ifndef LIST_H_#define LIST_H_#include <iostream>#include <string>#include <stdio.h>using namespace std;typedef unsigned long Item;class List{private:enum { MAX = 10 };Item items[MAX];int head;int rear;public:List();bool isempty()const;bool isfull()const;bool add(const Item &item);bool cut(Item &item);void show()const;void visit(void(*pf)(Item &)); };#endif//list.cpp#include "list.h"List::List(){head = 0;rear = 0;}bool List::isempty()const{return rear == head;}bool List::isfull()const{return rear - head == MAX; }bool List::add(const Item &item) {if (rear < MAX){items[rear++] = item;return true;}elsereturn false;}bool List::cut(Item &item){if (rear < MAX){item = items[--rear];return true;}elsereturn false;}void List::show()const{for (int i = head; i < rear; i++)cout << items[i] << ", ";cout << endl;}void List::visit(void(*pf)(Item &)){for (int i = 0; i < rear; i++)(*pf)(items[i]);}//main.cpp#include "list.h"void show_s(Item & item);int main(){List st;char ch;unsigned long po;unsigned long *p = &po;cout << "Please enter A to add a purchase order,\n"<< "P to process a PO, or Q to quit.\n";while (cin >> ch && toupper(ch) != 'Q'){while (cin.get() != '\n')continue;if (!isalpha(ch)){cout << '\a';continue;}switch (ch){case 'A':case 'a':cout << "Enter a PO number to add: ";cin >> po;if (st.isfull())cout << "stack already full\n";elsest.add(po);break;case 'P':case 'p':if (st.isempty())cout << "stack already empty\n";else{st.cut(po);cout << "PO #" << po << "popped\n";}break;case 'V':case 'v':st.visit(show_s);}cout << "Please enter A to add a purchase order,\n"<< "P to process a PO, or Q to quit.\n";}st.show();cout << "Bye\n";cin.get();cin.get();return 0;}void show_s(Item &item){item += 100;cout << item << endl;}。

C++ primer plus(第6版)中文版编程练习答案第16章

C++ primer plus(第6版)中文版编程练习答案第16章

1、//Reverse.cpp#include <iostream>#include <string>using namespace std;boolisReverse(const string &s1, const string &s2);int main(){string words;cout<< "Enter a string (quit to quit): \n";while (cin>> words&&words != "quit"){stringrwords(words.rbegin(), words.rend());cout<< "words: " << words <<endl;if (isReverse(rwords, words))cout<< words << " is reverse words.\n";elsecout<< words << " is not reverse words.\n";cout<< "Enter a next words (quit to quit): \n";}system("pause");return 0;}boolisReverse(const string &s1, const string &s2){if (pare(s2))return false;elsereturn true;}2、//Reverse.cpp#include <iostream>#include <string>#include <cctype>using namespace std;boolisReverse(const string &s1, const string &s2); voidToLower(string &s1);int main(){string words;cout<< "Enter a string (quit to quit): \n";getline(cin, words);while (words != "quit"){ToLower(words);stringrwords(words.rbegin(), words.rend());cout<< "words: " << words <<endl;if (isReverse(rwords, words))cout<< words << " is reverse words.\n";elsecout<< words << " is not reverse words.\n";cout<< "Enter a next words (quit to quit): \n";getline(cin, words);}system("pause");return 0;}boolisReverse(const string &s1, const string &s2){if (pare(s2))return false;elsereturn true;}voidToLower(string &s1){unsignedinti = 0;while (i< s1.length()){if (isalpha(s1[i])){s1[i] = tolower(s1[i]);i++;}elses1.replace(i, s1.size(), s1, i + 1, s1.size());}}3、//hangman.cpp#include <iostream>#include <string>#include <cstdlib>#include <ctime>#include <cctype>#include <fstream>#include <vector>using namespace std;vector<string> wordlist;voidFillWord();int main(){srand(time(0));char play;cout<< "Will you play a word game? <y/n> ";cin>> play;play = tolower(play);FillWord();while (play == 'y'){string target = wordlist[rand() % wordlist.size()];int length = target.length();string attempt(length, '-');stringbadchars;int guesses = 6;cout<< "Guess my secret word. It has " << length<< " letters, and you guess\n"<< "one letter at a time. You get " << guesses<<" wrong guesses.\n";cout<< "Your word: " << attempt <<endl;while (guesses > 0 && attempt != target){char letter;cout<< "Guess a letter: ";cin>> letter;if (badchars.find(letter) != string::npos|| attempt.find(letter) != string::npos){cout<< "You already guessed that. Try again.\n";continue;}intloc = target.find(letter);if (loc == string::npos){cout<< "Oh,bad guess!\n";--guesses;badchars += letter;}else{cout<< "Good guess!\n";attempt[loc] = letter;loc - target.find(letter, loc + 1);while (loc != string::npos){attempt[loc] = letter;loc = target.find(letter, loc + 1);}}cout<< "Your word: " << attempt <<endl;if (attempt != target){if (badchars.length() > 0)cout<< "Bad choices: " <<badchars<<endl;cout<< guesses << " bad guesses left\n";}}if (guesses > 0)cout<< "That's right!\n";elsecout<< "Sorry, the word is " << target << ".\n";cout<< "Will you play another? <y/n> ";cin>> play;play = tolower(play);}cout<< "Bye\n";system("pause");return 0;}voidFillWord(){ifstream fin;string letter;fin.open("letters.txt");if (fin.is_open() == false){cerr<< "Can't open file. Bye.\n";exit(EXIT_FAILURE);}while (fin){fin>> letter;wordlist.push_back(letter);}fin.close();}//letters.txtapiary beetle cereal danger ensign florid garage healthinsult jackal keeper loaner manage nonce onset plaidquilt remote stolid train useful valid whence xenon yearn zippy4、//Reduce.cpp#include <iostream>#include <list>#include <algorithm>using namespace std;int reduce(long ar[], int n);voidoutlong(int n){ cout<< n << " "; }int main(){long a[10] = { 1, 3, 2, 4, 7, 6, 3, 4, 8, 10 };intnums = reduce(a, 10);cout<< "Numbers after reduce: " <<nums<<endl;system("pause");return 0;}int reduce(long ar[], int n){list<long>arr;arr.insert(arr.begin(), ar, ar + n);arr.sort();arr.unique();for_each(arr.begin(), arr.end(), outlong);cout<<endl;returnarr.size();}5、//Reduce.cpp#include <iostream>#include <list>#include <algorithm>#include <string>using namespace std;template<class T>int reduce(T ar[], int n);template<class T>voidoutlong(T n){ cout<< n << " "; }int main(){long a[10] = { 1, 3, 2, 4, 7, 6, 3, 4, 8, 10 };int nums1 = reduce(a, 10);cout<< "Numbers after reduce: " << nums1 <<endl;string b[10] = { "qwe", "qwe", "ret", "tyu", "dfg", "jkl", "iok", "kjl", "ads", "def" };int nums2 = reduce(b, 10);cout<< "Numbers after reduce: " << nums2 <<endl;system("pause");return 0;}template<class T>int reduce(T ar[], int n){list<T>arr;arr.insert(arr.begin(), ar, ar + n);arr.sort();arr.unique();for_each(arr.begin(), arr.end(), outlong<T>);cout<<endl;returnarr.size();}6、//bank.cpp#include <iostream>#include <cstdlib>#include <queue>#include <ctime>using namespace std;class Customer{private:long arrive;intprocesstime;public:Customer(){ arrive = processtime = 0; }void set(long when){processtime = rand() % 3 + 1;arrive = when;}long when()const{ return arrive; }intptime()const{ return processtime; }};typedef Customer Item;constint MIN_PER_HR = 60;boolnewcustomer(double x);int main(){srand(time(0));cout<< "Case Study: Bank of Heather Automatic Teller\n";cout<< "Enter maximum size of queue: ";intqs;cin>>qs;queue<Item> line;cout<< "Enter the number of simulation hours: ";int hours;cin>> hours;longcyclelimit = MIN_PER_HR*hours;cout<< "Enter the average number of customers per hour: ";doubleperhour;cin>>perhour;doublemin_per_cust;min_per_cust = MIN_PER_HR / perhour;Item temp;longturnaways = 0;long customers = 0;long served = 0;longsum_line = 0;intwait_time = 0;longline_wait = 0;for (int cycle = 0; cycle <cyclelimit; cycle++){if (newcustomer(min_per_cust)){if (line.size() == qs)turnaways++;else{customers++;temp.set(cycle);line.push(temp);}}if (wait_time<= 0 && !line.empty()){line.pop();wait_time = temp.ptime();line_wait += cycle - temp.when();served++;}if (wait_time> 0)wait_time--;sum_line += line.size();}if (customers > 0){cout<< "customers accepted: " << customers <<endl;cout<< " customers served: " << served <<endl;cout<< " turnaways: " <<turnaways<<endl;cout<< "average queue size: ";cout.precision(2);cout.setf(ios_base::fixed, ios_base::floatfield);cout<< (double)sum_line / cyclelimit<<endl;cout<< " average wait time: "<< (double)line_wait / served << " minutes\n"; }elsecout<< "No customers!\n";cout<< "Done!\n";system("pause");return 0;}boolnewcustomer(double x){return (rand()*x / RAND_MAX < 1);}7、//Lotto.cpp#include <vector>#include <iostream>#include <iterator>#include <algorithm>#include <ctime>using namespace std;vector<int> Lotto(int l1, int l2);void Show(int n);int main(){vector<int> winners;winners = Lotto(51, 6);for_each(winners.begin(), winners.end(), Show);system("pause");return 0;}vector<int> Lotto(int l1, int l2){vector<int>nums;vector<int> nums2;srand(time(0));for (inti = 0; i< l1; i++)nums.push_back(i);random_shuffle(nums.begin(), nums.end());for (inti = 0; i< l2; i++)nums2.push_back(nums[rand() % l1 + 1]);return nums2;}void Show(int n){cout<< "The winner is " << n <<endl;}8、//name.cpp#include <iostream>#include <string>#include <set>#include <algorithm>#include <iterator>int main(){using namespace std;ostream_iterator<string, char>out(cout, " ");string fname1;set<string> A;cout<< "Enter Mat's friends(quit to quit): \n";getline(cin, fname1);while (fname1 != "quit"){A.insert(fname1);getline(cin, fname1);}cout<< "Mat's friends: \n";copy(A.begin(), A.end(), out);cout<<endl;string fname2;set<string> B;cout<< "Enter Pat's friends(quit to quit): \n";getline(cin, fname1);while (fname1 != "quit"){B.insert(fname1);getline(cin, fname1);}cout<< "Pat's friends: \n";copy(B.begin(), B.end(), out);cout<<endl;cout<< "Union of Mat and Pat's friends: ";set_union(A.begin(), A.end(), B.begin(), B.end(), out);cout<<endl;system("pause");return 0;}9、//sorttime.cpp#include <iostream>#include <vector>#include <list>#include <ctime>#include <iterator>#include <algorithm>using namespace std;constint Size = 10000;int main(){clock_t start, end;vector<int> vi0(Size);list<int> li(Size);srand(time(0));for (inti = 0; i< Size; i++){vi0[i] = rand() % Size;}copy(vi0.begin(), vi0.end(), back_inserter(li));vector<int> vi(vi0);start = clock();sort(vi.begin(), vi.end());end = clock();cout<< "Time of Sort Vector:" << (double)(end - start) / CLOCKS_PER_SEC <<endl;start = clock();li.sort();end = clock();cout<< "Time of Sort List:" << (double)(end - start) / CLOCKS_PER_SEC <<endl;copy(vi0.begin(), vi0.end(), back_inserter(li));start = clock();copy(li.begin(), li.end(), back_inserter(vi));sort(vi.begin(), vi.end());copy(vi.begin(), vi.end(), back_inserter(li));end = clock();cout<< "Time of Sort List2:" << (double)(end - start) / CLOCKS_PER_SEC <<endl;system("pause");return 0;}10、//vect.cpp#include <iostream>#include <string>#include <vector>#include <algorithm>#include <memory>#include <cstdlib>using namespace std;struct Review{string title;int rating;double price;};bool operator<(constshared_ptr<Review>&r1, constshared_ptr<Review>&r2); boolworseThan(constshared_ptr<Review>&r1, constshared_ptr<Review>&r2); boolbetterThan(constshared_ptr<Review>&r1, constshared_ptr<Review>&r2); boolworseThanP(constshared_ptr<Review>&r1, constshared_ptr<Review>&r2); boolbetterThanP(constshared_ptr<Review>&r1, constshared_ptr<Review>&r2); boolFillReview(shared_ptr<Review>&rr);shared_ptr<Review>make_Review();voidShowReview(shared_ptr<Review>&rr);int main(){vector<shared_ptr<Review>> books;shared_ptr<Review>temp(new Review);while (FillReview(temp)){books.push_back(temp);temp = make_Review();}if (books.size() > 0){vector<shared_ptr<Review>>sbook(books);cout<< "Thank you. You entered the following:\n"<<books.size() << " ratings:\n" << "Rating\tBook\tPrice\n";for_each(books.begin(), books.end(), ShowReview);charch;cout<< "Enter measures of sort:\no to old";cout<< "t to title, r to down rating,\nR to up rating""p to down price,P to up price, f(F) to shuffle,\nq to quit:";cin>>ch;while (tolower(ch) != 'q'){switch (ch){case'o':cout<< "Not Sort:\nRating\tBook\tPrice\n";for_each(books.begin(), books.end(), ShowReview);break;case't':sort(sbook.begin(), sbook.end());cout<< "Sorted by title:\nRating\tBook\tPrice\n";for_each(sbook.begin(), sbook.end(), ShowReview);break;case'r':sort(sbook.begin(), sbook.end(), worseThan);cout<< "Sorted by down rating:\nRating\tBook\tPrice\n";for_each(sbook.begin(), sbook.end(), ShowReview);break;case'R':sort(sbook.begin(), sbook.end(), betterThan);cout<< "Sorted by up rating:\nRating\tBook\tPrice\n";for_each(sbook.begin(), sbook.end(), ShowReview);break;case'p':sort(sbook.begin(), sbook.end(), worseThanP);cout<< "Sorted by down price:\nRating\tBook\tPrice\n";for_each(sbook.begin(), sbook.end(), ShowReview);break;case'P':sort(sbook.begin(), sbook.end(), betterThanP);cout<< "Sorted by up price:\nRating\tBook\tPrice\n";for_each(sbook.begin(), sbook.end(), ShowReview);break;case'F':case'f':random_shuffle(sbook.begin(), sbook.end());cout<< "After shuffling:\nRating\tBook\n";for_each(sbook.begin(), sbook.end(), ShowReview);break;default:cout<< "Error input!Input again!";break;}cout<< "Enter the next measures:\no to old";cout<< "t to title, r to down rating,\nR to up rating""p to down price,P to up price, q to quit:";cin>>ch;}}elsecout<< "No entries. ";cout<< "Bye.\n";system("pause");return 0;}bool operator<(constshared_ptr<Review>&r1, constshared_ptr<Review>&r2) {if (r1->title < r2->title)return true;else if (r1->title == r2->title&&r1->rating < r2->rating)return true;elsereturn false;}boolworseThan(constshared_ptr<Review>&r1, constshared_ptr<Review>&r2) {if (r1->rating < r2->rating)return true;elsereturn false;}boolbetterThan(constshared_ptr<Review>&r1, constshared_ptr<Review>&r2) {if (r1->rating > r2->rating)return true;elsereturn false;}boolworseThanP(constshared_ptr<Review>&r1, constshared_ptr<Review>&r2) {if (r1->price < r2->price)return true;elsereturn false;}boolbetterThanP(constshared_ptr<Review>&r1, constshared_ptr<Review>&r2) {if (r1->price > r2->price)return true;elsereturn false;}shared_ptr<Review>make_Review(){returnshared_ptr<Review>(new Review);}boolFillReview(shared_ptr<Review>&rr){cout<< "Enter book title (quit to quit): ";getline(cin, rr->title);if (rr->title == "quit")return false;cout<< "Enter book rating: ";cin>>rr->rating;cout<< "Enter book price: ";cin>>rr->price;if (!cin)return false;while (cin.get() != '\n')continue;return true;}voidShowReview(shared_ptr<Review>&rr){cout<<rr->rating << "\t" <<rr->title << "\t" <<rr->price <<endl;}。

C++primerplus(第6版)中文版编程练习答案第17章

C++primerplus(第6版)中文版编程练习答案第17章

C++primerplus(第6版)中文版编程练习答案第17章1、//count.cpp#includeusing namespace std;int main(){charch;int count = 0;cout<< "Enter a string($ to quit):\n";while (cin.get(ch)){if (ch != '$'){count++;cout<<ch;< bdsfid="119" p=""></ch;<>}else{cin.putback(ch);break;}}cout<< "Count is " << count <<endl;< bdsfid="128" p=""></endl;<>system("pause");return 0;}2、//filein.cpp#include#include#includeint main(intargc, char *argv[]){using namespace std;if (argc == 1){cerr<< "Usage: " <<="" p="">exit(EXIT_FAILURE);}ofstreamfout(argv[1], ios::out|ios::app);{cerr<< "Can't open " <<="" p="">exit(EXIT_FAILURE);}charch;cout<< "Enter a string: \n";while (cin.get(ch)){if (ch != '\n')fout<<ch;< bdsfid="161" p=""></ch;<> elsebreak;}fout<<endl;< bdsfid="166" p=""></endl;<> fout.close();system("pause");return 0;3、//copy.cpp#include#include#includeint main(intargc, char *argv[]){using namespace std;if (argc == 1){cerr<< "Usage: " <<="" p="">exit(EXIT_FAILURE);}ifstream fin;charch;fin.open(argv[1], ios::in);if (!fin.is_open()){cerr<< "Could not open " <<<endl;<="" bdsfid="194" p=""> exit(EXIT_FAILURE);}ofstreamfout(argv[2], ios::out | ios::trunc);{cerr<< "Could not open " <<<endl;<="" bdsfid="200" p=""> exit(EXIT_FAILURE);}cout<< "Here are the current contents of th "<<="" p="">while (fin.get(ch))cout<<ch;< bdsfid="209" p=""></ch;<> fout<<ch;< bdsfid="211" p=""></ch;<>}fin.close();fout.close();system("pause");return 0;}//a.txtAbcdefghijklmnopqrstuvwxyz4、//copy_cat.cpp#include#include#include#includeusing 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);ofstreamfout;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;< bdsfid="245" p=""></endl;<>exit(EXIT_FAILURE);}if (!fout.is_open()){cerr<< "Can't open " << file3 <<endl;< bdsfid="251" p=""></endl;<>exit(EXIT_FAILURE);}while (!fin1.eof() && !fin2.eof()){getline(fin1, s1);cout<< "File1 " << s1 <<endl;< bdsfid="258" p=""></endl;<>getline(fin2, s2);cout<< "File2 " << s2 <<endl;< bdsfid="261" p=""></endl;<>fout<< s1 << " " << s2 <<endl;< bdsfid="263" p=""></endl;<>}while (!fin1.eof()){getline(fin1, s1);cout<< "More file1 " << s1 <<endl;< bdsfid="269" p=""></endl;<>fout<< s1 <<endl;< bdsfid="271" p=""></endl;<>}while (!fin2.eof())getline(fin2, s2);cout<< "More file2 " << s2 <<endl;< bdsfid="277" p=""></endl;<>fout<< s2 <<endl;< bdsfid="279" p=""></endl;<>}fin1.close();fin2.close();fout.close();system("pause");return 0;}//a.txteggs kites donutsballoons hammersstones//b.txtzero lassitudefinance drama5、//name.cpp#include#include#include#include#include#includeconst char *file1 = "mat.dat";const char *file2 = "pat.dat";const char *file3 = "matnpat.dat";int main(){using namespace std;string fname1;set A;ifstreamfinA, finB;finA.open(file1);finB.open(file2);ofstreamfout;ostream_iteratorout1(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;< bdsfid="327" p=""></endl;<>exit(EXIT_FAILURE);}if (!fout.is_open()){cerr<< "Can't open " << file3 <<endl;< bdsfid="333" p=""></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;< bdsfid="344" p=""></endl;<> string fname2;set B;while (!finB.eof()){getline(finB, fname2);B.insert(fname2);}cout<< "Pat's friends: \n";copy(B.begin(), B.end(), out1);cout<<endl;< bdsfid="356" p=""></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;< bdsfid="361" p=""></endl;<> finA.close();finB.close();fout.close();system("pause");return 0;}6、//emp.h#ifndef EMP_H_#define EMP_H_#include#include#includeusing namespace std;enumclasstype{ Employee, Manager, Fink, Highfink };classabstr_emp{private:stringfname;stringlname;string job;public:abstr_emp();abstr_emp(const string &fn, const string &ln,const string &j);virtual void ShowAll()const;virtual void SetAll();friendostream&operator<<(ostream&os,constabstr_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:intinchargeof;protected:intInChargeOf()const { return inchargeof; }int&InChargeOf(){ return inchargeof; } public:manager();manager(const string &fn, const string &ln, const string &j, intico = 0);manager(constabstr_emp&e, intico = 0);manager(const manager &m);virtual void ShowAll()const;virtual void SetAll();virtual void writeall(ofstream&ofs);virtual void getall(ifstream&ifs);voidgetInCharge(){cout<< "Enter inchargeof: ";cin>>inchargeof;}voidwriteInCharge(ofstream&ofs){ofs<<inchargeof<<endl;< bdsfid="428" p=""></inchargeof<<endl;<>}voidreadInCharge(ifstream&ifs){ifs>>inchargeof;}};class fink :virtual public abstr_emp{private:stringreportsto;protected:const string ReportsTo()const{ return reportsto; }string&ReportsT o(){ return reportsto; }public:fink();fink(const string &fn, const string &ln,const string &j, const string &rpo);fink(constabstr_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);voidgetReportsTo(){cout<< "Enter reportsto: ";cin>>reportsto;}voidwriteReportsT o(ofstream&ofs){ofs<<reportsto<<endl;< bdsfid="458" p=""></reportsto<<endl;<>}voidreadReportsT o(ifstream&ifs){ifs>>reportsto;}};classhighfink :public manager, public fink{public:highfink();highfink(const string &fn, const string &ln,const string &j, const string &rpo, intico = 0);highfink(constabstr_emp&e, const string &rpo, intico = 0);highfink(const fink &f, intico = 0);highfink(const manager &m, const string &rpo);highfink(consthighfink&h);virtual void ShowAll()const;virtual void SetAll();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){}voidabstr_emp::ShowAll()const{cout<< "Firstname: " <<fname<<endl;< bdsfid="491" p=""></fname<<endl;<>cout<< "Lastname: " <<lname<<endl;< bdsfid="493" p=""></lname<<endl;<>cout<< "Job is: " << job <<endl;< bdsfid="495" p=""></endl;<>}voidabstr_emp::SetAll(){cout<< "Enter firstname: ";getline(cin, fname);cout<< "Enter lastname: ";getline(cin, lname);cout<< "Enter position: ";getline(cin, job);}ostream&operator<<(ostream&os, constabstr_emp&e){os<<e.fname<< "="" ",="" <<e.job<<endl;<="" <<e.lname<<="" bdsfid="509" p=""></e.fname<<> returnos;}abstr_emp::~abstr_emp(){}{ofs<<fname<< "\n"="" "\n";="" <<="" <<lname<<="" bdsfid="517" job="" p="" }<=""></fname<<>voidabstr_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;< bdsfid="541" p=""></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, intico) : abstr_emp(fn, ln, j), inchargeof(ico) {}manager::manager(constabstr_emp&e, intico) : abstr_emp(e), inchargeof(ico) {}manager::manager(const manager &m) : abstr_emp(m){}void manager::ShowAll()const{abstr_emp::ShowAll();cout<< "Inchargeof: " <<<endl;<="" bdsfid="564" p="">}void manager::SetAll(){abstr_emp::SetAll();cout<< "Enter inchargeof: ";(cin>>inchargeof).get();}void manager::writeall(ofstream&ofs){ofs<< Manager <<endl;< bdsfid="575" p=""></endl;<>abstr_emp::writeall(ofs);ofs<<inchargeof<<endl;< bdsfid="578" p=""></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(constabstr_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: " <<<endl;<="" bdsfid="601" p="">}void fink::SetAll(){abstr_emp::SetAll();cout<< "Enter reportsto: ";cin>>reportsto;}void fink::writeall(ofstream&ofs){ofs<< Fink <<endl;< bdsfid="612" p=""></endl;<>abstr_emp::writeall(ofs);ofs<<reportsto<<endl;< bdsfid="615" p=""></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, intico) : abstr_emp(fn, ln, j), manager(fn, ln, j, ico), fink(fn, ln, j, rpo){highfink::highfink(constabstr_emp&e, const string &rpo, intico) : abstr_emp(e), manager(e, ico), fink(e, rpo){}highfink::highfink(const fink &f, intico) : 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(consthighfink&h) : abstr_emp(h), manager(h), fink(h){}voidhighfink::ShowAll()const{abstr_emp::ShowAll();cout<< "InChargeOf: ";cout<< manager::InChargeOf() <<endl;< bdsfid="645" p=""></endl;<>cout<< "ReportsT o: ";cout<< fink::ReportsT o() <<endl;< bdsfid="648" p=""></endl;<>}voidhighfink::SetAll(){abstr_emp::SetAll();manager::getInCharge();fink::getReportsTo();}voidhighfink::writeall(ofstream&ofs){ofs<<highfink<<endl;< bdsfid="659" p=""></highfink<<endl;<>abstr_emp::writeall(ofs);manager::writeInCharge(ofs);fink::writeReportsT o(ofs);}voidhighfink::getall(ifstream&ifs){abstr_emp::getall(ifs);manager::readInCharge(ifs);fink::readReportsT o(ifs);}//useemp.cpp#include "emp.h"constint MAX = 10;const char *file = "a.txt";int main(void){abstr_emp *pc[MAX];charch;ifstream fin;fin.open(file);inti = 0;if (fin.is_open()){cout<< "Here are the current contents of the " << file <<" file:\n";intclasstype;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;caseHighfink:pc[i] = new highfink;break;}cout<<classtype<<endl;< bdsfid="705" p=""></classtype<<endl;<>pc[i]->getall(fin);pc[i++]->ShowAll();}}fin.close();ofstreamfout;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";intclasstype;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;caseHighfink:pc[i] = new highfink;break;}cout<<classtype<<endl;< bdsfid="784" p=""></classtype<<endl;<>pc[i]->getall(fin);pc[i++]->ShowAll();}}cout<< "Done.\n";system("pause");return 0;}7、//vcopy.cpp#include#include#include#include#include#include#includeusing namespace std;voidShowStr(const string &);voidGetStrs(ifstream&, vector&);class Store{ofstream&fout;public:Store(ofstream&os) :fout(os){}void operator()(const string &str);};void Store::operator()(const string &str){size_tlen = str.size();fout.write((char *)&len, sizeof(size_t)); fout.write(str.data(), len);}int main(){vectorvostr;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); ofstreamfout("strings.dat", ios_base::out | ios_base::binary); for_each(vostr.begin(), vostr.end(), Store(fout));fout.close();vectorvistr;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;}voidShowStr(const string &str){cout<<str<<endl;< bdsfid="856" p=""></str<<endl;<> }voidGetStrs(ifstream&fin, vector&str){char *s;size_tlen;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版)中文版编程练习答案第15章

C++ primer plus(第6版)中文版编程练习答案第15章

1、//tv.h#ifndef TV_H_#define TV_H_#include <iostream>using namespace std;classTv{friend class Remote;public:enum { Off, On };enum { MinVal, MaxVal = 20 };enum { Antenna, Cable };enum { TV, DVD };enum { USUAL, EXCHANGE };Tv(int s = Off, int mc = 125) :state(s), volume(5),maxchannel(mc), channel(2), mode(Cable), input(TV){} ~Tv(){}voidonoff(){ state = (state == On) ? Off : On; }boolison()const{ return state == On; }boolvolup();boolvoldown();voidchanup();voidchandown();voidset_mode(){ mode = (mode == Antenna) ? Cable : Antenna; } voidset_input(){ input = (input == TV) ? DVD : TV; }void settings()const;voidset_rmode(Remote &r);private:int state;int volume;intmaxchannel;int channel;int mode;int input;};class Remote{private:friend class Tv;enum { USUAL, EXCHANGE };int mode;intfmode;public:Remote(int m = Tv::TV, int f = USUAL) :mode(m), fmode(f){}boolvolup(Tv&t){ return t.volup(); }boolvoldown(Tv&t){ return t.voldown(); }voidonoff(Tv&t){ t.onoff(); }voidchanup(Tv&t){ t.chanup(); }voidchandown(Tv&t){ t.chandown(); }voidset_chan(Tv&t, int c){ t.channel = c; }voidset_mode(Tv&t){ t.set_mode(); }voidset_input(Tv&t){ t.set_input(); }voidmode_show()const{ cout<< "Remote pretent mode is " <<fmode<<endl; } };inline void Tv::set_rmode(Remote &r){if (ison()){r.fmode = Remote::EXCHANGE;r.mode_show();}}#endif//tvfm.h#ifndef TVFM_H_#define TVFM_H_#include <iostream>using namespace std;classTv;class Remote{public:enum State{ Off, On };enum { MinVal, MaxVal = 20 };enum { Antenna, Cable };enum { TV, DVD };private:int mode;public:Remote(int m = TV) :mode(m){}boolvolup(Tv&t);boolvoldown(Tv&t);voidonoff(Tv&t);voidchanup(Tv&t);voidchandown(Tv&t);voidset_chan(Tv&t, int c);voidset_mode(Tv&t);voidset_input(Tv&t);};classTv{public:friend void Remote::set_chan(Tv&t, int c);enum State{ Off, On };enum { MinVal, MaxVal = 20 };enum { Antenna, Cable };enum { TV, DVD };Tv(int s = Off, int mc = 125) :state(s), volume(5),maxchannel(mc), channel(2), mode(Cable), input(TV){} ~Tv(){}voidonoff(){ state = (state == On) ? Off : On; }boolison()const{ return state == On; }boolvolup();boolvoldown();voidchanup();voidchandown();voidset_mode(){ mode = (mode == Antenna) ? Cable : Antenna; } voidset_input(){ input = (input == TV) ? DVD : TV; }void settings()const;private:int state;int volume;intmaxchannel;int channel;int mode;int input;};inlinebool Remote::volup(Tv&t){ return t.volup(); }inlinebool Remote::voldown(Tv&t){ return t.voldown(); } inline void Remote::onoff(Tv&t){ t.onoff(); }inline void Remote::chanup(Tv&t){ t.chanup(); }inline void Remote::chandown(Tv&t){ t.chandown(); } inline void Remote::set_chan(Tv&t, int c){ t.channel = c; } inline void Remote::set_mode(Tv&t){ t.set_mode(); } inline void Remote::set_input(Tv&t){ t.set_input(); }#endif//tv.cpp#include "tv.h"//#include "tvfm.h"boolTv::volup(){if (volume <MaxVal){volume++;return true;}elsereturn false;}boolTv::voldown(){if (volume>MinVal){volume--;return true;}elsereturn false;}voidTv::chanup(){if (channel <maxchannel)channel++;elsechannel = 1;}voidTv::chandown(){if (channel>1)channel--;elsechannel = maxchannel;}voidTv::settings()const{cout<< "TV is " << (state == Off ? "Off" : "On") <<endl;if (state == On){cout<< "Volume setting = " << volume <<endl;cout<< "Channel setting = " << channel <<endl;cout<< "Mode = " << (mode == Antenna ? "antenna" : "cable") <<endl;cout<< "Input = " << (input == TV ? "TV" : "DVD") <<endl;}}//use_tv.cpp#include "tv.h"int main(){Tv s42;Remote grey;grey.mode_show();cout<< "Initial settings for 42\" TV:\n";s42.settings();s42.onoff();s42.chanup();cout<< "\nAdjusted settings for 42\" TV:\n";s42.settings();s42.set_rmode(grey);grey.set_chan(s42, 10);grey.volup(s42);grey.volup(s42);cout<< "\n42\" settings after using remote:\n";s42.settings();Tvs58(Tv::On);s58.set_mode();grey.set_chan(s58, 28);cout<< "\n58\" settings:\n";s58.settings();s58.set_rmode(grey);system("pause");return 0;}2、//exc_mean.h#ifndef EXC_MEAN_H_#define EXC_MEAN_H_#include <iostream>#include <cmath>#include <stdexcept>#include <string>using namespace std;classbad_hmean :public logic_error{private:string name;public:explicitbad_hmean(const string &n = "hmean", const string &s = "Error in hmean()\n");stringmesg();virtual ~bad_hmean()throw(){}};bad_hmean::bad_hmean(const string &n, const string &s) :name(n), logic_error(s){}inline string bad_hmean::mesg(){return "hmean() arguments a=-b should be div a+b=0!\n";}classbad_gmean :public logic_error{private:string name;public:explicitbad_gmean(const string &n = "gmean", const string &s = "Error in gmean()\n");stringmesg();virtual ~bad_gmean()throw(){}};bad_gmean::bad_gmean(const string &n, const string &s) :name(n), logic_error(s){inline string bad_gmean::mesg(){return "gmean() arguments should be >= 0\n";}#endif//error.cpp#include "exc_mean.h"doublehmean(double a, double b);doublegmean(double a, double b);int main(){double x, y, z;cout<< "Enter two numbers:";while (cin>> x >> y){try{z = hmean(x, y);cout<< "Harmonic mean of " << x << " and " << y<<" is " << z <<endl;cout<< "Geomettric mean of " << x << " and " << y<<" is " <<gmean(x, y) <<endl;cout<< "Enter next set of numbers <q to quit>: ";}catch (bad_hmean&bg){cout<<bg.what();cout<< "Error message: \n" <<bg.mesg() <<endl;cout<< "Try again.\n";continue;}catch (bad_gmean&hg){cout<<hg.what();cout<< "Error message: \n" <<hg.mesg() <<endl;cout<< "Sorry, you don't get to play and more.\n";break;}}cout<< "Bye!\n";system("pause");return 0;}doublehmean(double a, double b){if (a == -b)throwbad_hmean();return 2.0*a*b / (a + b);}doublegmean(double a, double b){if (a < 0 || b < 0)throwbad_gmean();returnsqrt(a*b);}3、//exc_mean.h#ifndef EXC_MEAN_H_#define EXC_MEAN_H_#include <iostream>#include <cmath>#include <stdexcept>#include <string>using namespace std;classbad_hmean :public logic_error{private:string name;public:double v1;double v2;explicitbad_hmean(double a = 0, double b = 0,const string &s = "Error in hmean()\n");voidmesg();virtual ~bad_hmean()throw(){}};bad_hmean::bad_hmean(double a, double b, const string &s) :v1(a), v2(b), logic_error(s){name = "hmean";}inline void bad_hmean::mesg(){cout<< name << "(" << v1 << ", " << v2<< ") arguments a=-b should be div a+b=0!\n";}classbad_gmean :public bad_hmean{private:string name;public:explicitbad_gmean(double a = 0, double b = 0,const string &s = "Error in gmean()\n");voidmesg();virtual ~bad_gmean()throw(){}};bad_gmean::bad_gmean(double a, double b, const string &s):bad_hmean(a, b, s){name = "gmean";}inline void bad_gmean::mesg(){cout<< name << "(" <<bad_hmean::v1 << ", " <<bad_hmean::v2 << ") arguments should be >= 0\n";}#endif//error.cpp#include "exc_mean.h"doublehmean(double a, double b);doublegmean(double a, double b);int main(){double x, y, z;cout<< "Enter two numbers:";while (cin>> x >> y){try{z = hmean(x, y);cout<< "Harmonic mean of " << x << " and " << y<<" is " << z <<endl;cout<< "Geomettric mean of " << x << " and " << y<<" is " <<gmean(x, y) <<endl;cout<< "Enter next set of numbers <q to quit>: ";}catch (bad_gmean&hg){cout<<hg.what();cout<< "Error message: \n";hg.mesg();cout<<endl;cout<< "Sorry, you don't get to play and more.\n";break;}catch (bad_hmean&bg){cout<<bg.what();cout<< "Error message: \n";bg.mesg();cout<<endl;cout<< "Try again.\n";continue;}}cout<< "Bye!\n";system("pause");return 0;}doublehmean(double a, double b){if (a == -b)throwbad_hmean();return 2.0*a*b / (a + b);}doublegmean(double a, double b){if (a < 0 || b < 0)throwbad_gmean();returnsqrt(a*b);}4、//sales.h#ifndef SALES_H_#define SALES_H_#include <stdexcept>#include <string>#include <cstring>#include <iostream>#include <cstdlib>using namespace std;class Sales{public:enum { MONTHS = 12 };classbad_index:publiclogic_error{private:int bi;public:explicitbad_index(int ix, const string &s = "Index error in Sales object\n");intbi_val()const { return bi; }virtual ~bad_index()throw(){}};explicit Sales(intyy = 0);Sales(intyy, const double *gr, int n);virtual ~Sales(){}int Year()const { return year; }virtual double operator[](inti)const;virtual double &operator[](inti);private:double gross[MONTHS];int year;};classLabeledSales :public Sales{public:classnbad_index :public Sales::bad_index{private:std::stringlbl;public:nbad_index(const string &lb, int ix,const string &s = "Index error in LabeledSales object\n");const string &label_val()const { return lbl; }virtual ~nbad_index()throw(){}};explicitLabeledSales(const string &lb = "none", intyy = 0);LabeledSales(const string &lb, intyy, const double *gr, int n);virtual ~LabeledSales(){}const string &Label()const { return label; }virtual double operator[](inti)const;virtual double &operator[](inti);private:string label;};#endif//sales.cpp#include "sales.h"Sales::bad_index::bad_index(int ix,const string &s) :logic_error(s), bi(ix){}Sales::Sales(intyy){year = yy;for (inti = 0; i< MONTHS; ++i)gross[i] = 0;}Sales::Sales(intyy, const double *gr, int n){year = yy;intlim = (n < MONTHS) ? n : MONTHS;inti;for (i = 0; i<lim; ++i)gross[i] = gr[i];for (; i< MONTHS; ++i)gross[i] = 0;}double Sales::operator[](inti)const{if (i< 0 || i>= MONTHS)throwbad_index(i);return gross[i];}double&Sales::operator[](inti){if (i< 0 || i>= MONTHS)throwbad_index(i);return gross[i];}LabeledSales::nbad_index::nbad_index(const string &lb, int ix,const string &s) :Sales::bad_index(ix, s){lbl = lb;}LabeledSales::LabeledSales(const string &lb, intyy) : Sales(yy){label = lb;}LabeledSales::LabeledSales(const string &lb, intyy, const double *gr, int n) : Sales(yy, gr, n) {label = lb;}doubleLabeledSales::operator[](inti)const{if (i< 0 || i>= MONTHS)thrownbad_index(Label(), i);return Sales::operator[](i);}double&LabeledSales::operator[](inti){if (i< 0 || i>= MONTHS)thrownbad_index(Label(), i);return Sales::operator[](i);}//use_sales.cpp#include "sales.h"int main(){double vals1[12] ={1220, 1100, 1122, 2212, 1232, 2334,2884, 2393, 3302, 2922, 3002, 3544};double vals2[12] ={12, 11, 22, 21, 32, 24,28, 29, 33, 29, 32, 35};Sales sales1(2011, vals1, 12);LabeledSalessales2("Blogstar", 2012, vals2, 12);Sales::bad_index *s;LabeledSales::nbad_index *l;cout<< "First try block:\n";try{inti;cout<< "Year = " << sales1.Year() <<endl;for (i = 0; i< 12; ++i){cout<< sales1[i] << ' ';if (i % 6 == 5)cout<<endl;}cout<< "Year = " << sales2.Year() <<endl;cout<< "Label = " << bel() <<endl;for (i = 0; i<= 12; ++i){cout<< sales2[i] << ' ';if (i % 6 == 5)cout<<endl;}cout<< "End of try block 1.\n";}catch (logic_error&bad){cout<<bad.what();if (l = dynamic_cast<LabeledSales::nbad_index *>(&bad)) {cout<< "Comany: " << l->label_val() <<endl;cout<< "bad index: " << l->bi_val() <<endl;}else if (s = dynamic_cast<Sales::bad_index *>(&bad))cout<< "bad index: " << s->bi_val() <<endl;}cout<< "\nNext try block:\n";try{sales2[2] = 37.5;sales1[20] = 23345;cout<< "End of try block 2.\n";}catch (logic_error&bad){cout<<bad.what();if (l = dynamic_cast<LabeledSales::nbad_index *>(&bad)){cout<< "Comany: " << l->label_val() <<endl;cout<< "bad index: " << l->bi_val() <<endl;}else if (s = dynamic_cast<Sales::bad_index *>(&bad))cout<< "bad index: " << s->bi_val() <<endl;}cout<< "done\n";system("pause");return 0;}。

C++-primer-plus(第6版)中文版编程练习答案第13章

C++-primer-plus(第6版)中文版编程练习答案第13章

//cdplayer.h#ifndef CDPLAYER_H_#define CDPLAYER_H_#include <iostream>#include <string>using namespace std;class Cd{private:char performers[50];char label[20];int selections;double playtime;public:Cd(char *s1, char *s2, int n, double x);Cd(const Cd &d);Cd(){}virtual ~Cd();virtual void Report()const;Cd &operator=(const Cd &d);};class Classic :public Cd{private:char main_music[50];public:Classic(){}Classic(char *m, char *s1, char *s2, int n, double x);Classic(char *m, const Cd &c);~Classic();Classic &operator=(const Classic &c);virtual void Report()const;};#endif//cdplayer.cpp#include "cdplayer.h"Cd::Cd(char *s1, char *s2, int n, double x)strcpy_s(performers, strlen(s1) + 1, s1);strcpy_s(label, strlen(s2) + 1, s2);selections = n;playtime = x;}Cd::Cd(const Cd &d){strcpy_s(performers, 50, d.performers);strcpy_s(label, 20, bel);selections = d.selections;playtime = d.playtime;}Cd::~Cd(){}void Cd::Report()const{cout << "Performers: " << performers << endl;cout << "Label: " << label << endl;cout << "Selections: " << selections << endl;cout << "Playtime: " << playtime << endl;}Cd &Cd::operator=(const Cd &d){if (this == &d)return *this;strcpy_s(performers, 50, d.performers);strcpy_s(label, 20, bel);selections = d.selections;playtime = d.playtime;return *this;}Classic::Classic(char *m, char *s1, char *s2, int n, double x) :Cd(s1, s2, n, x) {strcpy_s(main_music, strlen(m) + 1, m);}Classic::Classic(char *m, const Cd &c) : Cd(c){strcpy_s(main_music, strlen(m) + 1, m);}Classic::~Classic(){}Classic &Classic::operator=(const Classic &c){if (this == &c)return *this;Cd::operator=(c);strcpy_s(main_music, 50, c.main_music);return *this;}void Classic::Report()const{Cd::Report();cout << "Main Music: " << main_music << endl;}//main.cpp#include "cdplayer.h"void Bravo(const Cd &disk);int main(){Cd c1("Beatles", "Capito", 14, 35.5);Classic c2 = Classic("Piano Sonata in B flat, Fantasia in C", "Alfred Brendel", "Philips", 2, 57.17);Cd *pcd = &c1;cout << "Using object directly:\n";c1.Report();c2.Report();cout << "Using type cd * pointer to objects:\n";pcd->Report();pcd = &c2;pcd->Report();cout << "Calling a function with a Cd reference argument:\n";Bravo(c1);Bravo(c2);cout << "Testing assignment: ";Classic copy;copy = c2;copy.Report();system("pause");return 0;}void Bravo(const Cd &disk){disk.Report();}2、//cdplayer.h#ifndef CDPLAYER_H_#define CDPLAYER_H_#include <iostream>#include <string>using namespace std;class Cd{private:char *performers;char *label;int selections;double playtime;public:Cd(char *s1, char *s2, int n, double x);Cd(const Cd &d);Cd(){}virtual ~Cd();virtual void Report()const;Cd &operator=(const Cd &d);};class Classic :public Cd{private:char *main_music;public:Classic(){}Classic(char *m, char *s1, char *s2, int n, double x);Classic(char *m, const Cd &c);~Classic();Classic &operator=(const Classic &c);virtual void Report()const;};#endif//cdplayer.cpp#include "cdplayer.h"Cd::Cd(char *s1, char *s2, int n, double x){performers = new char[strlen(s1) + 1];label = new char[strlen(s2) + 1];strcpy_s(performers, strlen(s1) + 1, s1);strcpy_s(label, strlen(s2) + 1, s2);selections = n;playtime = x;}Cd::Cd(const Cd &d){performers = new char[strlen(d.performers) + 1];label = new char[strlen(bel) + 1];strcpy_s(performers, strlen(d.performers) + 1, d.performers);strcpy_s(label, strlen(bel) + 1, bel);selections = d.selections;playtime = d.playtime;}Cd::~Cd(){delete[]performers;delete[]label;}void Cd::Report()const{cout << "Performers: " << performers << endl;cout << "Label: " << label << endl;cout << "Selections: " << selections << endl;cout << "Playtime: " << playtime << endl;}Cd &Cd::operator=(const Cd &d){if (this == &d)return *this;delete[]performers;delete[]label;performers = new char[strlen(d.performers) + 1];label = new char[strlen(bel) + 1];strcpy_s(performers, strlen(d.performers) + 1, d.performers);strcpy_s(label, strlen(bel) + 1, bel);selections = d.selections;playtime = d.playtime;return *this;}Classic::Classic(char *m, char *s1, char *s2, int n, double x) :Cd(s1, s2, n, x) {main_music = new char[strlen(m) + 1];strcpy_s(main_music, strlen(m) + 1, m);}Classic::Classic(char *m, const Cd &c) : Cd(c){main_music = new char[strlen(m) + 1];strcpy_s(main_music, strlen(m) + 1, m);}Classic::~Classic(){delete[]main_music;}Classic &Classic::operator=(const Classic &c){if (this == &c)return *this;Cd::operator=(c);delete[]main_music;main_music = new char[strlen(c.main_music) + 1];strcpy_s(main_music, strlen(c.main_music) + 1, c.main_music);return *this;}void Classic::Report()const{Cd::Report();cout << "Main Music: " << main_music << endl;}//main.cpp#include "cdplayer.h"void Bravo(const Cd &disk);int main(){Cd c1("Beatles", "Capito", 14, 35.5);Classic c2 = Classic("Piano Sonata in B flat, Fantasia in C", "Alfred Brendel", "Philips", 2, 57.17);Cd *pcd = &c1;cout << "Using object directly:\n";c1.Report();c2.Report();cout << "Using type cd * pointer to objects:\n";pcd->Report();pcd = &c2;pcd->Report();cout << "Calling a function with a Cd reference argument:\n";Bravo(c1);Bravo(c2);cout << "Testing assignment: ";Classic copy;copy = c2;copy.Report();system("pause");return 0;}void Bravo(const Cd &disk){disk.Report();}3、//dma.h#ifndef DMA_H_#define DMA_H_#include <iostream>#include <string>using namespace std;class ABC{private:char *fullname;int level;public:ABC(const char *f = "null", int l = 0);ABC(const ABC &ab);ABC &operator=(const ABC &ab);virtual ~ABC();virtual void View() = 0;};class baseDMA :public ABC{private:char *label;int rating;public:baseDMA(const char *l = "null", int r = 0, const char *f = "null", int lv = 0);baseDMA(const baseDMA &rs);~baseDMA();baseDMA &operator=(const baseDMA &rs);virtual void View();};class lacksDMA :public ABC{private:enum{ COL_LEN = 40 };char color[COL_LEN];public:lacksDMA(const char *c = "blank", const char *f = "null", int lv = 0);lacksDMA(const char *c, const baseDMA &rs);virtual void View();};class hasDMA :public ABC{private:char *style;public:hasDMA(const char *s = "none", const char *f = "null", int lv = 0);hasDMA(const char *s, const ABC &rs);hasDMA(const hasDMA &hs);~hasDMA();hasDMA &operator=(const hasDMA &hs);virtual void View();};#endif//dma.cpp#include "dma.h"ABC::ABC(const char *f, int lv){fullname = new char[strlen(f) + 1];strcpy_s(fullname, strlen(f) + 1, f);level = lv;}ABC::ABC(const ABC &ab){fullname = new char[strlen(ab.fullname) + 1];strcpy_s(fullname, strlen(ab.fullname) + 1, ab.fullname);level = ab.level;}ABC::~ABC(){delete[]fullname;}ABC &ABC::operator=(const ABC &ab){if (this == &ab)return *this;delete[]fullname;fullname = new char[strlen(ab.fullname) + 1];strcpy_s(fullname, strlen(ab.fullname) + 1, ab.fullname);level = ab.level;return *this;void ABC::View(){cout << "Fullname: " << fullname << endl;cout << "Level: " << level << endl;}baseDMA::baseDMA(const char *l, int r, const char *f, int lv) :ABC(f, lv) {label = new char[strlen(l) + 1];strcpy_s(label, strlen(l) + 1, l);rating = r;}baseDMA::baseDMA(const baseDMA &rs) :ABC(rs){label = new char[strlen(bel) + 1];strcpy_s(label, strlen(bel) + 1, bel);rating = rs.rating;}baseDMA::~baseDMA(){delete[]label;}baseDMA &baseDMA::operator=(const baseDMA &rs){if (this == &rs)return *this;ABC::operator=(rs);delete[]label;label = new char[strlen(bel) + 1];strcpy_s(label, strlen(bel) + 1, bel);rating = rs.rating;return *this;}void baseDMA::View(){ABC::View();cout << "Label: " << label << endl;cout << "Rating: " << rating << endl;}lacksDMA::lacksDMA(const char *c, const char *f, int lv) :ABC(f, lv){strncpy_s(color, c, 39);color[39] = '\0';}lacksDMA::lacksDMA(const char *c, const baseDMA &rs) : ABC(rs) {strncpy_s(color, c, COL_LEN - 1);color[COL_LEN - 1] = '\0';}void lacksDMA::View(){ABC::View();cout << "Color: " << color << endl;}hasDMA::hasDMA(const char *s, const char *f, int lv) :ABC(f, lv) {style = new char[strlen(s) + 1];strcpy_s(style, strlen(s) + 1, s);}hasDMA::hasDMA(const char *s, const ABC &ab) :ABC(ab){style = new char[strlen(s) + 1];strcpy_s(style, strlen(s) + 1, s);}hasDMA::hasDMA(const hasDMA &hs) : ABC(hs){style = new char[strlen(hs.style) + 1];strcpy_s(style, strlen(hs.style) + 1, hs.style);}hasDMA::~hasDMA(){delete[]style;}hasDMA &hasDMA::operator=(const hasDMA &hs){if (this == &hs)return *this;ABC::operator=(hs);delete[]style;style = new char[strlen(hs.style) + 1];strcpy_s(style, strlen(hs.style) + 1, hs.style);return *this;}void hasDMA::View(){ABC::View();cout << "Style: " << style << endl;}//usedma.cpp#include "dma.h"int main(){baseDMA shirt("Portabelly", 8, "Jack", 1);lacksDMA balloon("red", "Blimpo", 4);hasDMA map("Mercator", "buffalo Keys", 5);cout << "Displaying baseDMA object:\n";shirt.View();cout << "Displaying lacksDMA object:\n";balloon.View();cout << "Displaying hasDMA object:\n";map.View();lacksDMA balloon2(balloon);cout << "Result of lacksDMA copy:\n";balloon2.View();hasDMA map2;map2 = map;cout << "Result of hasDMA assignment:\n";map2.View();system("pause");return 0;}4、//port.h#ifndef PORT_H_#define PORT_H_#include <iostream>#include <cstring>using namespace std;class Port{private:char *brand;char style[20];int bottles;public:Port(const char *br = "none", const char *st = "none", int b = 0);Port(const Port &p);virtual ~Port(){ delete[]brand; }Port &operator=(const Port &p);Port &operator+=(int b);Port &operator-=(int b);int BottleCount()const{ return bottles; }virtual void Show()const;friend ostream &operator<<(ostream &os, const Port &p);};class VintagePort :public Port{private:char *nickname;int year;public:VintagePort();VintagePort(const char *br, const char *st, int b, const char *nn, int y);VintagePort(const VintagePort &vp);~VintagePort(){ delete[]nickname; }VintagePort &operator=(const VintagePort &vp);void Show()const;friend ostream &operator<<(ostream &os, const VintagePort &vp);};#endif//port.cpp#include "port.h"Port::Port(const char *br, const char *st, int b){brand = new char[strlen(br) + 1];strcpy_s(brand, strlen(br) + 1, br);strcpy_s(style, strlen(st) + 1, st);bottles = b;}Port::Port(const Port &p){brand = new char[strlen(p.brand) + 1];strcpy_s(brand, strlen(p.brand) + 1, p.brand);strcpy_s(style, strlen(p.style) + 1, p.style);bottles = p.bottles;}Port &Port::operator=(const Port &p){if (this == &p)return *this;delete[]brand;brand = new char[strlen(p.brand) + 1];strcpy_s(brand, strlen(p.brand) + 1, p.brand);strcpy_s(style, strlen(p.style) + 1, p.style);bottles = p.bottles;return *this;}Port &Port::operator+=(int b){bottles += b;return *this;}Port &Port::operator-=(int b){bottles -= b;return *this;}void Port::Show()const{cout << "Brand: " << brand << endl;cout << "Kind: " << style << endl;cout << "Bottles: " << bottles << endl;}ostream &operator<<(ostream &os, const Port &p){os << p.brand << ", " << p.style << ", " << p.bottles;return os;}VintagePort::VintagePort(){nickname = new char[1];nickname[0] = '\0';year = 0;}VintagePort::VintagePort(const char *br, const char *st, int b, const char *nn, int y) :Port(br, st, b){nickname = new char[strlen(nn) + 1];strcpy_s(nickname, strlen(nn) + 1, nn);year = y;}VintagePort::VintagePort(const VintagePort &vp) :Port(vp){nickname = new char[strlen(vp.nickname) + 1];strcpy_s(nickname, strlen(vp.nickname) + 1, vp.nickname);year = vp.year;}VintagePort &VintagePort::operator=(const VintagePort &vp){if (this == &vp)return *this;delete[]nickname;Port::operator=(vp);nickname = new char[strlen(vp.nickname) + 1];strcpy_s(nickname, strlen(vp.nickname) + 1, vp.nickname);year = vp.year;return *this;}void VintagePort::Show()const{Port::Show();cout << "Nickname: " << nickname << endl;cout << "Year: " << year << endl;}ostream &operator<<(ostream &os, const VintagePort &vp){os << (const Port &)vp;os << ", " << vp.nickname << ", " << vp.year;return os;}//main.cpp#include "port.h"int main(){Port wine1("Gallo", "tawny", 20);VintagePort wine2("Romane Conti", "vintage", 10, "The Noble", 1876);VintagePort wine3("Merlot", "ruby", 30, "Old Velvet", 1888);cout << "Displaying Port object:\n";wine1.Show();cout << wine1 << endl;cout << "Displaying VintagePort object:\n";wine2.Show();cout << wine2 << endl;cout << "Displaying VintagePort object:\n";wine3.Show();cout << wine3 << endl;cout << "Gallo add ten bottles:\n";wine1 += 10;cout << wine1 << endl;cout << "Romane Conti add ten bottles:\n";wine2 += 10;cout << wine2 << endl;cout << "Merlot minus ten bottles:\n";wine3 -= 10;cout << wine3 << endl;Port wine4(wine2);cout << "Result of Port copy:\n";cout << wine4 << endl;VintagePort wine5;wine5 = wine3;cout << "Result of VintagePort assignment:\n";cout << wine5 << endl;system("pause");return 0;}(注:可编辑下载,若有不当之处,请指正,谢谢!)。

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++ primer plus 中文版第六版源代码第二章到第四章,后续继续更新………第二章1:#include<iostream>void main(){using namespace std;int carrots;carrots=25;cout<<"I have ";cout<<carrots;cout<<"carrots.";cout<<endl;carrots=carrots-1;cout<<"Crunch,crunch.Now I have "<<carrots<<" carrots"<<endl; }2:#include<iostream>int stonetolb(int);int main(){using namespace std;int stone;cout<<"Enter the weight in stone: ";cin>>stone;int pounds=stonetolb(stone);cout<<stone<<" stone= ";cout<<pounds<<" pounds."<<endl;return 0;}int stonetolb(int sts){return 14*sts;}3:#include<iostream>void main(){using namespace std;int carrots;carrots=25;cout<<"How many carrots do you have?"<<endl;cin>>carrots;cout<<"Here are two more.";carrots=carrots+2;cout<<"Now you have "<<carrots<<" carrots."<<endl;//下两行专门测试cin.get()cin.get();cin.get();}4:#include<iostream>using namespace std;void main(){cout<<"Come up and C++ me some time.";cout<<endl;cout<<"You won't regret it!"<<endl;}5#include<iostream>void simon(int);int main(){using namespace std;simon(3);cout<<"Pick an integer: ";int count;cin>>count;simon(count);cout<<"Done !"<<endl;return 0;}void simon(int n){using namespace std;cout<<"Simon says touch your toes "<<n<<" times."<<endl; }6:#include<iostream>#include<cmath>void main(){using namespace std;double area;cout<<"Enter the floor arae,in square feet,of your home: ";cin>>area;double side;side=sqrt(area);cout<<"That's the equivalent of a square "<<side<<" feet to the side."<<endl;cout<<"How fascinating!"<<endl;}第三章1:#include<iostream>#include<climits>using namespace std;int main(){int n_int=INT_MAX;short n_short=SHRT_MAX;long n_long=LONG_MAX;cout<<"int is "<<sizeof(int)<<" bytes."<<endl;cout<<"short is"<<sizeof n_short<<" bytes."<<endl;cout<<"long is"<<sizeof n_long<<" bytes."<<endl<<endl;cout<<"Maximum values :"<<endl;cout<<"int :"<<n_int<<endl;cout<<"short :"<<n_short<<endl;cout<<"long :"<<n_long<<endl;cout<<"Minimum int value = "<<INT_MIN<<endl;cout<<"Bits per byts = "<<CHAR_BIT<<endl;return 0;}2:#include<iostream>#include<climits>#define ZERO 0using namespace std;int main(){short sam=SHRT_MAX;unsigned short sue=sam;cout<<"sam has "<<sam<<" dollars and sue has "<<sue;cout<<" dollars deposited."<<endl<<"Add $1 to each account."<<endl<<"Now ";sam=sam+1;sue=sue+1;cout<<"Sam has "<<sam<<" dollars and sue has "<<sue;cout<<" dollars deposited.\npoor sam!"<<endl;sam=ZERO;sue=ZERO;cout<<"sam has "<<sam<<" dollars and sue has "<<sue;cout<<" dollars deposited."<<endl;cout<<"Take $1 from each account."<<endl<<"Now ";sam=sam-1;sue=sue-1;cout<<"sam has "<<sam<<" dolars and sue has "<<sue;cout<<" dollars deposited."<<endl<<"Lucky sue!"<<endl;return 0;}3:#include<iostream>using namespace std;void main(){int chest=42;int waist=0x42;int inseam=042;cout<<"Monsieur cuts a striking figure!\n";cout<<"chest = "<<chest<<" (42 in decimal)\n";cout<<"waist = "<<waist<<" (0x42 in hex)\n";cout<<"inseam ="<<inseam<<" (042 in octal)\n";}4:#include<iostream>using namespace std;void main(){int chest=42;int waist=42;int inseam=42;cout<<"Monsieur cuts a striking figure!\n";cout<<"chest = "<<chest<<" (decimal for 42)"<<endl;cout<<hex;cout<<"waist = "<<waist<<" (hexadecimal for 42)"<<endl;cout<<oct;cout<<"inseam ="<<inseam<<" (octal for 42)\n"<<endl; }5:#include<iostream>using namespace std;void main(){cout<<"\aoperation \"HyperHype\" is now activated!\n";cout<<"Enter your agent code:__________\b\b\b\b\b\b\b\b";long code;cin>>code;cout<<"\aYou entered "<<code<<" ...\n";cout<<"\acode verified !proceed with plan z3!\n";}6:#include<iostream>using namespace std;void main(){char ch;cout<<"Enter a character:"<<endl;cin>>ch;cout<<"Hola! ";cout<<"Thank you for the "<<ch<<" character."<<endl;}7:#include<iostream>using namespace std;void main(){char ch='M';int i=ch;cout<<"The ASCII code for "<<ch<<" is "<<i<<endl;cout<<"Add one to the character code:"<<endl;ch=ch+1;i=ch;cout<<"The ASCII code for "<<ch<<" is "<<i<<endl;cout<<"Displaying char ch using cout.put(ch): ";cout.put(ch);cout.put('!');cout<<endl<<"Done"<<endl;}8:#include<iostream>using namespace std;void main(){cout.setf(ios_base::fixed,ios_base::floatfield);//控制cout显示的形式float tub=10.0/3.0;double mint=10.0/3.0;const float million=1.0e6;cout<<"tub = "<<tub;cout<<", a million tubs = "<<million*tub;cout<<",\nand ten million tubs = ";cout<<10*million*tub<<endl;cout<<"mint = "<<mint<<" and a million mints = ";cout<<million*mint<<endl;}9:#include<iostream>using namespace std;void main(){float a=2.34e+22f;float b=a+1.0f;cout<<"a= "<<a<<endl;cout<<"b-a= "<<b-a<<endl;}10:#include<iostream>using namespace std;void main(){double hats,heads;//或者是floatcout.setf(ios_base::fixed,ios_base::floatfield);cout<<"Enter a number: ";cin>>hats;cout<<"Enter another number: ";cin>>heads;cout<<"hats = "<<hats<<";heads = "<<heads<<endl;cout<<"hats+heads = "<<hats+heads<<endl;cout<<"hats-heads = "<<hats-heads<<endl;cout<<"hats*heads = "<<hats*heads<<endl;cout<<"hats/heads = "<<hats/heads<<endl;}11:#include<iostream>using namespace std;void main(){cout.setf(ios_base::fixed,ios_base::floatfield);cout<<"Integer division:9/5= "<<9/5<<endl;cout<<"Floating-point division: 9.0/5.0 = ";cout<<9.0/5.0<<endl;cout<<"Mixed division: 9.0/5 = "<<9.0/5<<endl;cout<<"double constants:1.e7/9.0 = ";cout<<1.e7/9.0<<endl;cout<<"float constants:1.e7f/9.0f = ";cout<<1.e7f/9.0f<<endl;}12:#include<iostream>using namespace std;void main(){const int Lbs_per_stn=14;int lbs;cout<<"Enter your weight in pounds: ";cin>>lbs;int stone=lbs/Lbs_per_stn;int pounds=lbs%Lbs_per_stn;cout<<lbs<<" pounds are "<<stone<<" stone, "<<pounds<<" pound(s).\n"; }13:#include<iostream>using namespace std;void main(){cout.setf(ios_base::fixed,ios_base::floatfield);float tree=3;int guess(3.9832);int debt=7.2E12;cout<<"tree = "<<tree<<endl;cout<<"guess = "<<guess<<endl;cout<<"debt = "<<debt<<endl;}14:#include<iostream>using namespace std;void main(){int auks,bats,coots;auks=19.99+11.99;bats=(int)19.99+(int)11.99;coots=int (19.99)+int (11.99);cout<<"auks = "<<auks<<",bats = "<<bats;cout<<",coots = "<<coots<<endl;char ch='Z';cout<<"The code for"<<ch<<" is ";cout<<int (ch)<<endl;cout<<"Yes,the code is ";//cout<<statiic_cast<int>(ch)<<endl;}第四章1:#include<iostream>using namespace std;void main(){int yams[3];yams[0]=7;yams[1]=8;yams[2]=6;int yamcosts[3]={20,30,5};cout<<"Total yams = ";cout<<yams[0]+yams[1]+yams[2]<<endl;cout<<"The package with "<<yams[1]<<" yams costs ";cout<<yamcosts[1]<<" cents per yam.\n";int total=yams[0]*yamcosts[0]+yams[1]*yamcosts[1];total=total+yams[2]*yamcosts[2];cout<<"The total yam expense is "<<total<<" cents.\n";cout<<"\nSize of yams array = "<<sizeof yams;cout<<" bytes.\n";cout<<"Size of one element = "<<sizeof yams[0];cout<<" bytes.\n";}2:#include<iostream>using namespace std;void main(){const int size=15;char name1[size];char name2[size]="C++owboy";cout<<"Howdy! I'm "<<name2;cout<<"! what's your name?\n";cin>>name1;cout<<"Well, "<<name1<<",your name has ";cout<<strlen(name1)<<" letters and is stored\n";cout<<" in an array of "<<sizeof name1<<" bytes.\n";cout<<"Your initial is "<<name1[0]<<".\n";name2[3]='\0';cout<<"Here are the first 3 charchters of my name: ";cout<<name2<<endl;}3:#include<iostream>using namespace std;void main(){const int arsize=20;char name[arsize];char dessert[arsize];cout<<"Enter your name:\n";cin>>name;cout<<"Enter your favorite dessert:\n";cin>>dessert;cout<<"I have some delicious "<<dessert;cout<<" for you, "<<name<<".\n";}4:#include<iostream>using namespace std;void main(){const int arsize=20;char name[arsize];char dessert[arsize];cout<<"Enter your name:\n";cin.getline(name,arsize);cout<<"Enter your favorite dessert:\n";cin.getline(dessert,arsize);cout<<"I have some delicious "<<dessert;cout<<" for you, "<<name<<".\n";}5:#include<iostream>using namespace std;void main(){const int arsize=20;char name[arsize];char dessert[arsize];cout<<"Enter your name:\n";cin.get(name,arsize).get();cout<<"Enter your favorite dessert:\n";cin.get(dessert,arsize);cout<<"I have some delicious "<<dessert;cout<<" for you, "<<name<<".\n";}6:#include<iostream>#include<string>using namespace std;void main(){char charr1[20];char charr2[20]="jaguar";string str1;string str2="panther";cout<<"Enter a kind of feline: ";cin>>charr1;cout<<"Enter another kind of feline: ";cin>>str1;cout<<"Here are some felines:\n";cout<<charr1<<" "<<charr2<<" "<<str1<<" "<<str2<<endl;cout<<"The third letter in "<<charr2<<" is "<<charr2[2]<<endl;cout<<"The third letter in "<<str2<<" is "<<str2[2]<<endl;}7:#include<iostream>#include<string>using namespace std;void main(){string s1="penguin";string s2,s3;cout<<"You can assign one string object to another:s2=s1\n";s2=s1;cout<<"s1: "<<s1<<",s2: "<<s2<<endl;cout<<"You can assign a c-style string to a string object.\n";cout<<"s2= \"buzzard\"\n";s2="buzzard";cout<<"s2: "<<s2<<endl;cout<<"You can concatenate strings: s3=s1+s2\n";s3=s1+s2;cout<<"s3: "<<s3<<endl;cout<<"You can append strings.\n";s1+=s2;cout<<"s1+=s2 yields s1= "<<s1<<endl;s2+=" for a day";cout<<"s1+=\" for a day\" yields s2 = "<<s2<<endl;}8:#include<iostream>#include<string>#include<cstring>using namespace std;void main(){char charr1[20];char charr2[20]="jaguar";string str1;string str2="panther";str1=str2;strcpy(charr1,charr2);str1+=" paste";strcat(charr1," juice");int len1=str1.size();int len2=strlen(charr1);cout<<"The string "<<str1<<" contains "<<len1<<" characters.\n";cout<<"The string "<<charr1<<" contains "<<len2<<" characters.\n";}9:#include<iostream>#include<string>#include<cstring>using namespace std;void main(){char charr[20];string str;cout<<"Length of string in charr before input: "<<strlen(charr)<<endl;cout<<"Length of string in str before input: "<<str.size()<<endl;cout<<"Enter a line of text:\n";cin.getline(charr,20);cout<<"You entered: "<<charr<<endl;cout<<"Enter another line of text:\n";getline(cin,str);//将cin用作参数,到str查找输入,会自动调整大小cout<<"You entered: "<<str<<endl;cout<<"Length of string in charr after input: "<<strlen(charr)<<endl;cout<<"Length of string in str before input: "<<str.size()<<endl;}10:#include<iostream>struct inflatable{char name[20];float volume;double price;};int main(){using namespace std;inflatable guest={"Glorious Gloria",1.88,29.99};inflatable pal={"Audacious Arthur",3.12,32.99};cout<<"Expand your guest list with "<<;cout<<" and "<<<<"!\n";cout<<"You can have both for $";cout<<guest.price+pal.price<<"!\n";cout<<guest.volume+pal.volume<<endl;return 0;}11:#include<iostream>using namespace std;struct inflatable{char name[20];float volume;double price;};int main(){inflatable bouquet={"sunflowers",0.20,12.49};inflatable choice;cout<<"bouquet: "<<<<" for $";cout<<bouquet.price<<endl;choice=bouquet;cout<<"choice: "<<<<" for $";cout<<choice.price<<endl;return 0;}12:#include<iostream>using namespace std;struct inflatable{char name[20];float volume;double price;};int main(){inflatable guests[2]={{ "Bambi",0.5,21.99 },{ "Godzilla",2000,565.99 }};cout<<"The guests "<<guests[0].name<<" and "<<guests[1].name <<"\nhave a combined volume of "<<guests[0].volume+guests[1].volume<<" cubic feet.\n";return 0;}13:#include<iostream>using namespace std;int main(){int donuts=6;double cups=4.5;cout<<"donuts valus = "<<donuts;cout<<" and donuts address = "<<&donuts<<endl;cout<<"cups value = "<<cups;cout<<" and cups addres = "<<&cups<<endl;}14:#include<iostream>using namespace std;int main(){int updates=6;int *p_updates;p_updates=&updates;cout<<"Value:updates = "<<updates;cout<<",*p_updates = "<<*p_updates<<endl;cout<<"Address: &update = "<<&updates;cout<<",p_updates = "<<p_updates<<endl;*p_updates=*p_updates+1;cout<<"Now updates = "<<updates<<endl;return 0;}15:#include<iostream>#include<cstring>using namespace std;char *getname(void);int main()char *name;name=getname();cout<<name<<" at "<<(int *)name<<endl;delete []name;name=getname();cout<<name<<" at "<<(int *)name<<endl;delete []name;return 0;}char *getname(){char temp[80];cout<<"Enter last name: ";cin>>temp;char *pn=new char[strlen(temp)+1];strcpy(pn,temp);return pn;}16:#include<iostream>using namespace std;int main(){double wages[3]={ 10000.0,20000.0,30000.0 };short stacks[3]={ 3,2,1 };double *pw=wages;short *ps=&stacks[0];cout<<"pw= "<<pw<<",*pw= "<<*pw<<endl;pw=pw+1;cout<<"add 1 to the pw pointer:\n";cout<<"pw= "<<pw<<",*pw= "<<*pw<<"\n\n";cout<<"ps= "<<ps<<",*ps= "<<*ps<<"\n\n";ps=ps+1;cout<<"add 1 to the ps pointer:\n";cout<<"ps= "<<ps<<",*ps= "<<*ps<<"\n\n";cout<<"access two elements with array notation\n";cout<<"stacks[0]= "<<stacks[0]<<",stacks[1]= "<<stacks[1]<<endl;cout<<"access two elements with pointer notation\n";cout<<"*stacks= "<<*stacks<<",*(stacks+1)= "<<*(stacks+1)<<endl;cout<<sizeof wages<<" =size of wages array\n";cout<<sizeof pw<<" =size of pw pointer\n";return 0;}17://指针和数组的真正区别#include<iostream>using namespace std;int main(){double *p3=new double[3];p3[0]=0.2;p3[1]=0.5;p3[2]=0.8;cout<<"p3[1] is "<<p3[1]<<".\n";p3=p3+1;cout<<"Now p3[0] is "<<p3[0]<<" and ";cout<<"p3[1] is "<<p3[1]<<".\n";p3=p3-1;cout<<"Now p3[0] is "<<p3[0]<<" and ";cout<<"p3[1] is "<<p3[1]<<".\n";delete [] p3;return 0;}18:#include<iostream>#include<cstring>using namespace std;struct inflatable{char name[20];float volume;double price;};int main()inflatable *ps=new inflatable;cout<<"Enter name of inflatable item: ";cin.get(ps->name,20);cout<<"Enter volume of cubic feet: ";cin>>(*ps).volume;cout<<"Enter price: $";cin>>ps->price;cout<<"Name: "<<(*ps).name<<endl;cout<<"V olume: "<<ps->volume<<" cubic feet\n";cout<<"Price: $"<<ps->price<<endl;delete ps;return 0;}19:#include<iostream>#include<cstring>#include<vector>using namespace std;int main()double a1[4]={ 1.2,2.4,3.6,4.8 };vector<double> a2(4);a2[0]=1.0/3.0;a2[1]=1.0/5.0;a2[2]=1.0/7.0;a2[3]=1.0/9.0;cout<<"a1[2]: "<<a1[2]<<" at "<<&a1[2]<<endl;cout<<"a2[2]: "<<a2[2]<<" at "<<&a2[2]<<endl;a1[-2]=20.2;cout<<"a1[-2]: "<<a1[-2]<<" at "<<&a1[-2]<<endl;return 0;}20:#include<iostream>#include<cstring>using namespace std;int main(){char animal[20]="bear";const char *bird="wren";char *ps;cout<<animal<<" and ";cout<<bird<<"\n";cout<<"Enter a kind of animal: ";cin>>animal;ps=animal;cout<<ps<<"!\n";cout<<"Before using strcpy():\n";cout<<animal<<" at "<<(int *)animal<<endl;cout<<ps<<" at "<<(int *)ps<<endl;ps=new char[strlen(animal+1)];strcpy(ps,animal);cout<<"After using strcpy():\n";cout<<animal<<" at "<<(int *)animal<<endl;cout<<ps<<" at "<<(int *)ps<<endl;delete [] ps;return 0;}21:#include<iostream>using namespace std;int main(){int higgens=5;int *pt=&higgens;cout<<"Value of higgens = "<<higgens<<";Address of higgens = "<<&higgens<<endl;cout<<"Value of *pt = "<<*pt<<";Address of pt = "<<pt<<endl;return 0;}22:#include<iostream>using namespace std;int main(){int nights=1001;int *pt=new int;*pt=1001;cout<<"nights value = ";cout<<nights<<": location "<<&nights<<endl;cout<<"int ";cout<<"value = "<<*pt<<": location = "<<pt<<endl;double *pd=new double;*pd=10000001.0;cout<<"double ";cout<<"value = "<<*pd<<": location = "<<pd<<endl;cout<<"location of pointer pd: "<<&pd<<endl;cout<<"size of pt = "<<sizeof pt;cout<<":size of *pt = "<<sizeof *pt<<endl;cout<<"size of pd = "<<sizeof pd;cout<<":size of *pd = "<<sizeof *pd<<endl;return 0;}23:#include<iostream>#include<cstring>using namespace std;struct antarctica_years_end{int year;};int main(){antarctica_years_end s01,s02,s03;s01.year=1998;antarctica_years_end *pa=&s02;pa->year=1999;antarctica_years_end trio[3];trio[0].year=2003;cout<<trio->year<<endl;const antarctica_years_end *arp[3]={ &s01,&s02,&s03 };cout<<arp[1]->year<<endl;const antarctica_years_end **ppa=arp;//auto ppb=arp;cout<<(*ppa)->year<<endl;//cout<<(*(ppb+1))->year<<endl;return 0; }。

相关文档
最新文档