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

合集下载

c++primerplus(第六版)课后编程练习答案培训资料

c++primerplus(第六版)课后编程练习答案培训资料

c + + p r i me r p l u s (第六版)课后编程练习答案〃ex2.1--display your n ame and address #in clude<iostream>int main(v oid){using n amespace std;cout<<"My n ame is liao chu ngua ng and I live in hunan che nzhou.\”〃ex2.2--convert the furlong units to yard uints扌把浪单位换位码单位#include<iostream>double fur2yd(double);int main(){using n amespace std;cout<<"e nter the dista nee measured by furl ong un its:"; double fur;cin»fur;cout<<"c onvert the furlo ng to yard"<<e ndl;double yd;yd=fur2yd(fur);coutvvfurvv" furlong is "<<yd<<" yard"<<e ndl;return 0;}double fur2yd(double t){return 220*t;}〃ex2.3-每个函数都被调用两次#in clude<iostream>void mice();void see();using n amespace std;int main(){mice();mice();see();see();return 0;}void mice(){cout«"three bli nd mice"«e ndl;}void see(){cout<<"see how they run"<<en dl;}〃ex2.4#in clude<iostream>int mai n(){using n amespace std;cout<<"E nter your age:";int age;cin> >age;in t mon th;mon th=age*12;coutvvagevv" years is "<<mon th<<" mon ths"<<e ndl;return 0;}〃ex2.5---convert the Celsius valve to Fahre nheit value#in clude<iostream>double C2F(double);int main(){using n amespace std;cout«"please en ter a Celsius value:";double C;cin> >C;double F;F=C2F(C);coutvvCvv" degrees Celsius is "<<F<<" degrees Fahre nheit."«e ndl; return 0; }double C2F(double t){return 1.8*t+32;}〃ex2.6---convert the light years valve to astronomical units-把光年转换为天文单位#in clude<iostream>double conv ert(double);//函数原型int main(){using n amespace std;cout<<"E nter the nu mber of light years:";double light_years;cin> >light_years;double astro_ un its;astro_ un its=co nv ert(light_years);cout<<light_years<<" light_years = "<<astro_u ni ts<<" astr ono mical un its."v<e ndl; return 0;}double conv ert(double t){return 63240*t;//1 光年=63240 天文单位}〃ex2.7--显示用户输入的小时数和分钟数#in clude<iostream>void show();mai n(){using n amespace std;show();return 0;}void show(){using n amespace std;int h,m;cout<<"e nter the nu mber of hours:"; cin> >h;cout<<"e nter the nu mber of minu tes:";cin>>m; coutvv"Time:"v<hvv":"vvmvve ndl;〃ex3.1—将身高用英尺(feet)和英寸(inch)表示#in clude<iostream> const int in ch_per_feet=12;〃cons常量--1feet=12i nches--1 英尺=12 英寸int main() {using n amespace std;cout<<"please en ter your height in inches: __ \b\b\b";〃\b表示为退格字符intht_in ch;cin> >ht_i nch;int ht_feet=ht_i nch/i nch_per_feet;//取商int rm_i nch=ht_i nch%i nch_per_feet;〃取余cout<<"your height is "<<ht_feet<<" feet,a nd " <<rm_i nch<< "in ches\n";return 0;}//ex3.2--计算相应的body mass index (体重指数)#in clude<iostream>const int in ch_per_feet=12;const double meter_per_i nch=0.0254;const double poun d_per_kilogram=2.2;int main(){using n amespace std;cout<<"Please en ter your height:"<<e ndl;cout«"First,enter your height of feet part (输入你身高的英尺部分):_\b";int ht_feet;cin> >ht_feet;cout«"Seco nd,e nter your height of inch part (输入你身高的英寸部分):_\b";int ht_in ch;cin> >ht_i nch;cout«"Now,please en ter your weight in pound: __ \b\b\b";double wt_po und;cin> >wt_po und;int in ch;in ch=ht_feet*i nch_per_feet+ht_i nch;double ht_meter;ht_meter=i nch*meter_per_i nch;double wt_kilogram;wt_kilogram=wt_po un d/po un d_per_kilogram; cout«e ndl;cout<<"Your pensonal body in formatio n as follows:"<<e ndl;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 In dex(体重指数)is "<<BMI<<e ndl;return 0;}〃ex3.3以度,分,秒输入,以度输出#in clude<iostream>const int minu tes_per_degree=60;const int sec on ds_per_m inu te=60;int main(){using n amespace std;cout<<"E nter a latitude in degrees, minu tes,a nd sec on ds:\n"; cout<<"First,e nter the degrees:";int degree;cin> >degree;cout<<"Next,e nter the minu tes of arc:";int min ute;cin»minu te;cout«"Fia nlly,e nter the sec onds of arc:";int sec ond;cin> >sec ond;double show_i n_degree;show_in_degree=(double)degree+(double)mi nute/mi nutes_per_degree+(doubl e)seco nd/mi nu tes_per_degree/sec on ds_per_mi nu te;cout<<degree<<" degrees,"<< minu te<<" minu tes,"<<sec on d<<"sec onds ="<<show_i n_degree<<" degrees\n";return 0;}//ex3.4#in clude<iostream>const int hours_per_day=24;const int minu tes_per_hour=60;const int sec on ds_per_m inu te=60;int main(){using n amespace std;cout<<"E nter the nu mber of sec on ds:";long sec on ds;cin> >sec on ds;int Day,Hour,M inu te,Sec ond;Day=sec on ds/sec on ds_per_mi nute/mi nu tes_per_hour/hours_per_day;Hour=sec on ds/sec on ds_per_mi nute/mi nu tes_per_hour%hours_per_day;Min ute=seco nds/seco nds_per_mi nute%mi nu tes_per_hour;Secon d=sec on ds%sec on ds_per_m inu te;cout«sec on ds<<"sec onds = "<<Day<<" days,"<<Hour<<"hours,"<< Minu te<<" minu tes,"<<Sec on d<<" sec onds\n";return 0;}〃ex3.5#in clude<iostream>int mai n(){using n amespace std;cout<<"E nter the world populati on:";long long world_populati on;cin> >world_populati on;cout<<"E nter the populati on of the US:";long long US_populati on;cin»U S_populati on;double perce ntage;perce ntage=(double)US_populati on/world_populati on *100;cout<<"The population of the US is "<<percentage<<"% of the world population.\n"; return 0;}〃ex3.6汽车耗油量-美国(mpg)or欧洲风格(L/100Km)#in clude<iostream> int main(){using n amespace std;cout«"E nter the miles of dista nee you have drive n:";double m_dista nee;cin>> m_dista nee;cout<<"E nter the gallo ns of gasoli ne you have used:";double m_gasoli ne;cin>> m_gasoli ne;cout<<"Your car can run "<<m_dista nce/m_gasoli ne<<" miles per gallo n\n";cout«"Computi ng by Europea n style:\n";cout<<"Enter the distance in kilometers:";double k_dista nce;cin>> k_dista nce;cout<<"E nter the petrol in liters:";double k_gasoli ne;cin>> k_gasoli ne;cout<<"I n Europea n style:"«"your can used "<<100*k_gasoli ne/k_dista nce<<" liters of petrol per 100 kilometers\n";return 0;}//ex3.7 automobile gaso line con sumption 耗油量--欧洲风格(L/100Km)转换成美国风格(mpg)#in clude<iostream>int main(){using n amespace std;cout<<"Enter the automobile gasoline consumption figure in\n"<<"Europea n style(liters per 100 kilometers):";double Euro_style;cin> >Euro_style;cout<<"C onv erts to U.S. style(miles per gallo n):"«e ndl;coutv<Euro_stylevv" L/100Km = "v<62.14*3.875/Euro_style<v" 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.4Conv erts to U.S. style(miles per gallo n):12.4 L/100Km = 19.4187 mpgPress any key to con ti nue // ex3.7 automobile gasol ine con sumption耗油量--美国风格(mpg )转换成欧洲风格(L/100Km)#in clude<iostream>int main(){using n amespace std;cout<<"Enter the automobile gasoline consumption figure in\n"<<"U.S. style(miles per gallo n):";double US_style;cin >>US_style;cout<<"C onv erts to Europea n style(miles per gall on ):"<<e ndl;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 gallo n) :19Conv erts to Europea n style(miles per gallo n):19 mpg = 12.6733L/100KmPress any key to con ti nue//ex4.1 display the information of student #in clude<iostream>const int Asize=20;using n amespace std;struct stude nt/定义结构描述{char first name[Asize]; char last name[Asize]; char grade;int age;};void display(stude nt);〃函数原型放在结构描述后int main(){cout«"what is your first n ame?"<<e ndl;stude nt leg;//创建结构变量(结构数据对象)cin .getli ne(lcg.first name,Asize); cout<<"what is your last n ame?"<<e ndl;cin .getli ne(lcg .l ast name,Asize);cout<<"what letter grade do you deserve?"<<e ndl;cin> >lcg.grade;cout<<"what is your age?"<<e ndl;cin> >lcg.age;display(lcg);return 0;}void display(stude nt n ame){cout«"Name: " <<n ame.first name<<","< <n ame .l ast name«e ndl;cout<v"Grade:"vvchar( name.grade+1)«e ndl;cout<<"Age:"< <n ame.age<<e ndl;} //ex4.2 use the stri ng-class in stead of char-array #in clude<iostream>#in clude<stri ng>int main(){using n amespace std;stri ng n ame,dessert;cout<<"E nter your n ame: \n";getl in e(ci n,n ame);cout<<"E nter your favorite dessert: \n"; getli ne(ci n, dessert);cout<<"I have some delicious "<<dessert; cout«" for you, "< <n ame<<".\n";return 0;〃有时候会遇到需要按下两次回车键才能正确的显示结果,这是VC++6.0的一个BUG,更改如下:else if (_Tr::eq((_E)_C, _D)){_Chg = true;_I .rdbuf()->sbumpc(); 〃修改后的break; }ex4.3输入其名和姓,并组合显示#in clude<iostream>#in clude<cstri ng>const int Asize=20;int main(){using n amespace std;char fn ame[Asize];char In ame[Asize];char full name[2*Asize+1];cout<<"Enter your first name:";//输入名字,存储在fname[]数组中cin .getli ne(fname,Asize);cout<<"Enter your last name:";//输入姓,存储在Iname[]数组中cin .getli ne(l name,Asize);strncpy(full name,l name,Asize);〃把姓ln ame 复制到full name 空数组中strcat(full name,",");// 把“,”附加到上述full name 尾部strn cat(full name,fname,Asize);//把fname 名字附加至U 上述full name 尾部fullname[2*Asize ]='\0';//为防止字符型数组溢出,在数组结尾添加结束符cout<<"Here's the information in a single string:"<<fullname<<endl;//显示组合结果return 0;} //ex4.4使用string对象存储、显示组合结果#in clude<iostream>#in cludevstri ng>int main(){using n amespace std;stri ng fname ,ln ame,attach,full name; cout<<"E nter your first n ame:";getline(cin,fname);//note将一行输入读取到string类对象中使用的是getli ne(ci n, str)//它没有使用句点表示法,所以不是类方法cout<<"E nter your last n ame:";getli ne(ci n,ln ame);attach=",";full name=In ame+attach+f name;cout<<"Here's the information in a single string:"<<fullname<<endl; return 0;}〃ex4.5 declare a struct and in itialize it 声明结果并创建一个变量#in clude<iostream> const int Asize=20; struct Can dyBar{char bran d[Asize];double weight;int calory;};int main(){using n amespace std;Ca ndyBar sn ack={"Mocha Mun ch",2.3,350}; cout<<"Here's the information of snack:\n"; cout<<"bra nd:"<<s nack.bra nd<<e ndl; 8山<<妝6:9“:"<<$ nack.weight<<e ndl; coutvv"calory:"vvs nack.calory<<e ndl; return 0; } //ex4.6结构数组的声明及初始化#in clude<iostream> const int Asize=20;struct Can dyBar{char bran d[Asize];double weight;int calory;};int main(){using n amespace std;Ca ndyBar sn ack[3]={ {"Mocha Mun ch",2.3,350}, {"XuFuJi",1.1,300},{"Alps",0.4,100}};for(int i=0;i<3;i++)〃利用for循环来显示snack变量的内容{cout«s nack[i].bra nd<<e ndl<<s nack[i].weight<<e ndl<<s nack[i].calory«e ndl«e ndl;}return 0;}〃ex4.7 pizza 披萨饼#in clude<iostream> #in clude<stri ng> const int Size=20;struct pizza//声明结构{char compa ny [Size]; double diameter; double weight;};int main(){using n amespace std;pizza pie;//创建一个名为pie的结构变量cout<<"What's the n ame of pizzacompa ny:"; cin. getl in e(pa ny ,Size); cout«"What's the diameter ofpizza:";cin> >pie.diameter; cout<<"What's the weight of pizza:";cin> >pie.weight;cout<<"compa ny:"«pa ny«en dl; cout<v"diameter:"vvpie.diameter<v"i nches"«e ndl; cout<v"weight:"vvpie.weight<v"o un ches"<<e ndl; return 0;}〃ex4.8 pizza pie披萨饼使用new创建动态结构#in clude<iostream>#in clude<stri ng>const int Size=20;struct pizza//声明结构{char compa ny [Size];double diameter;double weight;};int main(){using n amespace std;pizza *pie=new pizza;//使用new 仓U建动态结构cout<<"What's the diameter of pizza:";cin> >pie->diameter;cin. get();//读取下一个字符cout<<"What's the n ame of pizza compa ny:";cin .get(pie->compa ny,Size); cout<<"What's the weight of pizza:";cin> >pie->weight; cout<v"diameter:"vvpie->diameter< <" in ches"<<e ndl;cout<<"compa ny:"«pie->compa ny«en dl; cout<v"weight:"vvpie->weight<v" oun ches"<<e ndl;delete pie;//delete释放内存return 0;〃ex.4.9使用new动态分配数组一方法1#in clude<iostream>#in clude<stri ng>using n amespace std;struct Can dyBar{stri ng brand;double weight;int calory;};int main(){Can dyBar *sn ack= new Can dyBar[3];snack[0].brand="A";〃单个初始化由new动态分配的内存sn ack[0].weight=1.1; sn ack[0].calory=200; sn ack[1].bra nd="B";sn ack[1].weight=2.2; sn ack[1].calory=400; sn ack[2].bra nd="C";sn ack[2].weight=4.4;sn ack[2].calory=500;for(int i=0;i<3;i++){cout << " bran d: " << sn ack[i].bra nd << en dl;cout << " weight: " << sn ack[i].weight << en dl;cout << " calorie: " << sn ack[i].calory << en dl<<e ndl; }delete [] sn ack;return 0;} //ex.4.10数组一方法1#i nclude <iostream> int main(){using n amespace std;const int Size = 3;int success[Size];cout<<"E nter your success of the three times 40 meters runnin g:\n"; cin >> success[0]»success[1]»success[2];cout<v"success1:"v<success[0]vve ndl;cout<v"success2:"vvsuccess[1]v<e ndl;cout<v"success3:"v<success[2]vve ndl;double average=(success[0]+success[1]+success[2])/3;cout<<"average:"<<average<<e ndl;return 0;}//ex.4.10 array—方法2#i nclude <iostream>#in clude <array>int main(){using n amespace std;array<double,4>ad={0};cout<<"E nter your success of the three times 40 meters runnin g:\n"; cin >> ad[0]»ad[1]»ad[2];cout<v"success1:"v<ad[0]vve ndl;cout<v"success2:"vvad[1]v<e ndl;cout<v"success3:"v<ad[2]vve ndl;ad[3]=(ad[0]+ad[1]+ad[2])/3;cout<<"average:"<<ad[3]<<e ndl;return 0;}//ex.5.1#in clude <iostream> int mai n(){using n amespace std;cout<<"Please en ter two in tegers:" int n um1, num2;cin»n um1> >n um2;int sum=O;for(i nt temp=n um1;temp<=n um2;++temp)//or temp++sum+=temp;cout<<"The sum from "<<n um1<<" to "<<n um2<<" is "<<sum<<e ndl; return 0; }//ex.5.2#in clude <iostream>#in clude<array>int mai n(){using n amespace std;array vlong 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++)coutvvivv"! = "v<ad[i]v<e ndl;return 0;}〃ex.5.3#in clude <iostream>int mai n(){using n amespace std;cout<<"Please en ter an in teger:";int sum=0,n um;while((ci n»num)&&n um!=0){sum+=n um;cout<<"So far, the sum is "v<sumv<e ndl; cout<<"Please en ter an in teger:";}return 0;}//ex.5.4 #in clude <iostream>int main(){using n amespace std;double sum1,sum2;sum仁sum2=0.0;int year=0;while(sum2<=sum1){++year;sum1+=10;sum2=(100+sum2)*0.05+sum2;}coutvv"经过"vvyearvv"年后,Cleo的投资价值才能超过Daphne的投资价值。

C Primer Plus第6版编程练习问题详解(已下载)

C Primer Plus第6版编程练习问题详解(已下载)

Chapter 2 Programming ExercisesPE 2-­‐1/* Programming Exercise 2-1 */#include <stdio.h> intmain(void){ printf("Gustav Mahler\n");printf("Gustav\nMahler\n");printf("Gustav ");printf("Mahler\n"); return 0;}PE 2-­‐3/* Programming Exercise 2-3 */#include <stdio.h> intmain(void){ int ageyears; /* age in years */int agedays; /* age in days *//* large ages may require the long type */ageyears = 101; agedays = 365 * ageyears;printf("An age of %d years is %d days.\n", ageyears, agedays); return 0; }PE 2-­‐4/* Programming Exercise 2-4 */#include <stdio.h> voidjolly(void); voiddeny(void); intmain(void){ jolly();jolly();jolly();deny();return 0; }void jolly(void){printf("For he's a jolly good fellow!\n");}void deny(void){printf("Which nobody can deny!\n");}PE 2-­‐6/* Programming Exercise 2-6 */#include <stdio.h> intmain(void){ int toes;toes = 10;printf("toes = %d\n", toes);printf("Twice toes = %d\n", 2 * toes); printf("toessquared = %d\n", toes * toes); return 0;}/* or create two more variables, set them to 2 * toes and toes * toes */PE 2-­‐8/* Programming Exercise 2-8 */#include <stdio.h> voidone_three(void); voidtwo(void); int main(void){printf("starting now:\n");one_three(); printf("done!\n");return 0;}void one_three(void){printf("one\n"); two();printf("three\n");}void two(void){printf("two\n");}Chapter 3 Programming ExercisesPE 3-­‐2/* Programming Exercise 3-2 */#include <stdio.h> intmain(void){int ascii;printf("Enter an ASCII code: "); scanf("%d",&ascii);printf("%d is the ASCII code for %c.\n", ascii, ascii); return 0; }PE 3-­‐4/* Programming Exercise 3-4 */#include <stdio.h> intmain(void){ float num;printf("Enter a floating-point value: "); scanf("%f", &num);printf("fixed-point notation: %f\n", num);printf("exponential notation: %e\n", num);printf("p notation: %a\n", num); return 0;PE 3-­‐6/* Programming Exercise 3-6 */#include <stdio.h> intmain(void){float mass_mol = 3.0e-23; /* mass of water molecule in grams */ floatmass_qt = 950; /* mass of quart of water in grams */ float quarts;float molecules;printf("Enter the number of quarts of water: "); scanf("%f",&quarts);molecules = quarts * mass_qt / mass_mol;printf("%f quarts of water contain %e molecules.\n", quarts, molecules); return 0; }Chapter 4 Programming ExercisesPE 4-­‐1/* Programming Exercise 4-1 */#include <stdio.h> intmain(void){ char fname[40];char lname[40];printf("Enter your first name: ");scanf("%s", fname); printf("Enter yourlast name: "); scanf("%s", lname);printf("%s, %s\n", lname, fname); return0;}PE 4-­‐4/* Programming Exercise 4-4 */#include <stdio.h> intmain(void){ float height;char name[40];printf("Enter your height in inches: ");scanf("%f", &height); printf("Enter your name:"); scanf("%s", name);printf("%s, you are %.3f feet tall\n", name, height / 12.0);return0;}PE 4-­‐7/* Programming Exercise 4-7 */#include <stdio.h>#include <float.h> intmain(void){ float ot_f = 1.0 / 3.0;double ot_d = 1.0 / 3.0;printf(" float values: ");printf("%.4f %.12f %.16f\n", ot_f, ot_f, ot_f); printf("double values: ");printf("%.4f %.12f %.16f\n", ot_d, ot_d, ot_d);printf("FLT_DIG: %d\n", FLT_DIG); printf("DBL_DIG: %d\n",DBL_DIG); return 0;}Chapter 5 Programming ExercisesPE 5-­‐1/* Programming Exercise 5-1 */#include <stdio.h> intmain(void){ const int minperhour = 60;int minutes, hours, mins;printf("Enter the number of minutes to convert: ");scanf("%d", &minutes); while (minutes > 0 ){ hours = minutes / minperhour;mins = minutes % minperhour;printf("%d minutes = %d hours, %d minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d", &minutes);}printf("Bye\n");return0;}PE 5-­‐3/* Programming Exercise 5-3 */#include <stdio.h> intmain(void){ const int daysperweek = 7;int days, weeks, day_rem;printf("Enter the number of days: ");scanf("%d", &days); while (days > 0){ weeks = days / daysperweek;day_rem = days % daysperweek;printf("%d days are %d weeks and %d days.\n",days, weeks, day_rem);printf("Enter the number of days (0 or less to end): "); scanf("%d", &days);}printf("Done!\n"); return0;}PE 5-­‐5/* Programming Exercise 5-5 */ #include<stdio.h>int main(void) /* finds sum of first n integers */{int count, sum;int n;printf("Enter the upper limit: ");scanf("%d", &n); count = 0;sum = 0; while (count++< n) sum = sum + count; printf("sum= %d\n", sum); return 0;}PE 5-­‐7/* Programming Exercise 5-7 */#include <stdio.h> voidshowCube(double x);int main(void) /* finds cube of entered number */{ double val;printf("Enter a floating-point value: ");scanf("%lf", &val); showCube(val);return 0; }void showCube(double x){printf("The cube of %e is %e.\n", x, x*x*x );}Chapter 6 Programming ExercisesPE 6-­‐1/* pe6-1.c *//* this implementation assumes the character codes *//* are sequential, as they are in ASCII. */#include <stdio.h> #define SIZE 26int main( void ) { charlcase[SIZE]; int i; for(i = 0; i < SIZE; i++)lcase[i] = 'a' + i; for (i = 0; i< SIZE; i++) printf("%c",lcase[i]); printf("\n");return 0;}PE 6-­‐3/* pe6-3.c *//* this implementation assumes the character codes *//* are sequential, as they are in ASCII. */#include <stdio.h> intmain( void ){ char let = 'F';char start; charend;for (end = let; end >= 'A'; end--){for (start = let; start >= end; start--) printf("%c", start); printf("\n");}return 0;}PE 6-­‐6/* pe6-6.c */ #include<stdio.h> int main( void ){ int lower, upper, index;int square, cube;printf("Enter starting integer: ");scanf("%d", &lower); printf("Enter endinginteger: "); scanf("%d", &upper);printf("%5s %10s %15s\n", "num", "square", "cube"); for (index = lower; index <= upper; index++){ square = index * index;cube = index * square;printf("%5d %10d %15d\n", index, square, cube);}return 0;}PE 6-­‐8/* pe6-8.c */ #include<stdio.h> int main( void ){ double n, m;double res;printf("Enter a pair of numbers: ");while (scanf("%lf %lf", &n, &m) == 2){res = (n - m) / (n * m);printf("(%.3g - %.3g)/(%.3g*%.3g) = %.5g\n", n, m, n, m, res);printf("Enter next pair (non-numeric to quit): ");}return 0;}PE 6-­‐11/* pe6-11.c */#include <stdio.h>#define SIZE 8 intmain( void ){ int vals[SIZE];int i;printf("Please enter %d integers.\n", SIZE); for(i = 0; i < SIZE; i++) scanf("%d", &vals[i]);printf("Here, in reverse order, are the values you entered:\n"); for (i =SIZE - 1; i >= 0; i--) printf("%d ", vals[i]); printf("\n"); return 0;}PE 6-­‐13/* pe6-13.c *//* This version starts with the 0 power */#include <stdio.h>#define SIZE 8 intmain( void ){int twopows[SIZE]; inti;int value = 1; /* 2 to the 0 */for (i = 0; i < SIZE; i++){ twopows[i] = value;value *= 2;}i = 0;do {printf("%d ", twopows[i]);i++; } while (i < SIZE);printf("\n");return 0;}PE 6-­‐14/* pe-14.c *//* Programming Exercise 6-14 */#include <stdio.h>#define SIZE 8 intmain(void){ double arr[SIZE];double arr_cumul[SIZE]; inti;printf("Enter %d numbers:\n", SIZE);for (i = 0; i < SIZE; i++){printf("value #%d: ", i + 1);scanf("%lf", &arr[i]); /* or scanf("%lf",arr + i); */}arr_cumul[0] = arr[0]; /* set first element */ for (i = 1;i < SIZE; i++)arr_cumul[i] = arr_cumul[i-1] + arr[i];for (i = 0; i < SIZE; i++)printf("%8g ", arr[i]); printf("\n");for (i = 0; i < SIZE; i++)printf("%8g ", arr_cumul[i]);printf("\n");return 0;}PE 6-­‐16/* pe6-16.c */#include <stdio.h>#define RATE_SIMP 0.10#define RATE_COMP 0.05 #defineINIT_AMT 100.0 int main( void ){double daphne = INIT_AMT;double deidre = INIT_AMT; intyears = 0;while (deidre <= daphne){ daphne += RATE_SIMP * INIT_AMT;deidre += RATE_COMP * deidre;++years; }printf("Investment values after %d years:\n", years);printf("Daphne: $%.2f\n", daphne); printf("Deidre: $%.2f\n", deidre); return 0;}Chapter 7 Programming ExercisesPE 7-­‐1/* Programming Exercise 7-1 */#include <stdio.h> int main(void){ char ch;int sp_ct = 0;int nl_ct = 0;int other = 0;while ((ch =getchar()) != '#'){if (ch == ' ')sp_ct++; else if (ch =='\n') nl_ct++;else other++;}printf("spaces: %d, newlines: %d, others: %d\n", sp_ct, nl_ct, other);return 0;}PE 7-­‐3/* Programming Exercise 7-3 */#include <stdio.h> intmain(void){ int n; doublesumeven = 0.0; int ct_even= 0; double sumodd = 0.0;int ct_odd = 0;while (scanf("%d", &n) == 1 && n != 0){if (n % 2 == 0){sumeven += n;++ct_even;}else // n % 2 is either 1 or -1{sumodd += n;++ct_odd;}}printf("Number of evens: %d", ct_even); if(ct_even > 0)printf(" average: %g", sumeven / ct_even);putchar('\n');printf("Number of odds: %d", ct_odd); if(ct_odd > 0)printf(" average: %g", sumodd / ct_odd);putchar('\n'); printf("\ndone\n");return 0;}PE 7-­‐5/* Programming Exercise 7-5 */#include <stdio.h> intmain(void){ char ch;int ct1 = 0;int ct2 = 0;while ((ch =getchar()) != '#'){switch(ch){case '.' : putchar('!');++ct1; break;case '!' : putchar('!');putchar('!'); ++ct2; break; default : putchar(ch);}}printf("%d replacement(s) of . with !\n", ct1); printf("%d replacement(s) of ! with !!\n", ct2);return 0;}PE 7-­‐7// Programming Exercise 7-7#include <stdio.h>#define BASEPAY 10 // $10 per hour#define BASEHRS 40 // hours at basepay#define OVERTIME 1.5 // 1.5 time#define AMT1 300 // 1st rate tier#define AMT2 150 // 2st rate tier#define RATE1 0.15 // rate for 1st tier#define RATE2 0.20 // rate for 2nd tier #define RATE30.25 // rate for 3rd tier int main(void){double hours;double gross; doublenet; double taxes;printf("Enter the number of hours worked this week: ");scanf("%lf", &hours); if (hours <= BASEHRS) gross = hours* BASEPAY; elsegross = BASEHRS * BASEPAY + (hours - BASEHRS) * BASEPAY * OVERTIME; if (gross<= AMT1) taxes = gross * RATE1; else if (gross <= AMT1 + AMT2)taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3; net = gross - taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net);return 0;}PE 7-­‐9/* Programming Exercise 7-9 */#include <stdio.h> #include<stdbool.h> int main(void){int limit;int num; intdiv;bool numIsPrime; // use int if stdbool.h not availableprintf("Enter a positive integer: "); while(scanf("%d", &limit) == 1 && limit > 0){if (limit > 1)printf("Here are the prime numbers up through %d\n", limit); elseprintf("No primes.\n"); for(num = 2; num <= limit; num++){for (div = 2, numIsPrime = true; (div * div) <= num; div++)if (num % div == 0) numIsPrime = false; if (numIsPrime)printf("%d is prime.\n", num);}printf("Enter a positive integer (q to quit): ");}printf("Done!\n");return 0;}PE 7-­‐11/* pe7-11.c *//* Programming Exercise 7-11 */#include <stdio.h>#include <ctype.h> intmain(void){const double price_artichokes = 2.05;const double price_beets = 1.15; constdouble price_carrots = 1.09; const doubleDISCOUNT_RATE = 0.05; const double under5 =6.50; const double under20 = 14.00; constdouble base20 = 14.00; const double extralb= 0.50;char ch;double lb_artichokes = 0;double lb_beets = 0; doublelb_carrots = 0; double lb_temp;double lb_total;double cost_artichokes;double cost_beets; doublecost_carrots; doublecost_total; doublefinal_total; double discount;double shipping;printf("Enter a to buy artichokes, b for beets, ");printf("c for carrots, q to quit: "); while ((ch =getchar()) != 'q' && ch != 'Q'){ if (ch == '\n')continue; while (getchar() !='\n') continue; ch =tolower(ch); switch (ch){case 'a' : printf("Enter pounds of artichokes: ");scanf("%lf", &lb_temp); lb_artichokes += lb_temp; break;case 'b' : printf("Enter pounds of beets: ");scanf("%lf", &lb_temp); lb_beets += lb_temp; break;case 'c' : printf("Enter pounds of carrots: ");scanf("%lf", &lb_temp); lb_carrots += lb_temp; break;default : printf("%c is not a valid choice.\n", ch);}printf("Enter a to buy artichokes, b for beets, "); printf("c forcarrots, q to quit: ");}cost_artichokes = price_artichokes * lb_artichokes; cost_beets =price_beets * lb_beets; cost_carrots = price_carrots * lb_carrots;cost_total = cost_artichokes + cost_beets + cost_carrots; lb_total =lb_artichokes + lb_beets + lb_carrots; if (lb_total <= 0)shipping = 0.0; else if (lb_total < 5.0) shipping = under5;else if (lb_total < 20) shipping = under20; elseshipping = base20 + extralb * lb_total; if(cost_total > 100.0)discount = DISCOUNT_RATE * cost_total; elsediscount = 0.0;final_total = cost_total + shipping - discount; printf("Yourorder:\n");printf("%.2f lbs of artichokes at $%.2f per pound:$ %.2f\n",lb_artichokes, price_artichokes, cost_artichokes); printf("%.2f lbs ofbeets at $%.2f per pound: $%.2f\n", lb_beets, price_beets,cost_beets); printf("%.2f lbs of carrots at $%.2f per pound: $%.2f\n",lb_carrots, price_carrots, cost_carrots); printf("Total cost of vegetables: $%.2f\n", cost_total); if (cost_total > 100)printf("Volume discount: $%.2f\n", discount);printf("Shipping: $%.2f\n", shipping); printf("Totalcharges: $%.2f\n", final_total); return 0; }Chapter 8 Programming ExercisesPE 8-­‐1/* Programming Exercise 8-1 */#include <stdio.h>int main(void) { int ch; int ct =0; while ((ch = getchar()) != EOF)ct++;printf("%d characters read\n", ct);return0;}PE 8-­‐3/* Programming Exercise 8-3 *//* Using ctype.h eliminates need to assume consecutive coding */#include <stdio.h> #include<ctype.h> int main(void){ int ch; unsigned longuct = 0; unsigned long lct= 0; unsigned long oct = 0;while ((ch = getchar()) != EOF)if (isupper(ch)) uct++;else if (islower(ch)) lct++;else oct++;printf("%lu uppercase characters read\n", uct); printf("%lu lowercase characters read\n", lct); printf("%lu other characters read\n", oct);return0;}/* or you could use if (ch >='A' && ch <= 'Z') uct++;else if (ch >= 'a' && ch <= 'z')lct++; else oct++;*/PE 8-­‐5/* Programming Exercise 8-5 *//* binaryguess.c -- an improved number-guesser *//* but relies upon truthful, correct responses */#include <stdio.h> #include <ctype.h>int main(void) { int high = 100;int low = 1; int guess = (high +low) / 2; char response;printf("Pick an integer from 1 to 100. I will try to guess "); printf("it.\nRespond with a y if my guess is right, with"); printf("\na h if it is high, and with an l if it is low.\n"); printf("Uh...is your number %d?\n", guess);while ((response = getchar()) != 'y') /* get response */{if (response == '\n')continue;if (response != 'h' && response != 'l'){printf("I don't understand that response. Please enter h for\n"); printf("high, l for low, or y for correct.\n"); continue;}if (response == 'h')high = guess - 1; else if(response == 'l') low =guess + 1; guess = (high + low)/ 2;printf("Well, then, is it %d?\n", guess);}printf("I knew I could do it!\n"); return 0;}PE 8-­‐7/* Programming Exercise 8-7 */#include <stdio.h>#include <ctype.h>#include <stdio.h>#define BASEPAY1 8.75 // $8.75 per hour#define BASEPAY2 9.33 // $9.33 per hour#define BASEPAY3 10.00 // $10.00 per hour#define BASEPAY4 11.20 // $11.20 per hour#define BASEHRS 40 // hours at basepay#define OVERTIME 1.5 // 1.5 time#define AMT1 300 // 1st rate tier#define AMT2 150 // 2st rate tier#define RATE1 0.15 // rate for 1st tier#define RATE2 0.20 // rate for 2nd tier #defineRATE3 0.25 // rate for 3rd tier intgetfirst(void); void menu(void); int main(void){ double hours;double gross;double net;double taxes;double pay; charresponse;menu();while ((response = getfirst()) != 'q'){if (response == '\n') /* skip over newlines */ continue;response = tolower(response); /* accept A as a, etc. */ switch(response){case 'a': pay = BASEPAY1; break;case 'b': pay = BASEPAY2; break; case 'c':pay = BASEPAY3; break; case 'd': pay = BASEPAY4;break;default : printf("Please enter a, b, c, d, or q.\n");menu();continue; // go to beginning of loop}printf("Enter the number of hours worked this week: ");scanf("%lf", &hours); if (hours <= BASEHRS) gross =hours * pay; elsegross = BASEHRS * pay + (hours - BASEHRS) * pay * OVERTIME; if(gross <= AMT1) taxes = gross * RATE1; else if (gross <= AMT1 +AMT2)taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3; net = gross - taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes,net); menu(); }printf("Done.\n");return 0;}void menu(void){printf("********************************************************""*********\n");printf("Enter the letter corresponding to the desired pay rate"" or action:\n");printf("a) $%4.2f/hr b) $%4.2f/hr\n", BASEPAY1,BASEPAY2);printf("c) $%5.2f/hr d) $%5.2f/hr\n", BASEPAY3,BASEPAY4); printf("q) quit\n");printf("********************************************************""*********\n");}int getfirst(void){ int ch;ch = getchar(); while(isspace(ch)) ch =getchar(); while(getchar() != '\n')continue; return ch;}Chapter 9 Programming ExercisesPE 9-­‐1/* Programming Exercise 9-1 */#include <stdio.h>double min(double, double); intmain(void){double x, y; printf("Enter two numbers (qto quit): "); while (scanf("%lf %lf", &x, &y) == 2){ printf("The smaller number is %f.\n", min(x,y)); printf("Next two values (q to quit): ");}printf("Bye!\n");return 0;}double min(double a, double b){return a < b ? a : b;}/* alternative implementation doublemin(double a, double b){ if (a < b)return a; elsereturn b;}*/PE 9-­‐3/* Programming Exercise 9-3 */#include <stdio.h>void chLineRow(char ch, int c, int r); intmain(void){ char ch; int col, row; printf("Entera character (# to quit): "); while ( (ch =getchar()) != '#'){ if (ch =='\n') continue;printf("Enter number of columns and number of rows: "); if (scanf("%d %d", &col, &row) != 2) break; chLineRow(ch, col, row);printf("\nEnter next character (# to quit): ");}printf("Bye!\n");return 0;}// start rows and cols at 0 voidchLineRow(char ch, int c, int r){int col, row;for (row = 0; row < r ; row++){for (col = 0; col < c; col++)putchar(ch); putchar('\n');}return;}PE 9-­‐5/* Programming Exercise 9-5 */#include <stdio.h>void larger_of(double *p1, double *p2); intmain(void){double x, y; printf("Enter two numbers (qto quit): "); while (scanf("%lf %lf", &x, &y) == 2){larger_of(&x, &y);printf("The modified values are %f and %f.\n", x, y); printf("Next two values (q to quit): ");}printf("Bye!\n");return 0;}void larger_of(double *p1, double *p2){ if (*p1 > *p2)*p2 = *p1; else*p1 = *p2;}// alternatively:/*void larger_of(double *p1, double *p2){*p1= *p2 = *p1 > *p2 ? *p1 : *p2;}*/PE 9-­‐8/* Programming Exercise 9-8 */ #include<stdio.h>double power(double a, int b); /* ANSI prototype */ int main(void){ double x, xpow; int n; printf("Enter a number and theinteger power"); printf(" to which\nthe number will be raised.Enter q"); printf(" to quit.\n"); while (scanf("%lf%d", &x, &n)== 2){ xpow = power(x,n); /* function call */printf("%.3g to the power %d is %.5g\n", x, n, xpow);printf("Enter next pair of numbers or q to quit.\n");} printf("Hope you enjoyed this power trip -- bye!\n");return 0;} double power(double a, int b) /* function definition */{ double pow = 1;int i; if (b ==0) { if (a== 0)printf("0 to the 0 undefined; using 1 as the value\n"); pow =1.0; } else if (a == 0) pow = 0.0; else if (b > 0) for(i = 1;i <= b; i++) pow *= a; else /* b < 0 */ pow = 1.0 / power(a, - b);return pow; /* return the value of pow */}PE 9-­‐10/* Programming Exercise 9-10 */ #include <stdio.h>void to_base_n(int x, int base); int main(void){ int number; int b; int count;printf("Enter an integer (q to quit):\n"); while(scanf("%d", &number) == 1){ printf("Enter number base (2-10): ");while ((count = scanf("%d", &b))== 1&& (b < 2 || b > 10)){printf("base should be in the range 2-10: ");} if (count !=1) break;printf("Base %d equivalent: ", b);to_base_n(number, b); putchar('\n');printf("Enter an integer (q to quit):\n");} printf("Done.\n");return 0;}void to_base_n(int x, int base) /* recursive function */{ int r; r = x % base; if(x >= base) to_base_n(x / base,base); putchar('0' + r); return;}Chapter 10 Programming ExercisesPE 10-­‐1/* Programming Exercise 10-1 */#include <stdio.h>#define MONTHS 12 // number of months in a year #defineYRS 5 // number of years of data int main(void){// initializing rainfall data for 2010 - 2014 const floatrain[YRS][MONTHS] = {{4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},{8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},{9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},{7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},{7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}}; int year, month;float subtot, total;printf(" YEAR RAINFALL (inches)\n"); for(year = 0, total = 0; year < YRS; year++){ /* for each year, sum rainfall for each month */ for (month = 0, subtot = 0; month < MONTHS; month++) subtot += *(*(rain+ year) + month); printf("%5d %15.1f\n", 2010 + year, subtot);total += subtot; /* total for all years */}printf("\nThe yearly average is %.1f inches.\n\n", total/YRS); printf("MONTHLY AVERAGES:\n\n");printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct "); printf(" Nov Dec\n");for (month = 0; month < MONTHS; month++){ /* for each month, sum rainfall over years */ for(year = 0, subtot =0; year < YRS; year++) subtot += *(*(rain +year) + month); printf("%4.1f ", subtot/YRS);} printf("\n");return 0;}PE 10-­‐3/* Programming Exercise 10-3 */#include <stdio.h>#define LEN 10int max_arr(const int ar[], int n); voidshow_arr(const int ar[], int n);int main(void){int orig[LEN] = {1,2,3,4,12,6,7,8,9,10}; int max;show_arr(orig, LEN); max = max_arr(orig,LEN); printf("%d = largest value\n", max);return0;}int max_arr(const int ar[], int n){ int i; int max= ar[0];/* don't use 0 as initial max value -- fails if all array values are neg */for (i = 1; i < n; i++)if (max < ar[i]) max= ar[i]; return max;}void show_arr(const int ar[], int n){ int i; for (i = 0;i < n; i++) printf("%d ",ar[i]); putchar('\n');}PE 10-­‐5/* Programming Exercise 10-5 */#include <stdio.h>#define LEN 10double max_diff(const double ar[], int n); voidshow_arr(const double ar[], int n);int main(void){double orig[LEN] = {1.1,2,3,4,12,61.3,7,8,9,10}; double max;show_arr(orig, LEN);max = max_diff(orig, LEN);printf("%g = maximum difference\n", max);return0;}double max_diff(const double ar[], int n){ int i; double max= ar[0]; double min =ar[0];for (i = 1; i < n; i++){if (max < ar[i])max = ar[i]; else if (min >ar[i]) min = ar[i];}return max - min;}void show_arr(const double ar[], int n)。

C Primer Plus第6版编程练习答案(已下载)

C Primer Plus第6版编程练习答案(已下载)

Chapter 2 Programming Exercises欧阳学文PE 2­‐1/* Programming Exercise 21 */#include<stdio.h> intmain(void){ printf("GustavMahler\n");printf("Gustav\nMahler\n");printf("Gustav ");printf("Mahler\n");return 0;}PE 2­‐3/* Programming Exercise 23 */#include<stdio.h> intmain(void){ int ageyears; /* age inyears */ int agedays; /*age in days *//* large ages may require the longtype */ ageyears = 101; agedays = 365 * ageyears;printf("An age of %d years is %d days.\n", ageyears, agedays); return 0;}PE 2­‐4/* Programming Exercise 24 */#include<stdio.h>voidjolly(void);voiddeny(void);intmain(void){ jolly();jolly();jolly();deny();return0; }void jolly(void){printf("For he's a jolly good fellow!\n"); }void deny(void){printf("Which nobody can deny!\n"); }PE 2­‐6/* Programming Exercise 26 */#include<stdio.h> intmain(void){ inttoes;toes =10;printf("toes = %d\n", toes);printf("Twice toes = %d\n", 2 * toes);printf("toes squared = %d\n", toes * toes);return 0;}/* or create two more variables, set them to 2 * toes and toes * toes */PE 2­‐8/* Programming Exercise 28 */#include<stdio.h>voidone_three(void); voidtwo(void); intmain(void){printf("startingnow:\n");one_three();printf("done!\n");return 0;}void one_three(void){printf("one\n");two();printf("three\n");}void two(void){printf("two\n");}Chapter 3 Programming Exercises PE 3­‐2/* Programming Exercise 32 */#include<stdio.h> intmain(void){intascii;printf("Enter an ASCII code: "); scanf("%d", &ascii);printf("%d is the ASCII code for %c.\n", ascii, ascii); return 0;}PE 3­‐4/* Programming Exercise 34 */#include<stdio.h> intmain(void){ float num;printf("Enter a floatingpoint value: "); scanf("%f", &num);printf("fixedpointnotation: %f\n", num);printf("exponentialnotation: %e\n", num); printf("p notation: %a\n", num); return 0;}PE 3­‐6/* Programming Exercise 36 */#include<stdio.h> intmain(void){float mass_mol = 3.0e23; /* mass of watermolecule in grams */ float mass_qt = 950; /*mass of quart of water in grams */ float quarts;float molecules;printf("Enter the number of quarts of water: ");scanf("%f", &quarts);molecules = quarts * mass_qt / mass_mol;printf("%f quarts of water contain %e molecules.\n", quarts, molecules); return 0;}Chapter 4 Programming ExercisesPE 4­‐1/* Programming Exercise 41 */#include<stdio.h> intmain(void){ charfname[40];charlname[40];printf("Enter your first name: "); scanf("%s", fname); printf("Enteryour last name: ");scanf("%s", lname);printf("%s, %s\n", lname, fname); return 0;}PE 4­‐4/* Programming Exercise 44 */ #include<stdio.h> intmain(void){ floatheight;charname[40];printf("Enter your height in inches: "); scanf("%f",&height); printf("Enter yourname: "); scanf("%s", name);printf("%s, you are %.3f feet tall\n", name, height / 12.0);return0;}PE 4­‐7/* Programming Exercise 47 */#include<stdio.h>#include<float.h> intmain(void){ float ot_f = 1.0/ 3.0; doubleot_d = 1.0 / 3.0;printf(" float values:");printf("%.4f %.12f %.16f\n", ot_f, ot_f, ot_f); printf("double values: ");printf("%.4f %.12f %.16f\n", ot_d,ot_d, ot_d);printf("FLT_DIG: %d\n", FLT_DIG); printf("DBL_DIG: %d\n",DBL_DIG); return 0;}Chapter 5 Programming Exercises PE 5­‐1/* Programming Exercise 51 */#include<stdio.h> intmain(void){ const intminperhour = 60;int minutes, hours,mins;printf("Enter the number of minutes to convert: "); scanf("%d", &minutes); while (minutes > 0 ){ hours = minutes/ minperhour; mins =minutes % minperhour;printf("%d minutes = %d hours, %d minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d", &minutes);}printf("Bye\n");return0;}PE 5­‐3/* Programming Exercise 53 */#include<stdio.h> intmain(void){ const intdaysperweek = 7;int days, weeks,day_rem;printf("Enter the number ofdays: "); scanf("%d", &days);while (days > 0){ weeks = days /daysperweek; day_rem= days % daysperweek;printf("%d days are %d weeks and %ddays.\n", days, weeks, day_rem);printf("Enter the number of days (0 or less to end): "); scanf("%d", &days);}printf("Done!\n");return 0;}PE 5­‐5/* Programming Exercise 55*/ #include <stdio.h>int main(void) /* finds sum of first n integers */{int count,sum;int n;printf("Enter the upperlimit: "); scanf("%d", &n);count = 0;sum = 0;while (count++ < n)sum = sum + count;printf("sum = %d\n",sum); return 0;}PE 5­‐7/* ProgrammingExercise 57 */#include <stdio.h>voidshowCube(double x);int main(void) /* finds cube of entered number */ { double val;printf("Enter a floatingpointvalue: "); scanf("%lf", &val);showCube(val); return 0; }void showCube(double x){printf("The cube of %e is %e.\n", x, x*x*x );}Chapter 6 Programming ExercisesPE 6­‐1/* pe61.c *//* this implementation assumes the character codes */ /* are sequential, as they are in ASCII. */#include <stdio.h>#define SIZE 26 intmain( void ) { charlcase[SIZE]; int i;for (i = 0; i < SIZE;i++) lcase[i] = 'a'+ i; for (i = 0; i <SIZE; i++)printf("%c", lcase[i]);printf("\n");return 0;}PE 6­‐3/* pe63.c *//* this implementation assumes the character codes */ /* are sequential, as they are in ASCII. */#include<stdio.h> intmain( void ){ char let= 'F';char start;char end;for (end = let; end >= 'A'; end) {for (start = let; start >= end; start) printf("%c", start); printf("\n");}return0;}PE 6­‐6/* pe66.c */#include<stdio.h> intmain( void ){ int lower,upper, index; intsquare, cube;printf("Enter startinginteger: "); scanf("%d",&lower); printf("Enterending integer: ");scanf("%d", &upper);printf("%5s %10s %15s\n", "num", "square", "cube"); for (index = lower;index <= upper; index++){ square =index * index;cube = index * square;printf("%5d %10d %15d\n", index, square, cube); }return0;}PE 6­‐8/* pe68.c */#include<stdio.h> intmain( void ){ double n, m;doubleres;printf("Enter a pair of numbers: ");while (scanf("%lf %lf", &n, &m) == 2){res = (n m) / (n * m);printf("(%.3g %.3g)/(%.3g*%.3g) = %.5g\n", n, m, n, m, res); printf("Enter next pair (nonnumeric to quit): ");}return 0;}PE 6­‐11/* pe611.c */#include<stdio.h>#defineSIZE 8 intmain( void ){ intvals[SIZE];int i;printf("Please enter %dintegers.\n", SIZE); for (i = 0; i <SIZE; i++) scanf("%d",&vals[i]);printf("Here, in reverse order, are the values you entered:\n"); for (i = SIZE 1; i >= 0; i) printf("%d ", vals[i]); printf("\n"); return 0;}PE 6­‐13/* pe613.c *//* This version starts with the 0 power */#include<stdio.h>#defineSIZE 8 intmain( void ){inttwopows[SIZE];int i;int value = 1; /* 2 to the 0 */for (i = 0; i < SIZE; i++){ twopows[i]= value; value*= 2;}i =0;do{printf("%d ",twopows[i]);i++; } while (i <SIZE); printf("\n"); return 0;}PE 6­‐14/* pe14.c *//* Programming Exercise 614 */ #include<stdio.h>#defineSIZE 8 intmain(void){ doublearr[SIZE];doublearr_cumul[SIZE];int i;printf("Enter %d numbers:\n", SIZE);for (i = 0; i < SIZE; i++){printf("value #%d: ", i+ 1); scanf("%lf",&arr[i]); /* or scanf("%lf", arr + i); */}arr_cumul[0] = arr[0]; /* set first element */ for (i = 1; i < SIZE; i++) arr_cumul[i] = arr_cumul[i1] + arr[i]; for (i = 0; i < SIZE;i++) printf("%8g ",arr[i]); printf("\n");for (i = 0; i < SIZE; i++)printf("%8g ", arr_cumul[i]);printf("\n");return 0;}PE 6­‐16/* pe616.c */#include <stdio.h>#define RATE_SIMP 0.10#defineRATE_COMP0.05 #defineINIT_AMT 100.0int main( void ){double daphne =INIT_AMT;double deidre =INIT_AMT; intyears = 0;while (deidre <= daphne){ daphne +=RATE_SIMP * INIT_AMT; deidre += RATE_COMP * deidre;++years;}printf("Investment values after %d years:\n", years); printf("Daphne: $%.2f\n", daphne); printf("Deidre: $%.2f\n", deidre); return 0;}Chapter 7 Programming Exercises PE 7­‐1/* ProgrammingExercise 71 */#include <stdio.h>int main(void){ charch; intsp_ct = 0;int nl_ct =0; intother = 0;while ((ch =getchar()) != '#'){if (ch == ' ')sp_ct++; elseif (ch == '\n')nl_ct++; elseother++;}printf("spaces: %d, newlines: %d, others: %d\n", sp_ct, nl_ct, other);return0;}PE 7­‐3/* Programming Exercise 73 */#include<stdio.h> intmain(void){ int n;double sumeven= 0.0; intct_even = 0;double sumodd =0.0; int ct_odd= 0;while (scanf("%d", &n) == 1 && n != 0){if (n % 2 == 0){sumeven += n;++ct_even;}else // n % 2 is either 1 or 1{sumodd += n;++ct_odd;} }printf("Number of evens: %d",ct_even); if (ct_even > 0)printf(" average: %g", sumeven / ct_even); putchar('\n');printf("Number of odds: %d",ct_odd); if (ct_odd > 0)printf(" average: %g", sumodd / ct_odd); putchar('\n');printf("\ndone\n");return0;}PE 7­‐5/* Programming Exercise 75 */#include<stdio.h> intmain(void){ charch; intct1 = 0;int ct2 =0;while ((ch=getchar())!= '#'){switch(ch){case '.' : putchar('!'); ++ct1;break; case '!' :putchar('!');putchar('!');++ct2;break; default :putchar(ch);} }printf("%d replacement(s) of . with !\n", ct1); printf("%d replacement(s) of ! with !!\n", ct2);return0;}PE 7­‐7// Programming Exercise 77#include <stdio.h>#define BASEPAY 10 // $10 per hour#define BASEHRS 40 // hours at basepay #define OVERTIME 1.5 // 1.5 time#define AMT1 300 // 1st rate tier#define AMT2 150 // 2st rate tier#define RATE1 0.15 // rate for 1st tier#define RATE2 0.20 // rate for2nd tier #define RATE3 0.25 //rate for 3rd tier int main(void){doublehours;double gross;double net;double taxes;printf("Enter the number of hours workedthis week: "); scanf("%lf", &hours); if(hours <= BASEHRS) gross = hours *BASEPAY; elsegross = BASEHRS * BASEPAY + (hours BASEHRS)* BASEPAY * OVERTIME; if (gross <= AMT1)taxes = gross * RATE1; else if (gross <= AMT1 + AMT2)taxes = AMT1 * RATE1 + (gross AMT1)* RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (grossAMT1 AMT2) * RATE3; net = gross taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net);return0;}PE 7­‐9/* Programming Exercise 79 */#include<stdio.h>#include<stdbool.h> intmain(void){intlimit;int num;int div;bool numIsPrime; // use int if stdbool.h not available printf("Enter a positive integer: ");while (scanf("%d", &limit) == 1 &&limit > 0){if (limit > 1)printf("Here are the prime numbers upthrough %d\n", limit); elseprintf("No primes.\n");for (num = 2; num <= limit;num++){for (div = 2, numIsPrime = true; (div * div) <= num; div++) if (num % div == 0) numIsPrime = false; if (numIsPrime)printf("%d is prime.\n", num);}printf("Enter a positive integer (q to quit): ");}printf("Done!\n");return 0;}PE 7­‐11/* pe711.c *//* Programming Exercise 711 */#include<stdio.h>#include<ctype.h> intmain(void){const doubleprice_artichokes = 2.05; const double price_beets = 1.15; const doubleprice_carrots = 1.09; const double DISCOUNT_RATE = 0.05; const double under5 = 6.50; const double under20 = 14.00; const double base20 = 14.00; const double extralb = 0.50;charch;doublelb_artichokes = 0;double lb_beets =0; doublelb_carrots = 0;double lb_temp;double lb_total;doublecost_artichokes;doublecost_beets;doublecost_carrots;double cost_total;doublefinal_total;double discount;double shipping;printf("Enter a to buy artichokes, b for beets, "); printf("c for carrots, q to quit: "); while ((ch = getchar()) != 'q' && ch != 'Q'){ if (ch == '\n') continue; while(getchar() != '\n')continue; ch =tolower(ch);switch (ch) {case 'a' : printf("Enter pounds of artichokes: "); scanf("%lf",&lb_temp); lb_artichokes +=lb_temp; break;case 'b' : printf("Enter pounds ofbeets: "); scanf("%lf",&lb_temp); lb_beets +=lb_temp; break;case 'c' : printf("Enter pounds of carrots: "); scanf("%lf",&lb_temp); lb_carrots +=lb_temp; break;default : printf("%c is not a valid choice.\n", ch);}printf("Enter a to buy artichokes, b for beets, "); printf("c for carrots, q to quit: ");}cost_artichokes = price_artichokes *lb_artichokes; cost_beets = price_beets *lb_beets; cost_carrots = price_carrots *lb_carrots; cost_total = cost_artichokes + cost_beets + cost_carrots; lb_total =lb_artichokes + lb_beets + lb_carrots; if (lb_total <= 0) shipping = 0.0; else if (lb_total < 5.0) shipping = under5; else if (lb_total < 20) shipping = under20; else shipping = base20 + extralb *lb_total; if (cost_total > 100.0)discount =DISCOUNT_RATE * cost_total;else discount = 0.0;final_total = cost_total + shipping discount; printf("Your order:\n");printf("%.2f lbs of artichokes at $%.2f per pound:$ %.2f\n", lb_artichokes, price_artichokes, cost_artichokes);printf("%.2f lbs of beets at $%.2f per pound: $%.2f\n", lb_beets, price_beets,cost_beets); printf("%.2f lbs of carrots at $%.2f per pound: $%.2f\n", lb_carrots, price_carrots, cost_carrots); printf("Total cost of vegetables: $%.2f\n", cost_total); if (cost_total > 100)printf("Volume discount: $%.2f\n", discount); printf("Shipping: $%.2f\n", shipping); printf("Total charges:$%.2f\n", final_total); return 0; } Chapter 8 Programming Exercises PE 8­‐1/* Programming Exercise 81 */#include <stdio.h>int main(void) { int ch;int ct = 0; while((ch = getchar()) != EOF)ct++;printf("%d characters read\n", ct);return0;}PE 8­‐3/* Programming Exercise 83 *//* Using ctype.h eliminates need to assume consecutive coding */#include<stdio.h>#include<ctype.h> intmain(void){ int ch;unsigned long uct= 0; unsignedlong lct = 0;unsigned long oct= 0;while ((ch =getchar()) != EOF)if (isupper(ch))uct++; else if(islower(ch))lct++; elseoct++;printf("%lu uppercase characters read\n", uct); printf("%lu lowercase characters read\n", lct); printf("%lu other characters read\n", oct);return0;}/* or you coulduse if (ch >= 'A'&& ch <= 'Z')uct++;else if (ch >= 'a' && ch<= 'z') lct++; elseoct++;*/PE 8­‐5/* Programming Exercise 85 *//* binaryguess.c an improved numberguesser */ /* but relies upon truthful, correct responses */#include <stdio.h>#include <ctype.h>int main(void) { inthigh = 100; int low= 1; int guess =(high + low) / 2;char response;printf("Pick an integer from 1 to 100. I will try to guess "); printf("it.\nRespond with a y if my guess is right, with");printf("\na h if it is high, and with an l if it is low.\n");printf("Uh...is your number %d?\n", guess);while ((response = getchar()) != 'y') /* get response */{if (response == '\n')continue;if (response != 'h' && response != 'l'){printf("I don't understand that response. Please enterh for\n"); printf("high, l for low, or y for correct.\n"); continue;}if (response == 'h')high = guess 1;else if (response == 'l')low = guess + 1;guess = (high + low)/ 2;printf("Well, then, is it %d?\n", guess);}printf("I knew I could doit!\n"); return 0;}PE 8­‐7/* Programming Exercise 87 */#include <stdio.h>#include <ctype.h>#include <stdio.h>#define BASEPAY1 8.75 // $8.75 per hour #define BASEPAY2 9.33 // $9.33 per hour #define BASEPAY3 10.00 // $10.00 per hour #define BASEPAY4 11.20 // $11.20 per hour #define BASEHRS 40 // hours at basepay #define OVERTIME 1.5 // 1.5 time#define AMT1 300 // 1st rate tier#define AMT2 150 // 2st rate tier#define RATE1 0.15 // rate for 1st tier #define RATE2 0.20 // ratefor 2nd tier #define RATE3 0.25// rate for 3rd tier int getfirst(void);void menu(void); int main(void){ doublehours;doublegross;double net;doubletaxes;double pay;charresponse;menu();while ((response = getfirst()) != 'q'){if (response == '\n') /* skip over newlines */ continue;response = tolower(response); /* accept A as a, etc.*/ switch (response){case 'a': pay = BASEPAY1;break; case 'b': pay =BASEPAY2; break; case 'c':pay = BASEPAY3; break; case'd': pay = BASEPAY4; break;default : printf("Please enter a, b, c, d, or q.\n"); menu();continue; // go to beginning of loop}printf("Enter the number of hours workedthis week: "); scanf("%lf", &hours); if(hours <= BASEHRS) gross = hours *pay; elsegross = BASEHRS * pay + (hours BASEHRS) *pay * OVERTIME; if (gross <= AMT1)taxes = gross * RATE1; else if (gross <= AMT1 +AMT2)taxes = AMT1 * RATE1 + (gross AMT1)* RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross AMT1 AMT2) * RATE3; net = gross taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net); menu(); }printf("Done.\n");return0;}void menu(void){printf("********************************************************""*********\n");printf("Enter the letter corresponding to the desired pay rate"" or action:\n");printf("a) $%4.2f/hr b) $%4.2f/hr\n", BASEPAY1, BASEPAY2);printf("c) $%5.2f/hr d) $%5.2f/hr\n", BASEPAY3, BASEPAY4); printf("q)quit\n");printf("*********************************************** *********""*********\n");}int getfirst(void){intch;ch = getchar();while (isspace(ch))ch = getchar();while (getchar() !='\n') continue;return ch;}Chapter 9 Programming ExercisesPE 9­‐1/* Programming Exercise 91 */#include <stdio.h>double min(double,double); int main(void){double x, y; printf("Entertwo numbers (q to quit): ");while (scanf("%lf %lf", &x, &y) ==2){ printf("The smaller numberis %f.\n", min(x,y)); printf("Next two values (q to quit): ");}printf("Bye!\n");return0;}double min(double a, double b){return a < b ? a : b;}/* alternative implementation doublemin(double a, double b){ if (a< b)return a;elsereturn b;}*/PE 9­‐3/* Programming Exercise 93 */#include <stdio.h>void chLineRow(char ch, int c,int r); int main(void){ char ch; int col, row; printf("Enter a character (# to quit): "); while ( (ch = getchar()) != '#') { if (ch== '\n')continue;printf("Enter number of columns and number of rows: "); if (scanf("%d %d", &col, &row) != 2) break; chLineRow(ch, col, row);printf("\nEnter next character (# to quit): "); }printf("Bye!\n");return0;}// start rows and cols at 0void chLineRow(char ch,int c, int r){int col, row;for (row = 0; row < r ; row++){for (col = 0; col < c;col++) putchar(ch);putchar('\n');}return;}PE 9­‐5/* Programming Exercise 95 */#include <stdio.h>void larger_of(double *p1,double *p2); int main(void){double x, y; printf("Entertwo numbers (q to quit): ");while (scanf("%lf %lf", &x, &y) ==2){larger_of(&x, &y);printf("The modified values are %f and %f.\n", x, y); printf("Next two values (q to quit): ");}printf("Bye!\n");return0;}void larger_of(double *p1, double *p2) { if(*p1 > *p2)*p2 = *p1;else*p1 = *p2;}// alternatively:/*void larger_of(double *p1, double *p2) {*p1= *p2 = *p1 > *p2 ? *p1 : *p2; }*/PE 9­‐8/* Programming Exercise 98*/ #include <stdio.h>double power(double a, int b); /* ANSI prototype */ int main(void) { double x,xpow; int n; printf("Enter a number andthe integer power"); printf(" to which\nthe number will be raised. Enter q"); printf(" toquit.\n"); while (scanf("%lf%d", &x, &n)== 2){ xpow = power(x,n); /* function call */ printf("%.3g to the power %dis %.5g\n", x, n, xpow); printf("Enter nextpair of numbers or q to quit.\n");} printf("Hope you enjoyed this powertrip bye!\n"); return 0;} double power(double a, int b) /* function definition */{ doublepow = 1;int i; if(b == 0){ if (a== 0)printf("0 to the 0 undefined; using 1 as thevalue\n"); pow = 1.0; } else if (a == 0) pow = 0.0; else if (b > 0) for(i = 1; i <= b;i++) pow *= a; else /* b < 0 */ pow = 1.0 / power(a, b);return pow; /* return the value of pow */ }PE 9­‐10/* Programming Exercise 910 */#include <stdio.h> voidto_base_n(int x, int base); intmain(void) { int number; int b;int count; printf("Enter aninteger (q to quit):\n"); while(scanf("%d", &number) == 1){ printf("Enter numberbase (210): "); while ((count= scanf("%d", &b))== 1&& (b < 2 || b > 10)){printf("base should be in the range 210: ");} if(count != 1)break;。

C++ primer plus(第6版)中文版编程练习答案第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(第六版)课后编程练习答案

c++primerplus(第六版)课后编程练习答案

第二章:开始学习C++n”;}<<endl;return 0;}double C2F(double t){return *t+32;}<<endl;return 0;}double convert(double t){return 63240*t;n";return 0;}style(miles per gallon):"<<endl;cout<<Euro_style<<" L/100Km = "<<*Euro_style<<" mpg\n";return 0;}Enter the automobile gasoline consumption figure inEuropean style(liters per 100 kilometers):Converts to . style(miles per gallon):L/100Km = mpgPress any key to continuestyle(miles per gallon):";double US_style;cin>>US_style;cout<<"Converts to European style(miles per gallon):"<<endl;cout<<US_style<<" mpg = "<< *US_style<<"L/100Km\n";return 0;}style(miles per gallon):19Converts to European style(miles per gallon):19 mpg = 100KmPress any key to continue第四章复合类型n";return 0;}rand<<endl<<snack[i].weight<<endl<<snack[i].calory<<endl<<endl;}return 0;}rand="A";eight=;snack[0].calory=200;snack[1].brand="B";snack[1].weight=;snack[1].calory=400;snack[2].brand="C";snack[2].weight=;snack[2].calory=500;for(int i=0;i<3;i++){cout << " brand: " << snack[i].brand << endl;cout << " weight: " << snack[i].weight << endl;cout << " calorie: " << snack[i].calory << endl<<endl;}delete [] snack;return 0;}et();car* ps=new car[num];for(int i=0;i<num;++i){cout<<"Car #"<<i+1<<":\n";cout<<"Please enter the make: ";getline(cin,ps[i].name);cout<<"Please enter the year made: ";(cin>>ps[i].year).get();}cout<<"Here is your collection:\n";for(int i=0;i<num;++i)cout<<ps[i].year<<" "<<ps[i].name<<endl;delete [] ps;return 0;}n";return 0;}n";return 0;};for(int k=0;k<=i;++k) cout<<"*";cout<<endl;}return 0;}。

C Primer Plus第6版编程练习答案(已下载)

C Primer Plus第6版编程练习答案(已下载)

Chapter 2 Programming ExercisesPE 2-­‐1/* Programming Exercise 2-1 */#include <stdio.h> intmain(void){ printf("Gustav Mahler\n");printf("Gustav\nMahler\n");printf("Gustav ");printf("Mahler\n"); return 0;}PE 2-­‐3/* Programming Exercise 2-3 */#include <stdio.h> intmain(void){ int ageyears; /* age in years */int agedays; /* age in days *//* large ages may require the long type */ageyears = 101; agedays = 365 * ageyears;printf("An age of %d years is %d days.\n", ageyears, agedays); return 0;}PE 2-­‐4/* Programming Exercise 2-4 */#include <stdio.h>void jolly(void); voiddeny(void); intmain(void){ jolly(); jolly();jolly();deny();return 0; }void jolly(void){printf("For he's a jolly good fellow!\n");}void deny(void){printf("Which nobody can deny!\n");}PE 2-­‐6/* Programming Exercise 2-6 */#include <stdio.h> intmain(void){ inttoes;toes = 10;printf("toes = %d\n", toes);printf("Twice toes = %d\n", 2 * toes); printf("toessquared = %d\n", toes * toes); return 0;}/* or create two more variables, set them to 2 * toes and toes * toes */PE 2-­‐8/* Programming Exercise 2-8 */#include <stdio.h>void one_three(void);void two(void); intmain(void){printf("starting now:\n");one_three(); printf("done!\n");return 0;}void one_three(void){printf("one\n");two();printf("three\n");}void two(void){printf("two\n");}Chapter 3 Programming ExercisesPE 3-­‐2/* Programming Exercise 3-2 */#include <stdio.h> intmain(void){int ascii;printf("Enter an ASCII code: "); scanf("%d",&ascii);printf("%d is the ASCII code for %c.\n", ascii, ascii); return 0;}PE 3-­‐4/* Programming Exercise 3-4 */#include <stdio.h> intmain(void){ floatnum;printf("Enter a floating-point value: "); scanf("%f",&num);printf("fixed-point notation: %f\n", num);printf("exponential notation: %e\n", num);printf("p notation: %a\n", num); return 0;}PE 3-­‐6/* Programming Exercise 3-6 */#include <stdio.h> intmain(void){float mass_mol = 3.0e-23; /* mass of water molecule in grams */ floatmass_qt = 950; /* mass of quart of water in grams */ float quarts;float molecules;printf("Enter the number of quarts of water: "); scanf("%f",&quarts);molecules = quarts * mass_qt / mass_mol;printf("%f quarts of water contain %e molecules.\n", quarts, molecules); return 0;}Chapter 4 Programming ExercisesPE 4-­‐1/* Programming Exercise 4-1 */#include <stdio.h> intmain(void){ charfname[40]; charlname[40];printf("Enter your first name: ");scanf("%s", fname); printf("Enter yourlast name: "); scanf("%s", lname);printf("%s, %s\n", lname, fname); return0;}PE 4-­‐4/* Programming Exercise 4-4 */#include <stdio.h> intmain(void){ floatheight; charname[40];printf("Enter your height in inches: ");scanf("%f", &height); printf("Enter your name:"); scanf("%s", name);printf("%s, you are %.3f feet tall\n", name, height / 12.0);return 0;}PE 4-­‐7/* Programming Exercise 4-7 */#include <stdio.h>#include <float.h> intmain(void){ float ot_f = 1.0 / 3.0;double ot_d = 1.0 / 3.0;printf(" float values: ");printf("%.4f %.12f %.16f\n", ot_f, ot_f, ot_f); printf("doublevalues: ");printf("%.4f %.12f %.16f\n", ot_d, ot_d, ot_d);printf("FLT_DIG: %d\n", FLT_DIG); printf("DBL_DIG: %d\n",DBL_DIG); return 0;}Chapter 5 Programming ExercisesPE 5-­‐1/* Programming Exercise 5-1 */#include <stdio.h> intmain(void){ const int minperhour = 60;int minutes, hours, mins;printf("Enter the number of minutes to convert: ");scanf("%d", &minutes); while (minutes > 0 ){ hours = minutes /minperhour; mins = minutes %minperhour;printf("%d minutes = %d hours, %d minutes\n", minutes, hours, mins); printf("Enter next minutes value (0 to quit): "); scanf("%d", &minutes);}printf("Bye\n");return 0;}PE 5-­‐3/* Programming Exercise 5-3 */#include <stdio.h> intmain(void){ const int daysperweek = 7;int days, weeks, day_rem;printf("Enter the number of days: ");scanf("%d", &days); while (days > 0){ weeks = days / daysperweek;day_rem = days % daysperweek;printf("%d days are %d weeks and %d days.\n",days, weeks, day_rem);printf("Enter the number of days (0 or less to end): "); scanf("%d", &days);}printf("Done!\n");return 0;}PE 5-­‐5/* Programming Exercise 5-5 */ #include<stdio.h>int main(void) /* finds sum of first n integers */{int count, sum;int n;printf("Enter the upper limit: ");scanf("%d", &n); count = 0;sum = 0; while (count++< n) sum = sum + count; printf("sum= %d\n", sum); return 0;}PE 5-­‐7/* Programming Exercise 5-7 */#include <stdio.h> voidshowCube(double x);int main(void) /* finds cube of entered number */{ doubleval;printf("Enter a floating-point value: ");scanf("%lf", &val); showCube(val);return 0; }void showCube(double x){printf("The cube of %e is %e.\n", x, x*x*x );}Chapter 6 Programming ExercisesPE 6-­‐1/* pe6-1.c *//* this implementation assumes the character codes *//* are sequential, as they are in ASCII. */#include <stdio.h> #define SIZE26 int main( void ) { charlcase[SIZE]; int i; for(i = 0; i < SIZE; i++)lcase[i] = 'a' + i; for (i = 0; i< SIZE; i++) printf("%c",lcase[i]); printf("\n");return 0;}PE 6-­‐3/* pe6-3.c *//* this implementation assumes the character codes *//* are sequential, as they are in ASCII. */#include <stdio.h> intmain( void ){ char let ='F'; char start;char end;for (end = let; end >= 'A'; end--){for (start = let; start >= end; start--) printf("%c", start); printf("\n");}return 0;}PE 6-­‐6/* pe6-6.c */ #include<stdio.h> int main( void ){ int lower, upper, index;int square, cube;printf("Enter starting integer: ");scanf("%d", &lower); printf("Enter endinginteger: "); scanf("%d", &upper);printf("%5s %10s %15s\n", "num", "square", "cube"); for (index = lower; index <= upper; index++){ square = index *index; cube = index * square;printf("%5d %10d %15d\n", index, square, cube);}return 0;}PE 6-­‐8/* pe6-8.c */ #include<stdio.h> int main( void ){ double n,m; double res;printf("Enter a pair of numbers: ");while (scanf("%lf %lf", &n, &m) == 2){res = (n - m) / (n * m);printf("(%.3g - %.3g)/(%.3g*%.3g) = %.5g\n", n, m, n, m, res);printf("Enter next pair (non-numeric to quit): ");}return 0;}PE 6-­‐11/* pe6-11.c */#include<stdio.h> #defineSIZE 8 intmain( void ){ intvals[SIZE]; int i;printf("Please enter %d integers.\n", SIZE);for (i = 0; i < SIZE; i++) scanf("%d", &vals[i]);printf("Here, in reverse order, are the values you entered:\n"); for(i = SIZE - 1; i >= 0; i--) printf("%d ", vals[i]); printf("\n"); return 0;}PE 6-­‐13/* pe6-13.c *//* This version starts with the 0 power */#include<stdio.h> #defineSIZE 8 intmain( void ){int twopows[SIZE];int i;int value = 1; /* 2 to the 0 */for (i = 0; i < SIZE; i++){ twopows[i] =value; value *= 2;}i = 0;do {printf("%d ", twopows[i]);i++; } while (i < SIZE);printf("\n");return 0;}PE 6-­‐14/* pe-14.c *//* Programming Exercise 6-14 */#include<stdio.h> #defineSIZE 8 int main(void){ double arr[SIZE];double arr_cumul[SIZE]; inti;printf("Enter %d numbers:\n", SIZE);for (i = 0; i < SIZE; i++){printf("value #%d: ", i + 1);scanf("%lf", &arr[i]); /* or scanf("%lf",arr + i); */}arr_cumul[0] = arr[0]; /* set first element */ for (i = 1; i < SIZE; i++)arr_cumul[i] = arr_cumul[i-1] + arr[i];for (i = 0; i < SIZE; i++)printf("%8g ", arr[i]); printf("\n");for (i = 0; i < SIZE; i++)printf("%8g ", arr_cumul[i]);printf("\n");return 0;}PE 6-­‐16/* pe6-16.c */#include <stdio.h>#define RATE_SIMP 0.10#define RATE_COMP 0.05#define INIT_AMT 100.0 intmain( void ){double daphne = INIT_AMT;double deidre = INIT_AMT; intyears = 0;while (deidre <= daphne){ daphne += RATE_SIMP *INIT_AMT; deidre += RATE_COMP * deidre;++years; }printf("Investment values after %d years:\n", years);printf("Daphne: $%.2f\n", daphne); printf("Deidre: $%.2f\n",deidre); return 0;}Chapter 7 Programming ExercisesPE 7-­‐1/* Programming Exercise 7-1 */#include <stdio.h> int main(void){ char ch;int sp_ct = 0;int nl_ct = 0;int other = 0;while ((ch =getchar()) != '#'){if (ch == ' ')sp_ct++; else if (ch =='\n') nl_ct++;else other++;}printf("spaces: %d, newlines: %d, others: %d\n", sp_ct, nl_ct, other);return 0;}PE 7-­‐3/* Programming Exercise 7-3 */#include <stdio.h> intmain(void){ int n; doublesumeven = 0.0; int ct_even= 0; double sumodd = 0.0;int ct_odd = 0;while (scanf("%d", &n) == 1 && n != 0){if (n % 2 == 0){sumeven += n;++ct_even;}else // n % 2 is either 1 or -1{sumodd += n;++ct_odd;}}printf("Number of evens: %d", ct_even); if(ct_even > 0)printf(" average: %g", sumeven / ct_even);putchar('\n');printf("Number of odds: %d", ct_odd); if(ct_odd > 0)printf(" average: %g", sumodd / ct_odd);putchar('\n'); printf("\ndone\n");return 0;}PE 7-­‐5/* Programming Exercise 7-5 */#include <stdio.h> intmain(void){ char ch;int ct1 = 0;int ct2 = 0;while ((ch =getchar()) != '#'){switch(ch){case '.' : putchar('!');++ct1; break;case '!' : putchar('!');putchar('!'); ++ct2; break; default : putchar(ch);}}printf("%d replacement(s) of . with !\n", ct1); printf("%d replacement(s) of ! with !!\n", ct2);return 0;}PE 7-­‐7// Programming Exercise 7-7#include <stdio.h>#define BASEPAY 10 // $10 per hour#define BASEHRS 40 // hours at basepay#define OVERTIME 1.5 // 1.5 time#define AMT1 300 // 1st rate tier#define AMT2 150 // 2st rate tier#define RATE1 0.15 // rate for 1st tier#define RATE2 0.20 // rate for 2nd tier #defineRATE3 0.25 // rate for 3rd tier int main(void){double hours;double gross; doublenet; double taxes;printf("Enter the number of hours worked this week: ");scanf("%lf", &hours); if (hours <= BASEHRS) gross = hours* BASEPAY; elsegross = BASEHRS * BASEPAY + (hours - BASEHRS) * BASEPAY * OVERTIME; if(gross <= AMT1) taxes = gross * RATE1; else if (gross <= AMT1 + AMT2) taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3; net = gross - taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net);return 0;}PE 7-­‐9/* Programming Exercise 7-9 */#include <stdio.h>#include <stdbool.h> intmain(void){int limit;int num; intdiv;bool numIsPrime; // use int if stdbool.h not availableprintf("Enter a positive integer: "); while(scanf("%d", &limit) == 1 && limit > 0){if (limit > 1)printf("Here are the prime numbers up through %d\n", limit);elseprintf("No primes.\n");for (num = 2; num <= limit; num++){for (div = 2, numIsPrime = true; (div * div) <= num; div++)if (num % div == 0) numIsPrime = false; if (numIsPrime)printf("%d is prime.\n", num);}printf("Enter a positive integer (q to quit): ");}printf("Done!\n");return 0;}PE 7-­‐11/* pe7-11.c *//* Programming Exercise 7-11 */#include <stdio.h>#include <ctype.h> intmain(void){const double price_artichokes = 2.05;const double price_beets = 1.15; constdouble price_carrots = 1.09; const doubleDISCOUNT_RATE = 0.05; const double under5 =6.50; const double under20 = 14.00; constdouble base20 = 14.00; const double extralb= 0.50;char ch;double lb_artichokes = 0;double lb_beets = 0; doublelb_carrots = 0; double lb_temp;double lb_total;doublecost_artichokes; doublecost_beets; doublecost_carrots; doublecost_total; doublefinal_total; double discount;double shipping;printf("Enter a to buy artichokes, b for beets, ");printf("c for carrots, q to quit: "); while ((ch =getchar()) != 'q' && ch != 'Q'){ if (ch == '\n')continue; while (getchar() !='\n') continue; ch =tolower(ch); switch (ch){case 'a' : printf("Enter pounds of artichokes: ");scanf("%lf", &lb_temp); lb_artichokes += lb_temp; break;case 'b' : printf("Enter pounds of beets: ");scanf("%lf", &lb_temp); lb_beets += lb_temp; break;case 'c' : printf("Enter pounds of carrots: "); scanf("%lf", &lb_temp); lb_carrots += lb_temp; break;default : printf("%c is not a valid choice.\n", ch);}printf("Enter a to buy artichokes, b for beets, "); printf("c forcarrots, q to quit: ");}cost_artichokes = price_artichokes * lb_artichokes; cost_beets= price_beets * lb_beets; cost_carrots = price_carrots * lb_carrots;cost_total = cost_artichokes + cost_beets + cost_carrots; lb_total =lb_artichokes + lb_beets + lb_carrots; if (lb_total <= 0)shipping = 0.0; else if (lb_total < 5.0) shipping = under5;else if (lb_total < 20) shipping = under20; elseshipping = base20 + extralb * lb_total; if(cost_total > 100.0)discount = DISCOUNT_RATE * cost_total;else discount = 0.0;final_total = cost_total + shipping - discount; printf("Yourorder:\n");printf("%.2f lbs of artichokes at $%.2f per pound:$ %.2f\n",lb_artichokes, price_artichokes, cost_artichokes); printf("%.2f lbs ofbeets at $%.2f per pound: $%.2f\n", lb_beets, price_beets,cost_beets); printf("%.2f lbs of carrots at $%.2f per pound: $%.2f\n", lb_carrots, price_carrots, cost_carrots); printf("Total cost ofvegetables: $%.2f\n", cost_total); if (cost_total > 100)printf("Volume discount: $%.2f\n", discount);printf("Shipping: $%.2f\n", shipping); printf("Totalcharges: $%.2f\n", final_total); return 0; }Chapter 8 Programming ExercisesPE 8-­‐1/* Programming Exercise 8-1 */#include <stdio.h>int main(void) { int ch; intct = 0; while ((ch =getchar()) != EOF) ct++;printf("%d characters read\n", ct);return 0;}PE 8-­‐3/* Programming Exercise 8-3 *//* Using ctype.h eliminates need to assume consecutive coding */#include <stdio.h> #include<ctype.h> int main(void){ int ch; unsigned longuct = 0; unsigned long lct= 0; unsigned long oct = 0;while ((ch = getchar()) != EOF)if (isupper(ch)) uct++;else if (islower(ch)) lct++;else oct++;printf("%lu uppercase characters read\n", uct); printf("%lulowercase characters read\n", lct); printf("%lu other charactersread\n", oct);return 0;}/* or you could use if(ch >= 'A' && ch <= 'Z')uct++;else if (ch >= 'a' && ch <= 'z')lct++; else oct++;*/PE 8-­‐5/* Programming Exercise 8-5 *//* binaryguess.c -- an improved number-guesser *//* but relies upon truthful, correct responses */#include <stdio.h> #include<ctype.h> int main(void) { int high= 100; int low = 1; int guess =(high + low) / 2; char response;printf("Pick an integer from 1 to 100. I will try to guess ");printf("it.\nRespond with a y if my guess is right, with"); printf("\na h if it ishigh, and with an l if it is low.\n"); printf("Uh...is your number %d?\n", guess);while ((response = getchar()) != 'y') /* get response */{if (response == '\n')continue;if (response != 'h' && response != 'l'){printf("I don't understand that response. Please enter h for\n"); printf("high, l for low, or y for correct.\n"); continue;}if (response == 'h')high = guess - 1; else if(response == 'l') low =guess + 1; guess = (high + low)/ 2;printf("Well, then, is it %d?\n", guess);}printf("I knew I could do it!\n"); return 0;}PE 8-­‐7/* Programming Exercise 8-7 */#include <stdio.h>#include <ctype.h>#include <stdio.h>#define BASEPAY1 8.75 // $8.75 per hour#define BASEPAY2 9.33 // $9.33 per hour#define BASEPAY3 10.00 // $10.00 per hour#define BASEPAY4 11.20 // $11.20 per hour#define BASEHRS 40 // hours at basepay#define OVERTIME 1.5 // 1.5 time#define AMT1 300 // 1st rate tier#define AMT2 150 // 2st rate tier#define RATE1 0.15 // rate for 1st tier#define RATE2 0.20 // rate for 2nd tier#define RATE3 0.25 // rate for 3rd tier intgetfirst(void); void menu(void); int main(void){ doublehours; doublegross; double net;double taxes;double pay; charresponse;menu();while ((response = getfirst()) != 'q'){if (response == '\n') /* skip over newlines */continue;response = tolower(response); /* accept A as a, etc. */ switch (response){case 'a': pay = BASEPAY1; break;case 'b': pay = BASEPAY2; break; case 'c':pay = BASEPAY3; break; case 'd': pay = BASEPAY4;break;default : printf("Please enter a, b, c, d, or q.\n"); menu();continue; // go to beginning of loop}printf("Enter the number of hours worked this week: ");scanf("%lf", &hours); if (hours <= BASEHRS) gross =hours * pay; elsegross = BASEHRS * pay + (hours - BASEHRS) * pay * OVERTIME;if (gross <= AMT1) taxes = gross * RATE1; else if (gross <= AMT1+ AMT2)taxes = AMT1 * RATE1 + (gross - AMT1) * RATE2; elsetaxes = AMT1 * RATE1 + AMT2 * RATE2 + (gross - AMT1 - AMT2) * RATE3; net = gross - taxes;printf("gross: $%.2f; taxes: $%.2f; net: $%.2f\n", gross, taxes, net); menu(); }printf("Done.\n");return 0;}void menu(void){printf("********************************************************""*********\n");printf("Enter the letter corresponding to the desired pay rate"" or action:\n");printf("a) $%4.2f/hr b) $%4.2f/hr\n", BASEPAY1,BASEPAY2);printf("c) $%5.2f/hr d) $%5.2f/hr\n", BASEPAY3, BASEPAY4); printf("q) quit\n");printf("********************************************************""*********\n");}int getfirst(void){ int ch;ch = getchar();while (isspace(ch)) ch =getchar(); while(getchar() != '\n')continue; return ch;}Chapter 9 Programming ExercisesPE 9-­‐1/* Programming Exercise 9-1 */#include <stdio.h>double min(double, double); intmain(void){double x, y; printf("Enter two numbers(q to quit): "); while (scanf("%lf %lf", &x, &y) ==2){ printf("The smaller number is %f.\n", min(x,y));printf("Next two values (q to quit): ");}printf("Bye!\n");return 0;}double min(double a, double b){return a < b ? a : b;}/* alternative implementation doublemin(double a, double b){ if (a < b)return a; elsereturn b;}*/PE 9-­‐3/* Programming Exercise 9-3 */#include <stdio.h>void chLineRow(char ch, int c, int r); intmain(void){ char ch; int col, row;printf("Enter a character (# to quit): "); while( (ch = getchar()) != '#'){ if (ch =='\n') continue;printf("Enter number of columns and number of rows: ");if (scanf("%d %d", &col, &row) != 2) break;chLineRow(ch, col, row);printf("\nEnter next character (# to quit): ");}printf("Bye!\n");return 0;}// start rows and cols at 0 voidchLineRow(char ch, int c, int r){int col, row;for (row = 0; row < r ; row++){for (col = 0; col < c; col++)putchar(ch); putchar('\n');}return;}PE 9-­‐5/* Programming Exercise 9-5 */#include <stdio.h>void larger_of(double *p1, double *p2); intmain(void){double x, y; printf("Enter two numbers(q to quit): "); while (scanf("%lf %lf", &x, &y) ==2){larger_of(&x, &y);printf("The modified values are %f and %f.\n", x, y); printf("Next two values (q to quit): ");}printf("Bye!\n");return 0;}void larger_of(double *p1, double *p2){ if (*p1 >*p2) *p2 =*p1; else*p1 = *p2;}// alternatively:/*void larger_of(double *p1, double *p2){*p1= *p2 = *p1 > *p2 ? *p1 : *p2;}*/PE 9-­‐8/* Programming Exercise 9-8 */ #include<stdio.h>double power(double a, int b); /* ANSI prototype */ intmain(void) { double x, xpow; int n; printf("Enter a number andthe integer power"); printf(" to which\nthe number will be raised.Enter q"); printf(" to quit.\n"); while (scanf("%lf%d", &x, &n)== 2){ xpow = power(x,n); /* function call */ printf("%.3g to the power %d is %.5g\n", x, n, xpow);printf("Enter next pair of numbers or q to quit.\n");} printf("Hope you enjoyed this power trip -- bye!\n");return 0;} double power(double a, int b) /* function definition */{ double pow =1; int i; if(b == 0){ if (a == 0)printf("0 to the 0 undefined; using 1 as the value\n"); pow = 1.0; } else if (a == 0) pow = 0.0; else if (b > 0)for(i = 1; i <= b; i++) pow *= a; else /* b < 0 */ pow = 1.0 / power(a, - b);return pow; /* return the value of pow */}PE 9-­‐10/* Programming Exercise 9-10 */ #include<stdio.h> void to_base_n(int x, int base); intmain(void) { int number; int b; int count;printf("Enter an integer (q to quit):\n"); while(scanf("%d", &number) == 1){ printf("Enter number base (2-10): ");while ((count = scanf("%d", &b))== 1&& (b < 2 || b > 10)){printf("base should be in the range 2-10: ");} if(count != 1)break;printf("Base %d equivalent: ", b);to_base_n(number, b); putchar('\n');printf("Enter an integer (q to quit):\n");}printf("Done.\n");return 0;}void to_base_n(int x, int base) /* recursive function */{ int r; r = x % base; if(x >= base) to_base_n(x / base,base); putchar('0' + r); return;}Chapter 10 Programming ExercisesPE 10-­‐1/* Programming Exercise 10-1 */#include <stdio.h>#define MONTHS 12 // number of months in a year#define YRS 5 // number of years of data int main(void){// initializing rainfall data for 2010 - 2014 constfloat rain[YRS][MONTHS] = {{4.3,4.3,4.3,3.0,2.0,1.2,0.2,0.2,0.4,2.4,3.5,6.6},{8.5,8.2,1.2,1.6,2.4,0.0,5.2,0.9,0.3,0.9,1.4,7.3},{9.1,8.5,6.7,4.3,2.1,0.8,0.2,0.2,1.1,2.3,6.1,8.4},{7.2,9.9,8.4,3.3,1.2,0.8,0.4,0.0,0.6,1.7,4.3,6.2},{7.6,5.6,3.8,2.8,3.8,0.2,0.0,0.0,0.0,1.3,2.6,5.2}}; int year,month; float subtot,total;printf(" YEAR RAINFALL (inches)\n");for (year = 0, total = 0; year < YRS; year++){ /* for each year, sum rainfall for each month */for (month = 0, subtot = 0; month < MONTHS; month++) subtot +=*(*(rain + year) + month); printf("%5d %15.1f\n", 2010 + year, subtot);total += subtot; /* total for all years */}printf("\nThe yearly average is %.1f inches.\n\n", total/YRS);printf("MONTHLY AVERAGES:\n\n");printf(" Jan Feb Mar Apr May Jun Jul Aug Sep Oct "); printf(" Nov Dec\n");for (month = 0; month < MONTHS; month++){ /* for each month, sum rainfall over years */ for (year = 0, subtot =0; year < YRS; year++) subtot += *(*(rain + year) + month); printf("%4.1f ", subtot/YRS);}printf("\n");return 0;}PE 10-­‐3/* Programming Exercise 10-3 */#include <stdio.h>#define LEN 10int max_arr(const int ar[], int n);void show_arr(const int ar[], int n);int main(void){int orig[LEN] = {1,2,3,4,12,6,7,8,9,10}; intmax;show_arr(orig, LEN); max =max_arr(orig, LEN); printf("%d = largestvalue\n", max);return 0;}int max_arr(const int ar[], int n){ int i; intmax = ar[0];/* don't use 0 as initial max value -- fails if all array values are neg */for (i = 1; i < n; i++)if (max < ar[i]) max= ar[i]; return max;}void show_arr(const int ar[], int n){ int i; for (i =0; i < n; i++) printf("%d", ar[i]); putchar('\n');}PE 10-­‐5/* Programming Exercise 10-5 */#include <stdio.h>#define LEN 10double max_diff(const double ar[], int n); voidshow_arr(const double ar[], int n);。

C++PrimerPlus第六版第十六章课后习题

C++PrimerPlus第六版第十六章课后习题

1.#include<iostream>#include<string>usingnamespace std;bool revise(const string & s1, const string & s2);int main(){string words;cout<<"Enter words(quit to quit): ";while (cin>> words && words != "quit"){string rewords (words.rbegin(), words.rend());if (revise(words, rewords))cout<< words <<" can be revised.\n";elsecout<<words <<" cannot be revised.\n";cout<<"Enter words(quit to quit): ";}system("Pause");return 0;}bool revise(const string & s1, const string & s2){if (s1 == s2)returntrue;elsereturnfalse;}2.3.读取文件apiary beetle cereal dangerensign florid garage healthinsult jackal keeper loanermanage nonce onset plaid quiltremote stolid train uesfulvaild whence xenon yearn zippy#include<iostream>#include<string>#include<fstream>#include<cstdlib>#include<cctype>#include<ctime>#include<vector>usingnamespace std;vector<string> wordlist;void Fillword();int main(){srand(time(0));char play;cout<<"Will you play a word game?\n";cin>> play;play = tolower(play);Fillword();while (play == 'y'){string target = wordlist[rand() % wordlist.size()];int length = target.length();string attemp(length, '-');string badchars;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: "<<attemp<<endl;while (guesses > 0 &&attemp != target){char letter;cout<<"Guess a letter: ";cin>> letter;if (badchars.find(letter) != string::npos || attemp.find(letter) != string::npos){cout<<"You already guessed that. Try again.\n";continue;}int loc = target.find (letter);if (loc == string::npos){cout<<"Oh, bad guess!\n";--guesses;badchars += letter;}else{cout<<"Good guess!\n";attemp [loc] = letter;loc = target.find(letter, loc + 1);while (loc != string::npos){attemp [loc] = letter;loc = target.find(letter, loc + 1);}}cout<<"Your word: "<<attemp<<endl;if (attemp != 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);}system("Pause");return 0;}void Fillword(){string letter;ifstream fin;fin.open("tobuy.txt");if (fin.is_open() == false){cout<<"Can't open file.Bye\n";exit(EXIT_FAILURE);}while (fin){fin >> letter;wordlist.push_back(letter);}fin.close();}4.#include<iostream>#include<algorithm>#include<list>usingnamespace std;constint Number = 5;int reduce (long ar[], int n);void show(int n){ cout<< n <<" " ;}int main(){long one[Number] = {2, 3, 4, 2, 3};int number = reduce(one, Number);cout<<endl;show(number);cout<<endl;system("Pause");return 0;}int reduce (long ar[], int n){list<long> a;a.insert(a.begin(), ar, ar + n);a.sort();a.unique();a.size();for_each(a.begin(), a.end(), show);return a.size();}5.#include<iostream>#include<algorithm>#include<list>#include<string>usingnamespace std;constint Number = 5;template<class T>void show(T n){ cout<< n <<" " ;}template<class T>int reduce(T ar[], int n);int main(){long one[Number] = {2, 3, 4, 2, 3};int number1 = reduce(one, Number);cout<<endl;show(number1);cout<<endl;string two[Number] = { "hello", "good", "great", "hello" , "great"};int number2 = reduce(two, Number);cout<<endl;show(number2);cout<<endl;system("Pause");return 0;}template<class T>int reduce(T ar[], int n){list<T> a;a.insert(a.begin(), ar, ar + n);a.sort();a.unique();a.size();for_each(a.begin(), a.end(), show<T>);return a.size();}6.#include<iostream>#include<algorithm>#include<queue>#include<string>#include<ctime>usingnamespace std;constint MIN_PER_HR = 60;class Customer{private:long arrive;int processtime;public:Customer() { arrive = processtime = 0; }void set(long when){processtime = rand() % 3 + 1;arrive = when;}long when() const { return arrive;}int ptime() const { return processtime; }};typedef Customer Item;bool newcustomer(double x);int main(){srand(time(0));cout<<"Case Study: Bank of Heather Automatic Teller.\n";cout<<"Enter maximum size of queue:";int qs;cin>>qs;queue<Item> line;cout<<"Enter the number fo simulation hours:";int hours;cin>> hours;long cyclelimit = MIN_PER_HR * hours;cout<<"Enter the average number of customers per hour:";double perhour;cin>>perhour;double min_per_cust;min_per_cust = MIN_PER_HR / perhour;Item temp;long turnaways = 0;long customers = 0;long served = 0;long sum_line = 0;int wait_time = 0;long line_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";system("Pause");return 0;bool newcustomer(double x){return (rand() * x / RAND_MAX < 1);}7.#include<iostream>#include<algorithm>#include<vector>#include<string>#include<ctime>usingnamespace std;vector<int> lotto(int n1, int n2);void show(int n) { cout<< n <<" ";}int main(){vector<int> winner;winner = lotto(51, 6);for_each(winner.begin(), winner.end(), show);system("Pause");return 0;}vector<int> lotto(int n1, int n2){vector<int> num1;vector<int> num2;for (int i = 0; i< n1; i++)num1.push_back(i);random_shuffle(num1.begin(), num1.end());for (int i = 0; i< n2; i++)num2.push_back(num1[rand()% n1 + 1]);return num2;}8.#include<iostream>#include<algorithm>#include<set>#include<string>#include<iterator>usingnamespace std;int main(){ostream_iterator<string, char> out(cout, " ");set<string> Mat;set<string> Pat;set<string>MPat;string temp1;cout<<"Please enter Mat's frineds(quit to quit):\n";while (getline(cin, temp1) && temp1 != "quit"){Mat.insert(temp1);cout<<"Please enter Mat's frineds(quit to quit):\n";}cout<<"Mat:\n";copy(Mat.begin(), Mat.end(), out);cout<<endl;cout<<"Please enter Pat's frineds(quit to quit):\n";while (getline(cin, temp1) && temp1 != "quit"){Pat.insert(temp1);cout<<"Please enter Pat's frineds(quit to quit):\n";}cout<<"Pat:\n";copy(Pat.begin(), Pat.end(), out);cout<<endl;cout<<"Combine:\n";set_union(Mat.begin(), Mat.end(),Pat.begin(), Pat.end(), insert_iterator<set<string>>(MPat, MPat.begin()));copy(MPat.begin(), MPat.end(), out);cout<<endl;system("Pause");return 0;}9.#include<iostream>#include<algorithm>#include<list>#include<ctime>#include<iterator>#include<vector>usingnamespace std;constint LIM = 10;void outin(int n) { cout<< n <<" "; }int main(){int num[LIM];vector<int> vi0(num, num + LIM);vector<int> vi(num, num + LIM);list<int> li(num, num + LIM);for (int i = 0; i< LIM; i++)num[i] = rand();for_each(vi0.begin(), vi0.end(),outin);cout<<endl;for_each(vi.begin(), vi.end(),outin);cout<<endl;for_each(li.begin(), li.end(),outin);cout<<endl;clock_t start1 = clock();sort(vi.begin(), vi.end());for_each(vi.begin(), vi.end(),outin);cout<<endl;clock_t end1 = clock();cout<< (double) (end1 - start1)/CLOCKS_PER_SEC;cout<<endl;clock_t start2 = clock();li.sort();for_each(li.begin(), li.end(),outin);cout<<endl;clock_t end2 = clock();cout<< (double) (end2 - start2)/CLOCKS_PER_SEC;cout<<endl;sort(vi0.begin(), vi0.end());copy(vi0.begin(), vi0.end(),li.begin());for_each(vi0.begin(), vi0.end(),outin);cout<<endl;clock_t start3 = clock();copy(li.begin(), li.end(),vi.begin());sort(vi.begin(), vi.end());copy(vi.begin(), vi.end(),li.begin());clock_t end3 = clock();cout<< (double) (end3 - start3)/CLOCKS_PER_SEC;cout<<endl;system("Pause");return 0;}10.#include<iostream>#include<algorithm>#include<list>#include<memory>#include<iterator>#include<vector>#include<string>usingnamespace std;constint LIM = 10;void outin(int n) { cout<< n <<" "; }struct Review{string title;int rating;double price;};booloperator< ( shared_ptr<Review>& r1, shared_ptr<Review>& r2);bool ratingworseThan( shared_ptr<Review>& r1, shared_ptr<Review>& r2); bool ratingbetterThan( shared_ptr<Review>& r1, shared_ptr<Review>& r2); bool priceworseThan( shared_ptr<Review>& r1, shared_ptr<Review>& r2); bool pricebetterThan( shared_ptr<Review>& r1, shared_ptr<Review>& r2); bool FillReview(Review & r);void Show(const shared_ptr<Review>& r);int main(){vector<shared_ptr<Review>> books;Review temp;while(FillReview(temp)){shared_ptr<Review>te(new Review);te->title = temp.title;te->rating = temp.rating;te->price = temp.price;books.push_back(te);}if (books.size() > 0){cout<<"Thank you. You entered the following "<<books.size() <<endl;cout<<"Book\tRating\tPrice\n";for_each(books.begin(), books.end(), Show);char ch;cout<<"Plaese enter o, z, rb, rw, pb, pw,q\n";while(tolower(ch)!= 'q'){switch(ch){case'o':cout<<"Original: \n";cout<<"Book\tRating\tPrice\n";for_each(books.begin(), books.end(), Show);break;case'z':cout<<"Sorting by letter.\n";cout<<"Book\tRating\tPrice\n";sort(books.begin(), books.end());for_each(books.begin(), books.end(), Show);break;case'rb':cout<<"Sorting by rating better.\n";cout<<"Book\tRating\tPrice\n";sort(books.begin(), books.end(),ratingbetterThan);for_each(books.begin(), books.end(), Show);break;case'rw':cout<<"Sorting by rating worse.\n";cout<<"Book\tRating\tPrice\n";sort(books.begin(), books.end(),ratingworseThan);for_each(books.begin(), books.end(), Show);break;case'pb':cout<<"Sorting by price better.\n";cout<<"Book\tRating\tPrice\n";sort(books.begin(), books.end(),pricebetterThan);for_each(books.begin(), books.end(), Show);break;case'pw':cout<<"Sorting by price worse.\n";cout<<"Book\tRating\tPrice\n";sort(books.begin(), books.end(),priceworseThan);for_each(books.begin(), books.end(), Show);break;default:break;}cout<<"Plaese enter o, z, rb, rw, pb, pw,q\n";}}system("Pause");return 0;}bool FillReview(Review & r){cout<<"Enter book title (quit to quit):";getline(cin , r.title);if(r.title == "quit")returnfalse;cout<<"Enter book rating:";cin>>r.rating;cout<<"Enter book price:";cin>>r.price;if (!cin)returnfalse;while(cin.get() != '\n')continue;returntrue;}void Show(const shared_ptr<Review>& r){cout<< r->title <<" \t "<< r->rating <<"\t "<< r->price <<" \n";}bool ratingworseThan( shared_ptr<Review>& r1, shared_ptr<Review>& r2) {return (r1->rating < r2->rating);}bool ratingbetterThan( shared_ptr<Review>& r1, shared_ptr<Review>& r2) {return (r1->rating > r2->rating);}bool priceworseThan( shared_ptr<Review>& r1, shared_ptr<Review>& r2) {return (r1->price < r2->price);}bool pricebetterThan( shared_ptr<Review>& r1, shared_ptr<Review>& r2) {return (r1->price > r2->price);}。

C Primer Plus第6版编程练习答案(已下载)精编版

C Primer Plus第6版编程练习答案(已下载)精编版
}
/* or create two more variables, set them to 2 * toes and toes * toes */
PE
/* Programming Exercise 2-8 */
#include <stdio.h> void one_three(void); void two(void); int main(void)
Chapter
PE
/* Programming Exercise 2-1 */
#include <stdio.h> int main(void)
{ printf("Gustav Mahler\n"); printf("Gustav\nMahler\n"); printf("Gustav "); printf("Mahler\n"); return 0;
printf("An age of %d years is %d days.\n", ageyears, agedays); return 0;
}
PE
/* Programming Exercise 2-4 */
#include <stdio.h> void jolly(void); void deny(void); int main(void)
}
PE
/* Programming Exercise 2-3 */
#include <stdio.h> int main(void)
{ int ageyears; /* age in years */ int agedays; /* age in days */
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//******************6.15复习题**************************//*********** 6 **************************#include<stdio.h>int main(void){int i, j;for (i = 0; i < 4; i++) //外层循环控制行内层循环控制列{for (j = 0; j < 8; j++){printf("$");}printf("\n");}return 0;}//******************6.16 编程练习 **************************//****************** 一 **************************#include<stdio.h>#define SIZE 26int main(void){char array[SIZE];int index = 0;array[0] = 'a';printf("%c", array[0]);for (index = 1; index < SIZE; index++){array[index] = 'a' + index;printf("%c", array[index]);}return 0;}//****************** 二 **************************#include<stdio.h>int main(void){int i, j;//i控制行,j控制列计数作用for (i = 0; i < 5; i++){for (j = 0; j < =i ; j++){printf("$");}printf("\n");}return 0;}//****************** 三 ************************** #include<stdio.h>int main(void){int i;//外层循环控制行int j;//内层循环控制列char ch = 'F';for (i = 0; i < 6; i++){for (j = 0; j <= i; j++)printf("%c", ch-j );printf("\n");}return 0;}//****************** 四 ************************** #include<stdio.h>int main(void){int i;//外层循环控制行int j;//内层循环控制列char ch = 'A';for (i = 0; i < 6; i++){for (j = 0; j <= i; j++)printf("%c", ch++ );printf("\n");return 0;}//****************** 五(初版) **************************#include<stdio.h>int main(void){int i;//外层循环控制行int j;//内层循环控制列char c = '*';char ch = 'A';for (i = 0; i < 5; i++){for (j = 0; j <=(3-i) ; j++){printf("%c", c);}for (j = 0; j <=i; j++){printf("%c", ch+j);}for (j = 0; j <i ; j++){printf("%c", ch+(i-1)-j);//ch+i-1表示因为此句是从i=1,j=0开始执行的,所以需要i-1才能确保开始为A,i=1,j列A开始;i=2,j列B开始}printf("\n");}return 0;}//****************** 五(终版) **************************#include<stdio.h>int main(void){int i;//外层循环控制行int j;//内层循环控制列char c = ' ';char ch = 'A';for (i = 0; i < 5; i++)for (j = 0; j <= (3 - i); j++){printf("%c", c);}for (j = 0; j <= i; j++){printf("%c", ch + j);}for (j = 0; j < i; j++){printf("%c", ch + (i - 1) - j);//ch+i-1表示因为此句是从i=1,j=0开始执行的,所以需要i-1才能确保开始为A,i=1,j列A开始;i=2,j列B开始}printf("\n");}return 0;}//****************** 六 **************************#include<stdio.h>int main(void){int num;int i, j;int UP_limit;int DOWN_limit;printf("输入表格的下限和上限\n"); //表格的上下限表示输入的最大最小值(即一个范围值)。

scanf("%d %d", &DOWN_limit, &UP_limit);printf("数值平方立方\n");for (i = 0; i <=UP_limit-DOWN_limit; i++){for (j = 0; j < 3; j++){num = DOWN_limit + i;printf("%d %d %d\n", num, num*num, num*num*num);}printf("\n");return 0;}//****************** 七 **************************#include<stdio.h>#include<string.h> //strlen()函数,给出字符串中字符长度。

对应%zd; int main(void){char word[40];int num;//单词个数(长度)int i;int index;//数组下标printf("请输入单词\n");scanf("%s", word);num = strlen(word);index = num-1;printf("倒序打印\n");for (i = 0; i < num; i++){printf("%c", word[index]);index--;}return 0;}//****************** 八 **************************#include<stdio.h>int main(void){double num1=0.0, num2=0.0;double result=0.0;printf("输入两个浮点数\n");while (2 == scanf("%lf %lf", &num1, &num2)){result = (num1 - num2) / (num1 * num2);printf("两数之差除以两数乘积result=%lf\n", result);}printf("输入错误,请输入数字\n");return 0;}//****************** 玖 ************************** #include<stdio.h>double result(double n, double m);int main(void){double num1 = 0.0, num2 = 0.0;double num=0.0;printf("输入两个浮点数:");while (2 == scanf("%lf %lf", &num1, &num2)){num=result(num1,num2);printf("两数之差除以两数乘积:%lf\n", num);}printf("输入错误,请输入数字\n");return 0;}double result(double n, double m){double result=0.0;result = (n - m) / (n * m);return result;}//****************** 十 ************************** #include<stdio.h>int main(void){int lower = 0;//下限整数int upper = 0;//上限整数int i;//计数int temp=0;//用来存储整数int sum=0;//平方和printf("Enter lower and upper integer limits:");scanf("%d %d", &lower, &upper);temp = lower;while (upper > lower){for (i = 0; i <= upper - lower; i++){sum = sum + temp * temp;temp++;}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;}//****************** 十一 **************************#include<stdio.h>#include<string.h>int main(void){char num[100];int index ;//数组元素下标printf("读入8个整数\n");scanf("%s", num);printf("倒序打印8个整数\n");for (index = 7; index >= 0; index--){printf("%c", num[index]);}return 0;}//****************** 十二 **************************//****************** 十三 **************************#include<stdio.h>int main(void){int num[10];int i,j;int number=0;printf("输入基础元素");scanf("%d", num);number = num[0];num[0] = 1;printf("%d ", num[0]);for (i = 1; i < 8; i++){num[i] = num[i-1] * number;do{printf("%d ", num[i]);} while (0);}return 0;}//****************** 十四 **************************#include<stdio.h>int main(void){double num1[30];double num2[30];double sum = 0;//累加和int i = 0;int j=0;printf("请为第一个数组num1输入8个值:\n");for (i = 0; i < 8; i++)//用一个循环输入第一个数组值,并求得第二组数组;{if (scanf("%lf", &num1[i]) == 1){sum = sum + num1[i];num2[i] = sum;printf("%-4.lf", num1[i]);}else{printf("您输入了一个错误值!!!\n");break;}}printf("\n");for (i = 0; i < 8; i++)//用一个循环显示第一个数组值{printf("%-4.lf", num2[i]);}printf("\n");return 0;}//****************** 十五 ************************** #include<stdio.h>#include<string>int main(void){char array[255];int index = 0;//数组内容下标printf("请输入数组内容:\n");scanf("%s", array);index=strlen(array)-1;printf("倒序打印数组内容:\n");for (; index >=0; index--){printf("%c", array[index]);}return 0;}//****************** 十六 ************************** #include<stdio.h>int main(void){int year = 0;double Daphne = 100;double Deirdre = 100;do{Daphne = Daphne +10;Deirdre = Deirdre * 1.05;year++;} while (Deirdre <= Daphne);printf("%d年后Daphne的投资额超过Deirdre.\n此时Daphne的投资额为%lf美元,Deirdre的投资额为%lf美元.\n", year, Daphne, Deirdre);return 0;}//****************** 十七 **************************#include<stdio.h>int main(void){int year = 0;double CL = 100;do{CL = CL * 1.08 - 10;year++;} while (CL > 0);printf("%d年后,Chuckie会取完账户的钱,变成了穷鬼\n",year);return 0;}//****************** 十八 **************************#include<stdio.h>int main(void){double friends = 5;int week = 0;do{week++;friends = 2*(friends - week);printf("第%d周,有%.lf个朋友\n", week, friends);} while (friends <= 150);return 0;}。

相关文档
最新文档