C primer 第六版第六章习题答案
- 格式:docx
- 大小:41.68 KB
- 文档页数:6
第二章:开始学习C++//ex2.1--display your name and address#include<iostream>int main(void){using namespace std;cout<<"My name is liao chunguang and I live in hunan chenzhou.\n”;}//ex2.2--convert the furlong units to yard uints-把浪单位换位码单位#include<iostream>double fur2yd(double);int main(){using namespace std;cout<<"enter the distance measured by furlong units:";double fur;cin>>fur;cout<<"convert the furlong to yard"<<endl;double yd;yd=fur2yd(fur);cout<<fur<<" furlong is "<<yd<<" yard"<<endl;return 0;}double fur2yd(double t){return 220*t;}//ex2.3-每个函数都被调用两次#include<iostream>void mice();void see();using namespace std;int main(){mice();mice();see();see();return 0;}void mice(){cout<<"three blind mice"<<endl;}void see(){cout<<"see how they run"<<endl;}//ex2.4#include<iostream>int main(){using namespace std;cout<<"Enter your age:";int age;cin>>age;int month;month=age*12;cout<<age<<" years is "<<month<<" months"<<endl;return 0;}//ex2.5---convert the Celsius valve to Fahrenheit value#include<iostream>double C2F(double);int main(){using namespace std;cout<<"please enter a Celsius value:";double C;cin>>C;double F;F=C2F(C);cout<<C<<" degrees Celsius is "<<F<<" degrees Fahrenheit."<<endl; return 0;}double C2F(double t){return 1.8*t+32;}//ex2.6---convert the light years valve to astronomical units--把光年转换为天文单位#include<iostream>double convert(double);//函数原型int main(){using namespace std;cout<<"Enter the number of light years:";double light_years;cin>>light_years;double astro_units;astro_units=convert(light_years);cout<<light_years<<" light_years = "<<astro_units<<" astronomical units."<<endl; return 0;}double convert(double t){return 63240*t;//1 光年=63240 天文单位}//ex2.7--显示用户输入的小时数和分钟数#include<iostream>void show();main(){using namespace std;show();return 0;}void show(){using namespace std;int h,m;cout<<"enter the number of hours:";cin>>h;cout<<"enter the number of minutes:";cin>>m;cout<<"Time:"<<h<<":"<<m<<endl;}第三章:处理数据//ex3.1—将身高用英尺(feet)和英寸(inch)表示#include<iostream>const int inch_per_feet=12;// const常量--1feet=12inches--1英尺=12英寸int main(){using namespace std;cout<<"please enter your height in inches:___\b\b\b";// \b表示为退格字符int ht_inch;cin>>ht_inch;int ht_feet=ht_inch/inch_per_feet;//取商int rm_inch=ht_inch%inch_per_feet;//取余cout<<"your height is "<<ht_feet<<" feet,and "<<rm_inch<<" inches\n";return 0;}//ex3.2--计算相应的body mass index(体重指数)#include<iostream>const int inch_per_feet=12;const double meter_per_inch=0.0254;const double pound_per_kilogram=2.2;int main(){using namespace std;cout<<"Please enter your height:"<<endl;cout<<"First,enter your height of feet part(输入你身高的英尺部分):_\b";int ht_feet;cin>>ht_feet;cout<<"Second,enter your height of inch part(输入你身高的英寸部分):_\b";int ht_inch;cin>>ht_inch;cout<<"Now,please enter your weight in pound:___\b\b\b";double wt_pound;cin>>wt_pound;int inch;inch=ht_feet*inch_per_feet+ht_inch;double ht_meter;ht_meter=inch*meter_per_inch;double wt_kilogram;wt_kilogram=wt_pound/pound_per_kilogram;cout<<endl;cout<<"Your pensonal body information as follows:"<<endl;cout<<"身高:"<<inch<<"(英尺inch)\n"<<"身高:"<<ht_meter<<"(米meter)\n"<<"体重:"<<wt_kilogram<<"(千克kilogram)\n";double BMI;BMI=wt_kilogram/(ht_meter*ht_meter);cout<<"your Body Mass Index(体重指数) is "<<BMI<<endl;return 0;}//ex3.3 以度,分,秒输入,以度输出#include<iostream>const int minutes_per_degree=60;const int seconds_per_minute=60;int main(){using namespace std;cout<<"Enter a latitude in degrees,minutes,and seconds:\n";cout<<"First,enter the degrees:";int degree;cin>>degree;cout<<"Next,enter the minutes of arc:";int minute;cin>>minute;cout<<"Fianlly,enter the seconds of arc:";int second;cin>>second;double show_in_degree;show_in_degree=(double)degree+(double)minute/minutes_per_degree+(double)second/mi nutes_per_degree/seconds_per_minute;cout<<degree<<" degrees,"<<minute<<" minutes,"<<second<<"seconds ="<<show_in_degree<<" degrees\n";return 0;}//ex3.4#include<iostream>const int hours_per_day=24;const int minutes_per_hour=60;const int seconds_per_minute=60;int main(){using namespace std;cout<<"Enter the number of seconds:";long seconds;cin>>seconds;int Day,Hour,Minute,Second;Day=seconds/seconds_per_minute/minutes_per_hour/hours_per_day;Hour=seconds/seconds_per_minute/minutes_per_hour%hours_per_day;Minute=seconds/seconds_per_minute%minutes_per_hour;Second=seconds%seconds_per_minute;cout<<seconds<<"seconds = "<<Day<<" days,"<<Hour<<" hours,"<<Minute<<" minutes,"<<Second<<" seconds\n";return 0;}//ex3.5#include<iostream>int main(){using namespace std;cout<<"Enter the world population:";long long world_population;cin>>world_population;cout<<"Enter the population of the US:";long long US_population;cin>>US_population;double percentage;percentage=(double)US_population/world_population*100;cout<<"The population of the US is "<<percentage<<"% of the world population.\n";return 0;}//ex3.6 汽车耗油量-美国(mpg)or欧洲风格(L/100Km)#include<iostream>int main(){using namespace std;cout<<"Enter the miles of distance you have driven:";double m_distance;cin>>m_distance;cout<<"Enter the gallons of gasoline you have used:";double m_gasoline;cin>>m_gasoline;cout<<"Your car can run "<<m_distance/m_gasoline<<" miles per gallon\n";cout<<"Computing by European style:\n";cout<<"Enter the distance in kilometers:";double k_distance;cin>>k_distance;cout<<"Enter the petrol in liters:";double k_gasoline;cin>>k_gasoline;cout<<"In European style:"<<"your can used "<<100*k_gasoline/k_distance<<" liters of petrol per 100 kilometers\n";return 0;}//ex3.7 automobile gasoline consumption-耗油量--欧洲风格(L/100Km)转换成美国风格(mpg) #include<iostream>int main(){using namespace std;cout<<"Enter the automobile gasoline consumption figure in\n"<<"European style(liters per 100 kilometers):";double Euro_style;cin>>Euro_style;cout<<"Converts to U.S. style(miles per gallon):"<<endl;cout<<Euro_style<<" L/100Km = "<<62.14*3.875/Euro_style<<" mpg\n";return 0;}// Note that 100 kilometers is 62.14 miles, and 1 gallon is 3.875 liters.//Thus, 19 mpg is about 12.4 L/100Km, and 27 mpg is about 8.7 L/100Km.Enter the automobile gasoline consumption figure inEuropean style(liters per 100 kilometers):12.4Converts to U.S. style(miles per gallon):12.4 L/100Km = 19.4187 mpgPress any key to continue// ex3.7 automobile gasoline consumption-耗油量--美国风格(mpg)转换成欧洲风格(L/100Km) #include<iostream>int main(){using namespace std;cout<<"Enter the automobile gasoline consumption figure in\n"<<"U.S. style(miles per gallon):";double US_style;cin>>US_style;cout<<"Converts to European style(miles per gallon):"<<endl;cout<<US_style<<" mpg = "<< 62.14*3.875/US_style<<"L/100Km\n";return 0;}// Enter the automobile gasoline consumption figure inU.S. style(miles per gallon):19Converts to European style(miles per gallon):19 mpg = 12.6733L/100KmPress any key to continue第四章复合类型//ex4.1 display the information of student#include<iostream>const int Asize=20;using namespace std;struct student//定义结构描述{char firstname[Asize];char lastname[Asize];char grade;int age;};void display(student);//函数原型放在结构描述后int main(){cout<<"what is your first name?"<<endl;student lcg;//创建结构变量(结构数据对象)cin.getline(lcg.firstname,Asize);cout<<"what is your last name?"<<endl;cin.getline(stname,Asize);cout<<"what letter grade do you deserve?"<<endl;cin>>lcg.grade;cout<<"what is your age?"<<endl;cin>>lcg.age;display(lcg);return 0;}void display(student name){cout<<"Name: "<<name.firstname<<","<<stname<<endl;cout<<"Grade:"<<char(name.grade+1)<<endl;cout<<"Age:"<<name.age<<endl;}//ex4.2 use the string-class instead of char-array#include<iostream>#include<string>int main(){using namespace std;string name,dessert;cout<<"Enter your name: \n";getline(cin,name);cout<<"Enter your favorite dessert: \n";getline(cin,dessert);cout<<"I have some delicious "<<dessert;cout<<" for you, "<<name<<".\n";return 0;}//有时候会遇到需要按下两次回车键才能正确的显示结果,这是vc++6.0的一个BUG,更改如下:else if (_Tr::eq((_E)_C, _D)){_Chg = true;_I.rdbuf()->sbumpc();//修改后的break; }ex4.3 输入其名和姓,并组合显示#include<iostream>#include<cstring>const int Asize=20;int main(){using namespace std;char fname[Asize];char lname[Asize];char fullname[2*Asize+1];cout<<"Enter your first name:";//输入名字,存储在fname[]数组中cin.getline(fname,Asize);cout<<"Enter your last name:";//输入姓,存储在lname[]数组中cin.getline(lname,Asize);strncpy(fullname,lname,Asize);//把姓lname复制到fullname空数组中strcat(fullname,", ");//把“,”附加到上述fullname尾部strncat(fullname,fname,Asize);//把fname名字附加到上述fullname尾部fullname[2*Asize]='\0';//为防止字符型数组溢出,在数组结尾添加结束符cout<<"Here's the information in a single string:"<<fullname<<endl;//显示组合结果return 0;}//ex4.4 使用string对象存储、显示组合结果#include<iostream>#include<string>int main(){using namespace std;string fname,lname,attach,fullname;cout<<"Enter your first name:";getline(cin,fname);//note:将一行输入读取到string类对象中使用的是getline(cin,str)//它没有使用句点表示法,所以不是类方法cout<<"Enter your last name:";getline(cin,lname);attach=", ";fullname=lname+attach+fname;cout<<"Here's the information in a single string:"<<fullname<<endl;return 0;}//ex4.5 declare a struct and initialize it 声明结果并创建一个变量#include<iostream>const int Asize=20;struct CandyBar{char brand[Asize];double weight;int calory;};int main(){using namespace std;CandyBar snack={"Mocha Munch",2.3,350};cout<<"Here's the information of snack:\n";cout<<"brand:"<<snack.brand<<endl;cout<<"weight:"<<snack.weight<<endl;cout<<"calory:"<<snack.calory<<endl;return 0;}//ex4.6 结构数组的声明及初始化#include<iostream>const int Asize=20;struct CandyBar{char brand[Asize];double weight;int calory;};int main(){using namespace std;CandyBar snack[3]={{"Mocha Munch",2.3,350},{"XuFuJi",1.1,300},{"Alps",0.4,100}};for(int i=0;i<3;i++)//利用for循环来显示snack变量的内容{cout<<snack[i].brand<<endl<<snack[i].weight<<endl<<snack[i].calory<<endl<<endl;}return 0;}//ex4.7 pizza披萨饼#include<iostream>#include<string>const int Size=20;struct pizza//声明结构{char company[Size];double diameter;double weight;};int main(){using namespace std;pizza pie;//创建一个名为pie的结构变量cout<<"What's the name of pizza company:";cin.getline(pany,Size);cout<<"What's the diameter of pizza:";cin>>pie.diameter;cout<<"What's the weight of pizza:";cin>>pie.weight;cout<<"company:"<<pany<<endl;cout<<"diameter:"<<pie.diameter<<"inches"<<endl;cout<<"weight:"<<pie.weight<<"ounches"<<endl;return 0;}//ex4.8 pizza pie 披萨饼使用new创建动态结构#include<iostream>#include<string>const int Size=20;struct pizza//声明结构{char company[Size];double diameter;double weight;};int main(){using namespace std;pizza *pie=new pizza;//使用new创建动态结构cout<<"What's the diameter of pizza:";cin>>pie->diameter;cin.get();//读取下一个字符cout<<"What's the name of pizza company:";cin.get(pie->company,Size);cout<<"What's the weight of pizza:";cin>>pie->weight;cout<<"diameter:"<<pie->diameter<<" inches"<<endl;cout<<"company:"<<pie->company<<endl;cout<<"weight:"<<pie->weight<<" ounches"<<endl;delete pie;//delete释放内存return 0;}//ex.4.9 使用new动态分配数组—方法1#include<iostream>#include<string>using namespace std;struct CandyBar{string brand;double weight;int calory;};int main(){CandyBar *snack= new CandyBar[3];snack[0].brand="A";//单个初始化由new动态分配的内存snack[0].weight=1.1;snack[0].calory=200;snack[1].brand="B";snack[1].weight=2.2;snack[1].calory=400;snack[2].brand="C";snack[2].weight=4.4;snack[2].calory=500;for(int i=0;i<3;i++){cout << " brand: " << snack[i].brand << endl;cout << " weight: " << snack[i].weight << endl;cout << " calorie: " << snack[i].calory << endl<<endl;}delete [] snack;return 0;}//ex.4.10 数组—方法1#include <iostream>int main(){using namespace std;const int Size = 3;int success[Size];cout<<"Enter your success of the three times 40 meters running:\n";cin >> success[0]>>success[1]>>success[2];cout<<"success1:"<<success[0]<<endl;cout<<"success2:"<<success[1]<<endl;cout<<"success3:"<<success[2]<<endl;double average=(success[0]+success[1]+success[2])/3;cout<<"average:"<<average<<endl;return 0;}//ex.4.10 array—方法2#include <iostream>#include <array>int main(){using namespace std;array<double,4>ad={0};cout<<"Enter your success of the three times 40 meters running:\n";cin >> ad[0]>>ad[1]>>ad[2];cout<<"success1:"<<ad[0]<<endl;cout<<"success2:"<<ad[1]<<endl;cout<<"success3:"<<ad[2]<<endl;ad[3]=(ad[0]+ad[1]+ad[2])/3;cout<<"average:"<<ad[3]<<endl;return 0;}第五章循环和关系表达式//ex.5.1#include <iostream>int main(){using namespace std;cout<<"Please enter two integers: ";int num1,num2;cin>>num1>>num2;int sum=0;for(int temp=num1;temp<=num2;++temp)//or temp++sum+=temp;cout<<"The sum from "<<num1<<" to "<<num2<<" is "<<sum<<endl; return 0;}//ex.5.2#include <iostream>#include<array>int main(){using namespace std;array<long double,101>ad={0};ad[1]=ad[0]=1L;for(int i=2;i<101;i++)ad[i]=i*ad[i-1];for(int i=0;i<101;i++)cout<<i<<"! = "<<ad[i]<<endl;return 0;}//ex.5.3#include <iostream>int main(){using namespace std;cout<<"Please enter an integer: ";int sum=0,num;while((cin>>num)&&num!=0){sum+=num;cout<<"So far, the sum is "<<sum<<endl;cout<<"Please enter an integer: ";}return 0;}//ex.5.4#include <iostream>int main(){using namespace std;double sum1,sum2;sum1=sum2=0.0;int year=0;while(sum2<=sum1){++year;sum1+=10;sum2=(100+sum2)*0.05+sum2;}cout<<"经过"<<year<<"年后,Cleo的投资价值才能超过Daphne的投资价值。
c + + 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的投资价值。
第6章;1、#include<iostream>#include<cctype>using namespace std;int main(){char ch;while((ch=cin.get())!='@'){if( isdigit(ch) );else if(tolower(ch)==ch)cout<<(char)toupper(ch);elsecout<<(char)tolower(ch);}return 0;}2、#include<iostream>//#include<math.h>//#include<string>#include<cctype>using namespace std;int main(){double dona[10];int dt=0;cin>>dona[dt];if(!cin){cout<<"Incorrect number!";return 0;}while((dt<9)&&cin){++dt;cin>>dona[dt];}double average,sum;sum=0.0;average=0.0;int t_aver=0;if(dt==9){for(int i=0;i<=dt;++i){sum+=dona[i];}average=sum/dt;for(int i=0;i<=dt;++i){if(dona[i]>average)t_aver++;}cout<<"you input "<<dt+1<<" numbers\n";}else{for(int i=0;i<dt;++i){sum+=dona[i];}average=sum/dt;for(int i=0;i<dt;++i){if(dona[i]>average)t_aver++;}cout<<"you input "<<dt<<" numbers\n";}cin.clear();cout<<"average= "<<average;cout<<". It has "<<t_aver<<" numbers bigger than average.\n";return 0;}3、#include<iostream>#include<cctype>using namespace std;enum menu{c,p,t,g};int main(){char in;cout<<"Please enter oen of the following choices:\n""c:weret p:hyuijj\n"<<"t:gghh f:hhnjsjs\n";do{cout<<"Enter c,p,t or g: ";cin>>in;}while(in!='c' && in!='p' && in!='t' && in!='g');switch(in){case 'c': cout<<"hahahaha\n";break;case 'p': cout<<(char)toupper(in)<<endl;break;case 't': cout<<"hehehehehheh\n";break;case 'g': cout<<(int)in<<endl;break;default: cout<<"something wrong!";}return 0;}4、#include<iostream>#include<string>#include<cctype>using namespace std;struct bop{char fullname[20];char titlename[20];char bopname[20];int perference;};int main(){const int count=2;int i=0;bop t_b[count]={{"wimp mac","wp","Celia La",1},{"panpan","th","Pat hand",0}};cout<<"a. name; b:title; \n""c: bopname; d:perference;\n""q:quit\n";char in;cout<<"Enter your choice: ";cin>>in;while(in!='q'){switch( in){case 'a':{for(i=0;i<count;i++)cout<< t_b[i].fullname<<endl;break;}case 'b':{for(i=0;i<count;i++)cout<< t_b[i].titlename<<endl;break;}case 'c':{for(i=0;i<count;i++)cout<< t_b[i].bopname<<endl;break;}case 'd':{for(i=0;i<count;i++){switch (t_b[i].perference){case 0: cout<< t_b[i].fullname<<endl;break;case 1: cout<< t_b[i].titlename<<endl;break;case 2: cout<< t_b[i].bopname<<endl;break;default:cout<<"input wrong!";}}break;}default: cout<<"incorrect enter";}cout<<"\nEnter your choice: ";cin>>in;}cout<<"Bye.";return 0;}8、#include<iostream>//#include<math.h>#include<string>#include<cctype>#include<fstream>using namespace std;int main(){/*//产ú生Θ?文?件tofstream foid;char context[20]={'0'};int i=0;foid.open("tect field");context[i]=cin.get();while((char)context[i]!='@'&&i<19){foid<<context[i];++i;context[i]=cin.get();}*///读á取?文?件tifstream fd;char fd_cot[20]={'0'};fd.open("tect field");if(!fd.is_open()){cout<<"Could not open the file\n";exit;}int num_let=0;int i=0;fd.get(fd_cot[i]);while(fd.good()){if(!isspace(fd_cot[i]))++num_let;++i;fd.get(fd_cot[i]);}cout<<"This file has "<<num_let<<" letters\n";fd.close();}。
第6章分支语句和逻辑运算符//ex6.1#include<iostream>#include<cctype>int main(){using namespace std;char ch;cin.get(ch);while (ch != '@'){if (!isdigit(ch)){if (isupper(ch))ch = tolower(ch);else if (islower(ch))ch = toupper(ch);cout << ch;}cin.get(ch);}return 0;}//ex6.2#include<iostream>const int Max = 10;int main(){using namespace std;double num[Max];int i = 0;cout << "Number 1: ";while (i < Max && cin >> num[i]){if (++i < Max)cout << "Number " << i+1 << ": ";}double total = 0.0;for (int j = 0; j < i; j++)total += num[j];double Average = total/i;cout << "Average = " << Average << endl;int q = 0;for (int j = 0; j < i; j++)if (num[j] > Average)q++;cout << q << " numbers > average.\n";return 0;}//ex6.3#include<iostream>int main(){using namespace std;char ch;cout << "Please enter one of the choice:\n"<< "c) carnivore p) pianist\n"<< "t) tree g) game\n";cin >> ch;while (ch != 'c' && ch != 'p' && ch != 't' && ch != 'g'){cout << "Please enter a c, p, t, or g: ";cin >> ch;}switch (ch){case'c' : cout << "A cat is a carnivore.\n";break;case'p' : cout << "Radu Lupu is a pianist.\n";break;case't' : cout << "A maple is a tree.\n";break;case'g' : cout << "Golf is a game.\n";break;default : cout << "The program shouldn't get here!\n";}return 0;}//ex6.4#include<iostream>const int strsize = 20;struct bop{char fullname[strsize];char title[strsize];char bopname[strsize];int preference;};int main(){using namespace std;bop member[5] = {{"Wimp Macho", "English Teacher", "DEMON", 0},{"Raki Rhodes", "Junior Programmer", "BOOM", 1},{"Celia Laiter", "Super Star", "MIPS", 2},{"Hoppy Hipman", "Analyst Trainee", "WATEE", 1},{"Pat Hand", "Police", "LOOPY", 2}};char ch;cout << "Benevolent Order of Programmers Report\n"<< "a. display by name b. display by title\n"<< "c. display by bopname d. display by preference\n"<< "q. quit\n";cout << "Enter your choice: ";while (cin >> ch && ch != 'q'){switch (ch){case'a': for (int i = 0; i < 5; i++)cout << member[i].fullname << endl;break;case'b': for (int i = 0; i < 5; i++)cout << member[i].title << endl;break;case'c': for (int i = 0; i < 5; i++)cout << member[i].bopname << endl;break;case'd': for (int i = 0; i < 5; i++){if (member[i].preference == 0)cout << member[i].fullname << endl;else if (member[i].preference == 1)cout << member[i].title << endl;elsecout << member[i].bopname << endl;}break;}cout << "Next choice: ";}cout << "Bye!" << endl;return 0;}//ex6.5#include<iostream>const double LEV1 = 5000;const double LEV2 = 15000;const double LEV3 = 35000;const double RATE1 = 0.10;const double RATE2 = 0.15;const double RATE3 = 0.20;int main(){using namespace std;double income, tax;cout << "Enter your annual income in tvarps: ";cin >> income;if (income <= LEV1)tax = 0;else if (income <= LEV2)tax = (income - LEV1) * RATE1;else if (income <= LEV3)tax = RATE1 * (LEV2 - LEV1) + RATE2 * (income - LEV2);elsetax = RATE1 * (LEV2 - LEV1) + RATE2 * (LEV3 - LEV2)+ RATE3 * (income - LEV3);cout << "You owe Neutronia " << tax << " tvarps in taxes.\n";return 0;}//ex6.6#include<iostream>#include<string>using namespace std;struct Patrons{string name;double money;};int main(){cout << "输入捐赠者的数目: ";int num;cin >> num;Patrons* ps = new Patrons[num];cout << "输入每一个捐赠者的姓名和款项:\n";for (int i=0; i<num; i++){cout << "输入第" << i+1 << "位姓名: ";cin >> ps[i].name;cout << "输入第" << i+1 << "位款项: ";cin >> ps[i].money;}cout << "Grand Patron\n";for (int i=0; i<num; i++){if (ps[i].money > 10000)cout << ps[i].name << endl;}cout << "\nPatron\n";for (int i=0; i<num; i++){if (ps[i].money <= 10000)cout << ps[i].name << endl;}return 0;}//ex6.7#include<iostream>#include<string>#include<cctype>int main(){using namespace std;string word;int vowel = 0;int consonant = 0;int other = 0;char ch;cout << "Enter words (q to quit):\n";cin >> word;while (word != "q"){ch = tolower(word[0]);if (isalpha(ch)){if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')vowel ++;elseconsonant ++;}elseother ++;cin >> word;}cout << vowel << " words beginning with vowel\n"<< consonant << " words beginning with consonants\n"<< other << " others\n";return 0;}//ex6.8#include<iostream>#include<fstream>#include<cstdlib>const int SIZE = 60;int main(){using namespace std;char filename[SIZE];ifstream inFile;cout << "Enter name of data file: ";cin.getline(filename, SIZE);inFile.open(filename);if (!inFile.is_open()){cout << "Could not open the file " << filename << endl;cout << "Program terminating.\n";exit(EXIT_FAILURE);}int count = 0;char ch;inFile >> ch;while (inFile.good()){count ++;inFile >> ch; // get next value}cout << count << " characters in " << filename << endl;inFile.close(); // finished with the filereturn 0;}//ex6.9#include<iostream>#include<string>#include<fstream>#include<cstdlib>const int SIZE = 60;using namespace std;struct Patrons{string name;double money;};int main(){char filename[SIZE];ifstream inFile;cout << "Enter name of data file: ";cin.getline(filename, SIZE);inFile.open(filename);if (!inFile.is_open()){cout << "Could not open the file " << filename << endl;cout << "Program terminating.\n";exit(EXIT_FAILURE);}int num;inFile >> num;inFile.get();Patrons* ps = new Patrons[num];for (int i = 0; i<num; i++){getline(inFile, ps[i].name);inFile >> ps[i].money;inFile.get();}cout << "\nGrand Patrons:\n";int count1 = 0;for (int i = 0; i < num; i++){if (ps[i].money > 10000){cout << ps[i].name <<endl;count1++;}}if (count1 == 0)cout << "none";cout << "\nPatrons:\n";int count2 = 0;for (int i = 0; i < num; i++){if (ps[i].money <= 10000){cout << ps[i].name <<endl;count2++;}}if (count2 == 0)cout << "none";delete [] ps;inFile.close();return 0;}第7章函数——C++的编程模块//ex7.1#include<iostream>double t_av(double x, double y);int main(){using namespace std;double x, y;double result;cout << "Please enter two numbers (0 to stop): ";while ((cin >> x >> y) && x != 0 && y != 0){result = t_av(x, y);cout << "调和平均数 = " << result << endl;cout << "Please enter two numbers (0 to stop): ";}return 0;}double t_av(double x, double y){return 2.0 * x * y / (x + y);}//ex7.2#include<iostream>const int MAX = 10;using namespace std;int fill_ar(double ar[], int limit);void show_ar(const double ar[], int n);double average(const double ar[], int n);int main(){double scores[MAX];int size = fill_ar(scores, MAX);show_ar(scores, size);if (size > 0)cout << "The average of scores is: "<< average(scores, size) << endl;return 0;}int fill_ar(double ar[], int limit){double temp;int i;for (i = 0; i < limit; i++){cout << "Enter score #" << i+1 << ": ";cin >> temp;if (!cin){cin.clear();while (cin.get() != '\n')continue;cout << "Bad input; enter a number: ";break;}if (temp < 0)break;ar[i] = temp;}return i;}void show_ar(const double ar[], int n){for (int i = 0; i < n; i++)cout << "score #" << i+1 << ": " << ar[i] << endl; }double average(const double ar[], int n){double sum = 0.0;for (int i = 0; i < n; i++)sum += ar[i];return sum / n;}//ex7.3#include<iostream>struct box{char maker[40];float height;float width;float length;float volume;};void set_box(box *);void show_box(box);int main(){using namespace std;box carton = {"Bingo Boxer", 2, 3, 5};set_box(&carton);show_box(carton);return 0;}void set_box(box * pb){pb->volume = pb->height * pb->length * pb->width;}void show_box(box b){using namespace std;cout << "Box maker: " << b.maker<< "\nheight: " << b.height<< "\nlwidth: " << b.width<< "\nlength: " << b.length<< "\nvolume: " << b.volume << endl;}//ex7.4#include<iostream>long double probability(unsigned numbers, unsigned picks);int main(){using namespace std;double total, choices, mtotal;long double probability1, probability2;cout << "Enter total number of game card choices and\n""number of picks allowed for the field:\n";while ((cin >> total >> choices) && choices < total){cout << "Enter total number of game card choices and\n""number of picks allowed for the mega:\n";if (!(cin >> mtotal))break;probability1 = probability(total, choices);probability2 = probability(mtotal, 1);cout << "The chances of getting all "<< choices << " picks is one in "<< probability1 << ".\n";cout << "The chances of getting the megaspot is one in "<< probability2 << ".\n";cout << "You have one chance in ";cout << probability1 * probability2;cout << " of winning.\n";cout << "Next set of numbers (q to quit): ";}cout << "bye\n";return 0;}long double probability(unsigned numbers, unsigned picks){long double result = 1.0;long double n;unsigned p;for (n = numbers, p = picks; p > 0; n--, p--)result = result * n / p;return result;}//ex7.5#include<iostream>long long int recure(int);int main(){using namespace std;int number;cout << "Enter a integer (q to stop): ";while (cin >> number){long long int result = recure(number);cout << number << "! = " << result << endl;cout << "Next:";}cout << "Done!" << endl;return 0;}long long int recure(int n){long long int result;if (n > 0)result = n * recure(n-1);elseresult = 1;return result;}//ex7.6#include<iostream>const int Size = 10;int Fill_array(double ar[], int n);void Show_array(const double ar[], int n); void Reverse_array(double ar[], int n);int main(){using namespace std;double values[Size];int len = Fill_array(values, Size);cout << "Array values:\n";Show_array(values, len);cout << "Array reversed:\n";Reverse_array(values, len);Show_array(values, len);cout << "All but end values reversed:\n";Reverse_array(values+1, len-2);Show_array(values, len);return 0;}int Fill_array(double ar[], int n){using namespace std;double temp;int i;for (i=0; i<n; i++){cout << "Enter value #" << i+1 << ": ";cin >> temp;if (!cin)break;ar[i] = temp;}cout << endl;return i;}void Show_array(const double ar[], int n){using namespace std;for (int i=0; i<n; i++)cout << "Property #" << i+1 << ": "<< ar[i] << endl;cout << endl;}void Reverse_array(double ar[], int n){double temp;for (int i=0,j=n-1; i<j; i++,j--){temp = ar[i];ar[i] = ar[j];ar[j] = temp;}}//ex7.7#include<iostream>const int Max = 5;double * fill_array(double * begin, double * end);void show_array(const double * begin, const double * end); void revalue(double r, double * begin, double * end);int main(){using namespace std;double properties[Max];double * pbegin = properties;double * pend = fill_array(pbegin, pbegin + Max);show_array(pbegin, pend);if (pend-pbegin > 0){cout << "Enter revaluation factor: ";double factor;while (!(cin >> factor)){cin.clear();while (cin.get() != '\n')continue;cout << "Bad input; Please enter a number: ";}revalue(factor, pbegin, pend);show_array(pbegin, pend);}cout << "Done.\n";return 0;}double * fill_array(double * begin, double * end){using namespace std;double temp;int i = 1;while (begin < end){cout << "Enter value #" << i << ": ";cin >> temp;if (!cin){cin.clear();while (cin.get() != '\n')continue;cout << "Bad input; input process terminated.\n";break;}else if (temp < 0)break;*begin = temp;begin++;i++;}return begin;}void show_array(const double * begin, const double * end){using namespace std;int i = 1;while (begin < end){cout << "Property #" << i << ": $";cout << *begin << endl;begin++;i++;}}void revalue(double r, double * begin, double * end){while (begin < end){*begin *= r;begin++;}}//ex7.8a#include<iostream>const int Seasons = 4;const char * Snames[] = {"Spring", "Summer", "Fall", "Winter"}; void fill(double ar[], int n);void show(double ar[], int n);int main(){using namespace std;double expenses[Seasons];fill(expenses, Seasons);show(expenses, Seasons);return 0;}void fill(double ar[], int n){using namespace std;for (int i=0; i<n; i++){cout << "Enter " << Snames[i] << " expenses: ";cin >> ar[i];}}void show(double ar[], int n){using namespace std;cout << "\nEXPENSES\n";double total = 0.0;for (int i=0; i<n; i++){cout << Snames[i] << ": $" << ar[i] <<endl;total += ar[i];}cout << "Total Expenses: $" << total << endl;}//ex7.8b(传递结构值)#include<iostream>const int Seasons = 4;struct data{double arr[Seasons];};const char * Snames[] = {"Spring", "Summer", "Fall", "Winter"}; data fill();void show(data);int main(){using namespace std;data expenses = fill();show(expenses);return 0;}data fill(){using namespace std;data expenses;for (int i=0; i<Seasons; i++)cout << "Enter " << Snames[i] << " expenses: ";cin >> expenses.arr[i];}return expenses;}void show(data expenses){using namespace std;cout << "\nEXPENSES\n";double total = 0.0;for (int i=0; i<Seasons; i++){cout << Snames[i] << ": $" << expenses.arr[i] <<endl;total += expenses.arr[i];}cout << "Total Expenses: $" << total << endl;}//ex7.8b(传递结构指针)#include<iostream>const int Seasons = 4;struct data{double arr[Seasons];};const char * Snames[] = {"Spring", "Summer", "Fall", "Winter"}; void fill(data * pd);void show(data * pd);int main(){using namespace std;data expenses;fill(&expenses);show(&expenses);return 0;}void fill(data * pd){using namespace std;for (int i=0; i<Seasons; i++)cout << "Enter " << Snames[i] << " expenses: ";cin >> pd->arr[i];}}void show(data * pd){using namespace std;cout << "\nEXPENSES\n";double total = 0.0;for (int i=0; i<Seasons; i++){cout << Snames[i] << ": $" << pd->arr[i] <<endl;total += pd->arr[i];}cout << "Total Expenses: $" << total << endl;}//ex7.9#include<iostream>using namespace std;const int SLEN = 30;struct student {char fullname[SLEN];char hobby[SLEN];int ooplevel;};int getinfo(student pa[], int n);void display1(student st);void display2(const student * ps);void display3(const student pa[], int n);int main(){cout << "Enter class size: ";int class_size;cin >> class_size;while (cin.get() != '\n')continue;student * ptr_stu = new student[class_size];int entered = getinfo(ptr_stu, class_size);for (int i = 0; i < entered; i++)display1(ptr_stu[i]);display2(&ptr_stu[i]);}display3(ptr_stu, entered);delete [] ptr_stu;cout << "Done\n";return 0;}// getinfo() has two arguments: a pointer to the first element of // an array of student structures and an int representing the// number of elements of the array. The function solicits and// stores data about students. It terminates input upon filling// the array or upon encountering a blank line for the student// name. The function returns the actual number of array elements // filled.int getinfo(student pa[], int n){int num_array_elem = n;char tmp[SLEN];for (int i = 0; i < n; ++i){cout << "Enter name: ";cin.getline(tmp, SLEN);bool blank_line = true;for (unsigned j = 0; j < strlen(tmp); ++j){if (!isspace(tmp[j])){blank_line = false;break;}}if (blank_line){num_array_elem = i;break;}strcpy(pa[i].fullname, tmp);cout << "Enter hobby: ";cin.getline(pa[i].hobby, SLEN);cout << "Enter ooplevel: ";cin >> pa[i].ooplevel;cin.get();}cout << endl;return num_array_elem;}// display1() takes a student structure as an argument// and displays its contentsvoid display1(student st){cout << st.fullname << '\t'<< st.hobby << '\t'<< st.ooplevel << endl;}// display2() takes the address of student structure as an// argument and displays the structure’¡¥s contentsvoid display2(const student * ps){cout << ps->fullname << '\t'<< ps->hobby << '\t'<< ps->ooplevel << endl;}// display3() takes the address of the first element of an array// of student structures and the number of array elements as// arguments and displays the contents of the structuresvoid display3(const student pa[], int n){for (int i = 0; i < n; ++i)cout << pa[i].fullname << '\t' << pa[i].hobby << '\t' <<pa[i].ooplevel << endl;}//ex7.10#include<iostream>double calculate(double x, double y, double (*pf)(double, double)); double add(double x, double y);double sub(double x, double y);double mean(double x, double y);int main(){using namespace std;double a, b;double (*pf[3])(double, double) = {add, sub, mean};char * op[3] = {"add", "sub", "mean"};cout << "Enter pairs of numbers (q to quit): ";while (cin >> a >> b){for (int i=0; i<3; i++){cout << op[i] << ": " << a << " and " << b << " = "<< calculate(a, b, pf[i]) << endl;}}}double calculate(double x, double y, double (*pf)(double, double)) {return (*pf)(x, y);}double add(double x, double y){return x + y;}double sub(double x, double y){return x - y;}double mean(double x, double y){return (x + y) / 2.0;}第8章函数探幽//ex8.1#include<iostream>void show(const char * ps, int n = 0);int main(){using namespace std;char * pstr = "Hello\n";show(pstr);int num;cout << "Enter a number: ";cin >> num;show(pstr, num);cout << "Done\n";return 0;}void show(const char * ps, int n){using namespace std;int lim = n;if (n == 0)lim = 1;for (int i=0; i<lim; i++)cout << ps;}//ex8.2#include<iostream>#include<string>using namespace std;struct CandyBar{string name;double weight;int hot;};void set(CandyBar & cb, char * ps, double w, int h); void show(const CandyBar & cb);int main(){using namespace std;CandyBar candy;char * p = "Millennium Munch";double x = 2.85;int y = 350;set(candy, p, x, y);show(candy);return 0;}void set(CandyBar & cb, char * ps, double w, int h){ = ps;cb.weight = w;cb.hot = h;}void show(const CandyBar & cb){cout << "Name: " << << endl<< "Weight: " << cb.weight << endl<< "Hot: " << cb.hot << endl;}//ex8.3#include<iostream>#include<string>#include<cctype>using namespace std;void str_to_upper(string & str);int main(){string str1;cout << "Enter a string (q to quit): ";while (getline(cin, str1) && str1!="q" && str1!="Q") {str_to_upper(str1);cout << str1 << endl;cout << "Next string (q to quit): ";}cout << "Bye.";return 0;}void str_to_upper(string & str){int limit = str.size();for (int i=0; i<limit; i++){if (isalpha(str[i]))str[i] = toupper(str[i]);}}// ex8.4#include<iostream>#include<cstring>// for strlen(), strcpy()using namespace std;struct stringy {char * str; // points to a stringint ct; // length of string (not counting '\0')};void show(const char *str, int cnt = 1);void show(const stringy & bny, int cnt = 1);void set(stringy & bny, const char * str);int main(void){stringy beany;char testing[] = "Reality isn't what it used to be.";set(beany, testing); // first argument is a reference,// allocates space to hold copy of testing,// sets str member of beany to point to the// new block, copies testing to new block,// and sets ct member of beany show(beany); // prints member string onceshow(beany, 2); // prints member string twicetesting[0] = 'D';testing[1] = 'u';show(testing); // prints testing string onceshow(testing, 3); // prints testing string thriceshow("Done!");return 0;}void show(const char *str, int cnt){while(cnt-- > 0)cout << str << endl;}}void show(const stringy & bny, int cnt){while(cnt-- > 0){cout << bny.str << endl;}}void set(stringy & bny, const char * str){bny.ct = strlen(str);bny.str = new char[bny.ct+1];strcpy(bny.str, str);}//ex8.5#include<iostream>const int Limit = 5;template <typename T>T max5(T ar[]);int main(){using namespace std;int ari[Limit] = {1, 2, 3, 5, 4};double ard[Limit] = {1.1, 2.2, 3.3, 5.5, 4.4};int maxi = max5(ari);double maxd = max5(ard);cout << "maxi = " << maxi << endl;cout << "maxd = " << maxd << endl;return 0;}template <typename T>T max5(T ar[]){T max = ar[0];for (int i=1; i<Limit; i++)if (max < ar[i])max = ar[i];}return max;}//ex8.6#include<iostream>template <typename T>T maxn(T ar[], int n);template <> const char* maxn(const char* ar[], int n);int main(){using namespace std;int ari[6] = {1, 2, 3, 4, 6, 5};double ard[4] = {1.1, 2.2, 4.4, 3.3};const char * ars[5] = {"a","bb","ccc","ddddd","eeee"};cout << "The max integer of array is: " << maxn(ari, 6) << endl;cout << "The max double of array is: " << maxn(ard, 4) << endl;cout << "The max string of array is: " << maxn(ars, 5)<<endl; }template <typename T>T maxn(T ar[], int n){T maxar = ar[0];for (int i=1; i<n; i++){if (maxar < ar[i])maxar = ar[i];}return maxar;}template <> const char* maxn(const char* ar[],int n) {const char * maxs = ar[0];for (int i=1; i<n; i++){if (strlen(maxs) < strlen(ar[i]))maxs = ar[i];}return maxs;}//ex8.7#include<iostream>template <typename T>T SumArrray(T arr[], int n);template <typename T>T SumArrray(T * arr[], int n);struct debts{char name[50];double amount;};int main(){using namespace std;int things[6] = {13, 31, 103, 301, 310, 130};struct debts mr_E[3] ={{"Ima Wolfe", 2400.0},{"Ura Foxe", 1300.0},{"Iby Stout", 1800.0}};double * pd[3];for (int i=0; i<3; i++)pd[i] = &mr_E[i].amount;cout << "Sum: Mr.E's counts of things: "<< SumArrray(things, 6) << endl;cout << "Sum: Mr.E's debts: "<< SumArrray(pd, 3) << endl;return 0;。
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);。
Chapter 2 Programming ExercisesPE 2--‐1/*ProgrammingExercise2-1*/#include<stdio.h>intmain(void){printf("GustavMahler\n");printf("Gustav\nMahler\n");printf("Gustav");printf("Mahler\n");return0;}PE 2--‐3/*ProgrammingExercise2-3*/#include<stdio.h>intmain(void)PE 2--‐8/*ProgrammingExercise2-8*/#include<stdio.h>voidone_three(void);voidtwo(void);intmain(void){printf("startingnow:\n");one_three();printf("done!\n");return0;}voidone_three(void){printf("one\n");two();printf("three\n");}voidtwo(void){printf("two\n");}Chapter 3 Programming ExercisesPE 3--‐2/*ProgrammingExercise3-2*/#include<stdio.h>intmain(void){intascii;printf("EnteranASCIIcode:");scanf("%d",&ascii);printf("%distheASCIIcodefor%c.\n",ascii,ascii);return0;}"%s,%s\n",lname,fname);return0;}PE 4--‐4/*ProgrammingExercise4-4*/#include<stdio.h>intmain(void){floatheight;charname[40];printf("Enteryourheightininches:");scanf("%f",&height);printf("Enteryourname:");scanf("%s",name);printf("%s,youare%.3ffeettall\n",name,height/12.0);return0;}PE 4--‐7/*ProgrammingExercise4-7*/#include<stdio.h>#include<float.h>intmain(void){floatot_f=1.0/3.0;doubleot_d=1.0/3.0;printf("floatvalues:");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);return0;}Chapter 5 Programming ExercisesPE 5--‐1/*ProgrammingExercise5-1*/#include<stdio.h>intmain(void){constintminperhour=60;intminutes,hours,intmain(void)/*findssumoffirstnintegers*/{intcount,sum;intn;printf("Entertheupperlimit:");scanf("%d",&n);count=0;sum=0;while(count++<n)sum=sum+count;printf("sum=%d\n",sum);return0;}PE 5--‐7/*ProgrammingExercise5-7*/#include<stdio.h>voidshowCube(doublex);intmain(void)/*findscubeofenterednumber*/ {doubleval;printf("Enterafloating-pointvalue:");scanf("%lf",&val);showCube(val);return0;}voidshowCube(doublex){printf("Thecubeof%eis%e.\n",x,x*x*x);}Chapter 6 Programming ExercisesPE 6--‐1/*pe6-1.c*//*thisimplementationassumesthecharactercodes*//*aresequential,astheyareinASCII.*/#include<stdio.h>#defineSIZE26intmain(void){charlcase[SIZE];inti;for(i=0;i<SIZE;i++)lPE 6--‐8/*pe6-8.c*/#include<stdio.h>intmain(void){doublen,m;doubleres;printf("Enterapairofnumbers:");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("Enternextpair(non-numerictoquit):");}return0;}PE 6--‐11/*pe6-11.c*/#include<stdio.h>#defineSIZE8intmain(void){intvals[SIZE];inti;printf("Pleaseenter%dintegers.\n",SIZE);for(i=0;i<SIZE;i++)scanf("%d",&vals[i]);printf("Here,inreverseorder,arethevaluesyouentered:\n");for(i=SIZE-1;i>=0;i--)printf("%d",vals[i]);printf("\n");return0;}PE 6--‐13/*pe6-13.c*/}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");return0;}PE 6--‐16/*pe6-16.c*/#include<stdio.h>#defineRATE_SIMP0.10#defineRATE_COMP0.05#defineINIT_AMT100.0intmain(void){doubledaphne=INIT_AMT;doubledeidre=INIT_AMT;intyears=0;while(deidre<=daphne){daphne+=RATE_SIMP*INIT_AMT;deidre+=RATE_COMP*deidre;++years;}printf("Investmentvaluesafter%dyears:\n",years);printf("Daphne:$%.2f\n", daphne);printf("Deidre:$%.2f\n",deidre);return0;}Chapter 7 Programming ExercisesPE 7--‐1/*ProgrammingExercise7-1*/#include<stdio.h>intmain(void){charch;intsp_ct=0;intnl_ct=0;intother=0;while((ch=getchar())printf("Numberofodds:%d",ct_odd);if(ct_odd>0)printf("average:%g",sumodd/ct_odd);putchar('\n');printf("\ndone\n");return0;}PE 7--‐5/*ProgrammingExercise7-5*/#include<stdio.h>intmain(void){charch;intct1=0;intct2=0;while((ch=getchar())!='#'){switch(ch){case'.':putchar('!');++ct1;break;case'!':putchar('!');putchar('!');++ct2;break;default:putchar(ch);}}printf("%dreplacement(s)of.with!\n",ct1);printf("%dreplacement(s)of!with!!\n",ct2);return0;}PE 7--‐7//ProgrammingExercise7-7#include<stdio.h>#defineBASEPAY10//$10perhour#defineBASEHRS40//hoursatbasepay#defineOVERTIME1.5//1.5time{if(limit>1)printf("Herearetheprimenumbersupthrough%d\n",limit);elseprintf("Noprimes.\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("%disprime.\n",num);}printf("Enterapositiveinteger(qtoquit):");}printf("Done!\n");return0;}PE 7--‐11/*pe7-11.c*//*ProgrammingExercise7-11*/#include<stdio.h>#include<ctype.h>intmain(void){constdoubleprice_artichokes=2.05;constdoubleprice_beets=1.15;constdoubleprice_carrots=1.09;constdoubleDISCOUNT_RATE=0.05;constdoubleunder5=6.50;constdoubleunder20=14.00;constdoublebase20=14.00;constdoubleextralb=0.50;charch;doublelb_artichokes=0;doublelb_beets=}final_total=cost_total+shipping-discount;printf("Yourorder:\n");printf("%.2flbsofartichokesat$%.2fperpound:$%.2f\n",lb_artichokes,price_artic hokes,cost_artichokes);printf("%.2flbsofbeetsat$%.2fperpound:$%.2f\n",lb_bee ts,price_beets,cost_beets);printf("%.2flbsofcarrotsat$%.2fperpound:$%.2f\n",lb _carrots,price_carrots,cost_carrots);printf("Totalcostofvegetables:$%.2f\n",cost_total);if(cost_total>100)printf("V olumediscount:$%.2f\n",discount);printf("Shipping:$%.2f\n",shipping);printf("Totalcharges:$%.2f\n",final_total);return0;}Chapter 8 Programming ExercisesPE 8--‐1/*ProgrammingExercise8-1*/#include<stdio.h>intmain(void){intch;intct=0;while((ch=getchar())!=EOF)ct++;printf("%dcharactersread\n",ct);return0;}PE 8--‐3/*ProgrammingExercise8-3*//*Usingctype.heliminatesneedtoassumeconsecutivecoding*/ #include<stdio.h>#include<ctype.h>intmain(void){intch;unsignedlonguct=0;unsignedlonglct=0;unsignedlongoct=0;while((ch=getchar())!=EOF)if(isupper(ch))uct++;elseif(islower(ch))lct++;elseoct++;}1;elseif(response=='l')low=guess+1;guess=(high+low)/2;printf("Well,then,isit%d?\n",guess);}printf("IknewIcoulddoit!\n");return0;}PE 8--‐7/*ProgrammingExercise8-7*/#include<stdio.h>#include<ctype.h>#include<stdio.h>#defineBASEPAY18.75//$8.75perhour#defineBASEPAY29.33//$9.33perhour#defineBASEPAY310.00//$10.00perhour#defineBASEPAY411.20//$11.20perhour#defineBASEHRS40//hoursatbasepay#defineOVERTIME1.5//1.5time#defineAMT1300//1stratetier#defineAMT2150//2stratetier#defineRATE10.15//ratefor1sttier#defineRATE20.20//ratefor2ndtier#defineRATE30.25//ratefor3rdtierintgetfirst(void);voidmenu(void);intmain(void){doublehours;doublegross;doublenet;doubletaxes;doublepay;charresponse;menu();printf("a)$%4.2f/hrb)$%4.2f/hr\n",BASEPAY1,BASEPAY2);printf("c)$%5.2f/hrd)$%5.2f/hr\n",BASEPAY3,BASEPAY4);printf("q)quit\n");printf("********************************************************""*********\n");}intgetfirst(void){intch;ch=getchar();while(isspace(ch))ch=getchar();while(getchar()!='\n')continue;returnch;}Chapter 9 Programming ExercisesPE 9--‐1/*ProgrammingExercise9-1*/#include<stdio.h>doublemin(double,double);intmain(void){doublex,y;printf("Entertwonumbers(qtoquit):");while(scanf("%lf%lf",&x,&y)==2){printf("Thesmallernumberis%f.\n",min(x,y));printf("Nexttwovalues(qtoquit):");}printf("Bye!\n");return0;}doublemin(doublea,doubleb){for(col=0;col<c;col++)putchar(ch);putchar('\n');}return;}PE 9--‐5/*ProgrammingExercise9-5*/#include<stdio.h>voidlarger_of(double*p1,double*p2);intmain(void){doublex,y;printf("Entertwonumbers(qtoquit):");while(scanf("%lf%lf",&x,&y)==2){larger_of(&x,&y);}printf("Bye!\n");return0;}voidlarger_of(double*p1,double*p2){if(*p1>*p2)*p2=*p1;else*p1=*p2;}//alternatively:/*voidlarger_of(double*p1,double*p2){*p1=*p2=*p1>*p2?*p1:*p2;*/printf("baseshouldbeintherange2-10:");}if(count!=1)break;printf("Base%dequivalent:",b);to_base_n(number,b);putchar('\n');printf("Enteraninteger(qtoquit):\n");}printf("Done.\n");return0;}voidto_base_n(intx,intbase)/*recursivefunction*/ {intr;r=x%base;if(x>=base)to_base_n(x/base,base);putchar('0'+r);return;}Chapter 10 Programming Exercises/*ProgrammingExercise10-1*/#include<stdio.h>#defineMONTHS12//numberofmonthsinayear#defineYRS5//numberofyearsofdataintmain(void){//initializingrainfalldatafor2010-2014constfloatrain[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}};intyear,month;floatsubtot,total;RS;year++)}intmax_arr(constintar[],intn){inti;intmax=ar[0];/*don'tuse0asinitialmaxvalue--failsifallarrayvaluesareneg*/ for(i=1;i<n;i++)if(max<ar[i])max=ar[i];returnmax;}voidshow_arr(constintar[],intn){inti;for(i=0;i<n;i++)printf("%d",ar[i]);putchar('\n');}PE 10--‐5/*ProgrammingExercise10-5*/#defineLEN10doublemax_diff(constdoublear[],intn);voidshow_arr(constdoublear[],intn);intmain(void){doubleorig[LEN]={1.1,2,3,4,12,61.3,7,8,9,10};doublemax; show_arr(orig,LEN);max=max_diff(orig,LEN);printf("%g=maximumdifference\n",max);return0;}doublemax_diff(constdoublear[],intn) {inti;doublemax=ar[0];doublemin=ar}}{inti;for(i=0;i<n;i++)printf("%d",ar[i]);putchar('\n');}PE 10--‐11/*ProgrammingExercise10-11*/#include<stdio.h>#defineROWS3#defineCOLS5voidtimes2(intar[][COLS],intr);voidshowarr2(intar[][COLS],intr);intmain(void){intstuff[ROWS][COLS]={{1,2,3,4,5},{6,7,8,-2,10},{11,12,13,14,15}};showarr2(stuff,ROWS);putchar('\n');times2(stuff,ROWS);showarr2(stuff,ROWS);return0;}voidtimes2(intar[][COLS],intr){introw,col;for(row=0;row<r;row++)for(col=0;col<COLS;col++)ar[row][col]*=2;}voidshowarr2(intar[][COLS],intr){introw,col;for(i=0;i<n;i++){printf("Entervalue#%d:",i+1);scanf("%lf",&ar[i]);}}doubleaverage2d(introws,intcols,doublear[rows][cols]){intr,c;doublesum=0.0;for(r=0;r<rows;r++)for(c=0;c<cols;c++)sum+=ar[r][c];if(rows*cols>0)returnsum/(rows*cols);elsereturn0.0;}doublemax2d(introws,intcols,doublear[rows][cols]){intr,c;doublemax=ar[0][0];for(r=0;r<rows;r++)for(c=0;c<cols;c++)if(max<ar[r][c])max=ar[r][c];returnmax;}voidshowarr2(introws,intcols,doublear[rows][cols]){introw,col;for(row=0;row<rows;row++){for(col=0;col<cols;col++)printf("%g",ar[row][col]);putchar('\n');}}doubleaverage(constdoublear[],intn) {inti;doublesum=0.0;}char*getword(char*str){intch;char*orig=str;//skipoverinitialwhitespacewhile((ch=getchar ())!=EOF&&isspace(ch))continue;if(ch==EOF)returnNULL;else*str++=ch;//firstcharacterinword//getrestofwordwhile((ch=getchar())!=EOF&&!isspace(ch))*str++=ch;*str='\0';if(ch==EOF)returnNULL;else{while(ch!='\n')ch=getchar();returnorig;}}PE 11--‐6#include<stdio.h>#include<string.h>#defineLEN80_Boolis_within(constchar*str,charc);char*s_gets(char*st,intn);intmain(void){charinput[LEN];charch;intfound;;printf("Enterastring:");while(s_gets(input,LEN)&&input[0]!='\0'){printf("Enteracharacter:");ch=getchar();while(getchar()!='\n')continue;found=is_within(input,ch);if(found==0)printf("%cnotfoundinstring.\n",ch);elseputs("Notfound");return0;}#include<string.h>char*string_in(constchar*s1,constchar*s2){intl2=strlen(s2);inttries;/*maximumnumberofcomparisons*/intnomatch=1;/*setto0ifmatchisfound*/ tries=strlen(s1)+1-l2;if(tries>0)while((nomatch=strncmp(s1,s2,l2))&&tries--)s1++;if(nomatch)returnNULL;elsereturn(char*)s1;/*castconstaway*/PE 11--‐10/*ProgrammingExercise11-10*/#include<stdio.h>#include<string.h>//forstrchr();#defineLEN81intdrop_space(char*s);char*s_gets(char*st,intn);intmain(void){charorig[LEN];puts("Enterastringof80charactersorless:");while(s_gets(orig,LEN)&&orig[0]!='\0'){drop_space(orig);puts(orig);puts("Enternextstring(orjustEntertoquit):");}}#include<stdbool.h>//forbool,true,falseintmain(void){charc;//readincharacterintlow_ct=0;//numberoflowercasecharactersintup_ct=0;//numberofuppercasecharactersintdig_ct=0;//numberofdigitsintn_words=0;//numberofwordsintpunc_ct=0;//numberofpunctuationmarksboolinword=false;//==trueifcisinaword printf("Entertexttobeanalyzed(EOFtoterminate):\n");while((c=getchar())!=EOF) {if(islower(c))low_ct++;elseif(isupper(c))up_ct++;elseif(isdigit(c))dig_ct++;elseif(ispunct(c))punc_ct++;if(!isspace(c)&&!inword){inword=true;//startinganewwordn_words++;//countwordif(isspace(c)&&inword)inword=false;//reachedendofword}printf("\nwords=%d,lowercase=%d,uppercase=%d," "digits=%d,punctuation=%d\n",n_words,low_ct,up_ct,dig_ct,punc_ct);return0;}PE 11--‐14/*ProgrammingExercise11-14*/#include<stdio.h>#include<stdlib.h>/*foratof()*/#include<math.h>/*forpow()*/intmain(intargc,char*argv[])}}if(ok)while((ch=getchar())!=EOF){switch(mode){case'p':putchar(ch);break;case'u':putchar(toupper(ch));break;case'l':putchar(tolower(ch));}}return0;Chapter 12 Programming ExercisesPE 12--‐1/*pe12-1.c--deglobalizingglobal.c*//*ProgrammingExercise12-1*//*oneofseveralapproaches*/#include<stdio.h>voidcritic(int*u);intmain(void){intunits;/*unitsnowlocal*/printf("Howmanypoundstoafirkinofbutter?\n");scanf("%d",&units);while(units!=56)critic(&units);printf("Youmusthavelookeditup!\n");return0;}{if(*pm!=METRIC&&*pm!=US){printf("Invalidmodespecified.Mode%d\n",*pm);printf("Previousmodewil lbeused.\n");*pm=USE_RECENT;}}voidget_info(intmode,double*pd,double*pf){if(mode==METRIC)printf("Enterdistancetraveledinkilometers:");elseprintf("Enterdistancetraveledinmiles:");scanf("%lf",pd);if(mode==Mprintf("Enterfuelconsumedinliters:");elseprintf("Enterfuelconsumedingallons:");scanf("%lf",pf);}voidshow_info(intmode,doubledistance,doublefuel){printf("Fuelconsumptionis");if(mode==METRIC)printf("%.2flitersper100km.\n",100*fuel/distance);elseprintf("%.1fmilespergallon.\n",distance/fuel);}//pe12-3b.c//compilewithpe12-3a.c#include<stdio.h>#include"pe12-3a.h"intmain(void)for(search=top+1;search<limit;search++)if(array[search]>array[top]){temp=array[search];array[search]=array[top];array[top]=temp;}}/*print.c--printsanarray*/voidprint(constintarray[],intlimit){intindex;for(index=0;index<limit;index++){printf("%2d",array[index]);if(index%10==9)putchar('\n');}if(index%10!=0)//iflastlinenotcompleteputchar('\n');}PE 12--‐7/*pe12-7.c*/#include<stdio.h>#include<stdlib.h>/*forsrand()*/#include<time.h>/*fortime()*/introllem(int);intmain(void){intdice,count,roll;intsides;intset,sets;srand((unsignedint)time(0));/*randomizerand()*/ printf("Enterthenumberofsets;enterqtostop:");while(scanf("%d",&sets)==1)}printf("Usage:%ssourcefiletargetfile\n",argv[0]);exit(EXIT_FAILURE);}if((source=fopen(argv[1],"rb"))==NULL){printf("Couldnotopenfile%sforinput\n",argv[1]);exit(EXIT_FAILURE);}if((target=fopen(argv[2],"wb"))==NULL){printf("Couldnotopenfile%sforoutput\n",argv[2]);exit(EXIT_FAILURE);}while((byte=getc(source))!=EOF){putc(byte,target);}if(fclose(source)!=0)printf("Couldnotclosefile%s\n",argv[1]);if(fclose(target)!=0)printf("Couldnotclosefile%s\n",argv[2]);return0;}PE 13--‐4/*ProgrammingExercise13-4*/#include<stdio.h>#include<stdlib.h>intmain(intargc,char*argv[]){intbyte;FILE*source;intfilect;}FILE*fa,*fs;intfiles=0;intfct;if(argc<3){printf("Usage:%sappendfilesourcefile[s]\n",argv[0]);exit(EXIT_FAILURE);}if((fa=fopen(argv[1],"a"))==NULL){fprintf(stderr,"Can'topen%s\n",argv[1]);exit(EXIT_FAILURE);}if(setvbuf(fa,NULL,_IOFBF,BUFSIZE)!=0){fputs("Can'tcreateoutputbuffer\n",stderr);exit(EXIT_FAILURE);}for(fct=2;fct<argc;fct++){if(strcmp(argv[fct],argv[1])==0)fputs("Can'tappendfiletoitself\n",stderr);els eif((fs=fopen(argv[fct],"r"))==NULL)fprintf(stderr,"Can'topen%s\n",argv[fct]);else{if(setvbuf(fs,NULL,_IOFBF,BUFSIZE)!=0){fputs("Can'tcreateoutputbuffer\n",stderr);continue;}append(fs,fa);if(ferror(fs)!=0)fprintf(stderr,"Errorinreadingfile%s.\n",argv[fct]);if(ferror(fa)!=0)fprintf(stderr,"Errorinwritingfile%s.\n",argv[1]);fclose(fs);files++;printf("File%sappended.\n",argv[fct]);}}printf("Done.%dfilesappended.\n",files);fclose(fa);return0;}{while(ch1!=EOF&&ch1!='\n')/*skippedafterEOFreached*/ {putchar(ch1);ch1=getc(f1);}if(ch1!=EOF){putchar('\n');ch1=getc(f1);}while(ch2!=EOF&&ch2!='\n')/*skippedafterEOFreached*/ {putchar(ch2);ch2=getc(f2);}if(ch2!=EOF){putchar('\n');ch2=getc(f2);}}if(fclose(f1)!=0)printf("Couldnotclosefile%s\n",argv[1]);if(fclose(f2)!=0)printf("Couldnotclosefile%s\n",argv[2]);return0;}/*ProgrammingExercise13-7b*//*codeassumesthatend-of-lineimmediatelyprecedesend-of-file*/#include<stdio.h>#include<stdlib.h>intmain(intargc,char*argv[]){intch1,ch2;FILE*f1;}putchar('\n');ch2=getc(f2);}}if(fclose(f1)!=0)printf("Couldnotclosefile%s\n",argv[1]);if(fclose(f2)!=0)printf("Couldnotclosefile%s\n",argv[2]);return0;}PE 13--‐9/*ProgrammingExercise13-9*//*tosimplifyaccounting,storesonenumberandwordperline*/#include<stdio.h>#include<stdlib.h>#defineMAX47intmain(void){FILE*fp;charwords[MAX];intwordct=0;if((fp=fopen("wordy","a+"))==NULL){fprintf(stderr,"Can'topen\"words\"file.\n");exit(EXIT_FAILURE);}//determinecurrentnumberoflinesrewind(fp);while(fgets(words,MAX,fp)!=NULL)wordct++;rewind(fp);puts("Enterwordstoaddtothe file;pressthe#");puts("keyatthebeginningofalinetoterminate.");while((fscanf(stdin,"%40s ",words)==1)&&(words[0]!='#'))fprintf(fp,"%3d:%s\n",++wordct,words);puts("Filecontents:");}return0;}PE 13--‐12: Sample Input Text009000000000589985200000000000000090000000589985520000000000000000000000581985452000000000000090000000589985045200000000009000000000589985004520000000000000000000589185000452000000000000000000589985000045200000555555555555589985555555555555888888888888589985888888888888999909999999999999999939999999888888888888589985888888888888555555555555589985555555555555000000000000589985000000000000000000000000589985000066000000000022000000589985005600650000000033000000589985056111165000000044000000589985005600650000000055000000589985000066000000000000000000589985000000000000000000000000589985000000000000PE 13--‐12/*ProgrammingExercise13-12*/#include<stdio.h>}voidinit(chararr[][COLS],charch){intr,c;for(r=0;r<ROWS;r++)for(c=0;c<COLS;c++)arr[r][c]=ch;}voidMakePic(intdata[][COLS],charpic[][COLS],introws) {introw,col;for(row=0;row<rows;row++)for(col=0;col<COLS;col++)pic[row][col]=trans[data[row][col]];}Chapter 14 Programming ExercisesPE 14--‐1/*pe14-1.c*/#include<stdio.h>#include<string.h>#include<ctype.h>structmonth{charname[10];charabbrev[4];intdays;intmonumb;};conststructmonthmonths[12]={{"January","Jan",31,1},{"February","Feb",28,2},{"March","Mar",31,3},{"April","Apr",30,4},{"May","May",31,5},{"June","Jun",30,6},{"July","Jul",31,7},{"August","Aug",31,8},}char*s_gets(char*st,intn);#defineMAXTITL40#defineMAXAUTL40#defineMAXBKS100/*maximumnumberofbooks*/structbook{/*setupbooktem plate*/chartitle[MAXTITL];charauthor[MAXAUTL];floatvalue;};voidsortt(structbook*pb[],intn);voidsortv(structbook*pb[],intn);intmain(void){structbooklibrary[MAXBKS];/*arrayofbookstructures*/structbook*pbk[MAXB KS];/*pointersforsorting*/intcount=0;intindex;printf("Pleaseenterthebooktitle.\n");printf("Press[enter]atthestartofalinetostop.\n");while(count<MAXBKS&&s_gets(library[count].title,MAXTITL)!=NULL&&library[count].title[0]!='\0'){printf("Nowentertheauthor.\n");s_gets(library[count].author,MAXAUTL);printf("Nowenterthevalue.\n");scanf("%f",&library[count].value);pbk[count]=&library[count];count++;while(getchar()!='\n')continue;/*clearinputline*/if(count<MAXBKS)printf("Enterthenexttitle.\n");}printf("Hereisthelistofyourbooks:\n");for(index=0;index<count;index++)printf("%sby%s:$%.2f\n",library[index].title,library[index].author,library[index].value);}}}char*s_gets(char*st,intn){char*ret_val;char*find;ret_val=fgets(st,n,stdin);if(ret_val){find=strchr(st,'\n');//lookfornewlineif(find)//iftheaddressisnotNULL,*find='\0';//placeanullcharacterthereelsewhile(getchar()!='\n')continue;//disposeofrestofline}returnret_val;}PE 14--‐5/*pe14-5.c*/#include<stdio.h>#include<string.h>#defineLEN14#defineCSIZE4#defineSCORES3structname{charfirst[LEN];charlast[LEN];};structstudent{structnameperson;floatscores[SCORES];floatmean;};voidget_scores(structstudentar[],intlim);voidfind_means(structstude ntar[],intlim);voidshow_class(conststructstudentar[],intlim);voidsho w_ave(conststructstudentar[],intlim);intmain(void) {structstudentclass[CSIZE]={{"Flip","Snide"},}}voidshow_class(conststructstudentar[],intlim) {inti,j;charwholename[2*LEN];for(i=0;i<lim;i++){strcpy(wholename,ar[i].person.first);strcat(wholename,"");strcat( wholename,ar[i]st);printf("%27s:",wholename);for(j=0;j<SCORES;j++)printf("%6.1f",ar[i].scores[j]);printf("Average=%5.2f\n",ar[i].mean);}}voidshow_ave(conststructstudentar[],intlim) {inti,j;floattotal;printf("\n%27s:","QUIZA VERAGES");for(j=0;j<SCORES;j++){for(total=0,i=0;i<lim;i++)total+=ar[i].scores[j];printf("%6.2f",total/lim);}for(total=0,i=0;i<lim;i++)total+=ar[i].mean;printf("All=%5.2f\n",total/lim);}PE 14--‐7/*pe14-7.c*/#include<stdio.h>#include<stdlib.h>#include<string.h>{if(count==0)puts("Currentcontentsofbook.dat:");printf("%sby%s:$%.2f\n",library[count].book.title,librar y[count].book.author,library[count].book.value);printf("Doyouwishtochangeordeletethisentry?<y/n>");if(getlet("yn")=='y'){printf("Enterctochange,dtodeleteentry:");if(getlet("cd")=='d'){library[count].delete_me=true;deleted++;puts("Entrymarkedfordeletion.");}elseupdate(&library[count]);}count++;}fclose(pbooks);}filecount=count-deleted;if(count==MAXBKS){fputs("Thebook.datfileisfull.",stderr);exit(EXIT_FAILURE);}puts("Pleaseaddnewbooktitles.");puts("Press[enter]atthestartofalinetostop.");open=0;while(filecount<MAXBKS){if(filecount<count){while(library[open].delete_me==false)open++;}}{intstatus=CONTINUE;if(s_gets(pb->book.title,MAXTITL)==NULL||pb->book.title[0]=='\0')status=DONE;else{printf("Nowentertheauthor:");s_gets(pb->book.author,MAXAUTL);printf("Nowenterthevalue:");while(scanf("%f",&pb->book.value)!=1){puts("Pleaseusenumericinput");scanf("%*s");}while(getchar()!='\n')continue;/*clearinputline*/pb->delete_me=false;}returnstatus;}voidupdate(structpack*item){structbookcopy;charc;copy=item->book;puts("Entertheletterthatindicatesyourchoice:");puts("t)modifytitlea)modifya uthor");puts("v)modifyvalues)quit,savingchanges");puts("q)quit,ignorechanges");while((c=getlet("tavsq"))!='s'&&c!='q'){switch(c){case't':puts("Enternewtitle:");s_gets(copy.title,MAXTITL);break; case'a':puts("Enternewauthor:");s_gets(copy.author,MAXAUTL);break;case'v:puts("Enternewvalue:");while(scanf("%f",©.value)!=1)#defineEMPTY0#defineTAKEN1#defineCONTINUE1#defineDONE0 structplanestats{intseat_id;intstatus;charlast[LEN];charfirst[LEN];};intgetmenu(void);intgetlet(constchar*);intopenings(conststructplanestats[],int);voidshow_empties(conststructpl anestats[],int);voidlist_assign(structplanestats*[],int);voidassign_seat(str uctplanestats[],int);voiddelete_seat(structplanestats[],int);voidshow_seats(conststructplanestats[],int);voidsort(structplanestats*[],int);voidmakeli st(conststructplanestats[],char*,int);char*s_gets(char*st,intn);。
1. 输入两个正整数m和n,求其最大公约数和最小公倍数。
辗除法——辗转相除法,又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。
它是已知最古老的算法,其可追溯至3000年前。
它首次出现于欧几里德的《几何原本》(第VII卷,命题i和ii)中,而在中国则可以追溯至东汉出现的《九章算术》。
它并不需要把二数作质因子分解。
证明:设两数为a、b(a>b),求它们最大公约数(a、b)的步骤如下:用a除以b,余数为r 1。
若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得r2 .若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能整除为止。
其最后一个非零余数即为(a,b)。
例如,和7890 的最大公因子是6, 这可由下列步骤看出:a b a mod b7890 51067890 5106 27845106 2784 23222784 2322 4622322 462 12462 12 612 6 0#include<stdio.h>#include<conio.h>main(){int a,b,num1,num2,temp;/*temp主要用来转换大小*/printf("please input two numbers:\n");scanf("%d,%d",num1,&num2);if(num1<num2) /*如果num2比num1大,则执行下面循环体,为调整num1要比num2大*/{temp=num1;num1=num2;num2=temp;}a=num1;b=num2;/*a比b大*/while(b!=0) /*只要b不等于0,就一直执行下面的循环体,直至整除完为止。
*/{temp=a%b;a=b;b=temp;/*以上3句调整了a,b大小,使其整除为止*/}printf("公约数:%d\n",a);printf("公倍数:%d\n",num1*num2/a); /*由公式知*/getch();}评析:关键是判断两数的大小,先排好位置,再大除小,一直除尽即可。
第六章习题答案1现有D触发器组成的三个n位寄存器,需要连接起来传送数据。
当控制信号S a有效时,执行(Ra)→Rc的操作;当控制信号S b有效时,执行(R b)→R C的操作。
试写出连接电路的逻辑表达式,并画出逻辑电路图。
解:Rc = Ra·Sa·LDC + Rb·Sb·LDC2 现有D触发器组成的四个8位寄存器,要求它们之间实现数据传送,试设计连接电路。
解:BUS3 ALU的输出端一般带有一个移位器,其功能为:①ALU输出正常传送;②ALU输出左移1位(ALU i+1)传送;③ALU输出右移一位(ALU i-1)传送。
试设计移位器的逻辑电路。
解:4 一个系统有A,B两条总线,为了接收来自任何一条总线上的数据并驱动任何一条总线,需要一个总线缓冲寄存器。
请用D触发器和三态门设计一个总线缓冲寄存器。
解:5 试构造能完成下列程序操作的ASM图:(a)if X = N, then … 。
(b)if X≠N, then …, else …。
解:(c)for X from A to B, step C, do… 。
解:(d)while X = Y, do …。
解:(e)if X > N OR X < O, then …, else …。
解:6 有一个数字比较系统,它能对两个8位二进制进行比较。
其操作过程如下:先将两个8位二进制数存入寄存器A和B, 然后进行比较,最后将大数移入寄存器A中。
要求:⑴画出此系统方框图,并构造ASM流程图。
⑵设计一个计数器型控制器。
解:(1)②状态转移真值表PS NSB A B( D ) A( D )转移条件 C0 00 11 0 1 10 11 01 11 00 1无条件转移无条件转移无条件转移( A > B ) = 1A >B = 0根据 NS = PS·C 公式,激励方程表达式为:B ( D ) = BA + BA + BA·( A > B )A ( D ) = BA + BA + BA·( A >B ) = A + BA ·( A > B )③电路图④ 控制信号表达式:7. 根据题6的条件,设计一个MUX 型控制器。
数组存储字母并打印#include<stdio.h>#define SIZE 26int main(void){char alphabets[SIZE];char m='a';for(int i=0;i<SIZE;i++){alphabets[i]=m;m++;}for(int i=0;i<SIZE;i++){printf("%c ",alphabets[i]);}getchar();return 0;}打印字符#include<stdio.h>int main(void){for(int i=1;i<=5;i++){for(int j=0;j<i;j++)printf("$");printf("\n");}getchar();return 0; 打印字母金字塔每行倒序#include<stdio.h>int main(void){char ch;for(int i=0;i<6;i++){for(ch='F';ch>=('F'-i);ch--)printf("%c",ch);printf("\n");}getchar();return 0;}打印字母金字塔按行顺序#include<stdio.h>int main(void){char ch='A';for(int i=1;i<=6;i++){for(int j=1;j<=i;j++,ch++)printf("%c",ch);printf("\n");}getchar();return 0;}字母金字塔#include<stdio.h>int main(void){char ch,origin;int ROWS,rows;printf("please input an alphabet:");scanf("%c",&ch);ROWS=ch-64;for(int rows=0;rows<ROWS;rows++){for(int j=0;j<ROWS-rows;j++)printf("");for(origin='A';origin<'A'+rows;origin++)printf("%c",origin);for(origin='A'+rows;origin>='A';origin--)printf("%c",origin);printf("\n");}getchar();getchar();return 0;}给区间进行数的计算#include<stdio.h>int main(void){int low,high;printf("please input the low limitation:");scanf("%d",&low);printf("please input the high limitation:");for(low;low<=high;low++)printf("%d %d %d\n",low,low*low,low*low*low);getchar();getchar();return 0;}字符串倒序输出#include<stdio.h>#include<string.h>int main(void){char st[40];printf("please input the string:");scanf("%s",&st);for(int i=0;i<strlen(st)/2;i++){char t=st[i];st[i]=st[strlen(st)-i-1];st[strlen(st)-i-1]=t;}for(int i=0;i<strlen(st);i++)printf("%c",st[i]);getchar();getchar();return 0;}浮点数连续计算#include<stdio.h>int main(void){double a,b;printf("please enter a pair of numbers:");while(scanf("%lf %lf",&a,&b)==2){res=(a-b)/(a*b);printf("(%.3g-%.3g)/(%.3g*%.3g)=%.3g\n",a,b,a,b,res);printf("please enter next pair of numbers:");}return 0;}有函数返回值的#include<stdio.h>double calculate(double m,double n);int main(void){double a,b;printf("please enter two numbers:");while(scanf("%lf %lf",&a,&b)==2){double res=calculate(a,b);printf("(%.3g-%.3g)/(%.3g*%.3g)=%.3g\n",a,b,a,b,res);printf("please enter next pair of numbers:");}getchar();getchar();return 0;}double calculate(double m,double n){return (m-n)/(m*n);;} 计算两个整数之间所有数的平方和#include<stdio.h>double calculate(double m,double n);int main(void){int lower,higher;int cusum=0;printf("Enter lower and upper integer limits:");scanf("%d %d",&lower,&higher);while(lower<higher){int sum=0;for(int i=lower;i<=higher;i++){cusum=i*i;Sum+=+cusum;}printf("The sum of the aquares from %d to %dis %d\n",lower,higher,sum);printf("Enter next lower and upper integer limits:");scanf("%d %d",&lower,&higher);}printf("Done");getchar();getchar();return 0;}倒序打印数组方法一:#include<stdio.h>#include<string.h>{int st[8];printf("please input the numbers:");for(int i=0;i<8;i++){scanf("%d",&st[i]);}for(int i=0;i<4;i++){int t=st[i];st[i]=st[8-i-1];st[8-i-1]=t;}for(int i=0;i<8;i++)printf("%d",st[i]);getchar();getchar();return 0;}方法二:#include<stdio.h>int main (void){int i,num[8];printf("Please input number :\n");for(i=0;i<=7;i++) //循环输入八个整数scanf("%d",&num[i]);printf("The number in reverse order is : "); for(i=7;i>=0;i--) //逆序循环输出printf("%d ",num[i]);printf("\n");getchar();return 0;} 计算数列和#include<stdio.h>#include<string.h>int main(void){double cusum,sum=0.0;float m=1.0;int n;printf("please enter the times:");scanf("%d",&n);if(n%2==0){for(float i=1.0;i<=n;i++){cusum=1/i;sum=sum+cusum;}}else{for(float i=1.0;i<=n;i++){cusum=1/i;sum=sum+m*cusum;m=m*(-1.0);}}printf("%lf",sum);getchar();getchar();return 0;}数组打印2的次幂do while语句#include<string.h>int main(void){int st[8];int interger=2;int integer=1;int i=0;do{st[i]=interger;interger=interger*2;i++;} while (i<8);for(int i=0;i<8;i++)printf("%d ",st[i]);getchar();getchar();return 0;}具备对应关系的两个数组#include<stdio.h>#include<string.h>int main(void){double go[8];double went[8];printf("please enter the numbers:");for(int i=0;i<8;i++)scanf("%lf",&go[i]);went[0]=go[0];for(int i=1;i<8;i++)for(int i=0;i<8;i++)printf("%-10.6lf ",go[i]);printf("\n");for(int i=0;i<8;i++)printf("%-10.6lf ",went[i]);getchar();getchar();return 0;}字符串倒序输出#include<stdio.h>#include<string.h>int main(void){char string[255];int i,j;i=0;printf("Please enter one line:\n");while(scanf("%c",&string[i])&&string[i]!='\n'&&i<255) i++;for(j=strlen(string)-1;j>=0;j--)printf("%c",string[j]);printf("\n");return 0;}投资比较#include<stdio.h># define daphne 0.10# define deirdre 0.05int main(void){double Daphne=100;double Deirdre=100;double cuDaphne;double i=0.0;for(i;Daphne>=Deirdre;i++){Daphne=Daphne+100*daphne;Deirdre+=Deirdre*deirdre;}printf("%lf %lf %lf",i,Daphne,Deirdre);getchar();getchar();return 0;}多少年取完账户的钱#include<stdio.h># define lilv 0.08int main(void){double origin=100;double i=1.0;for( i;origin>0;i++)origin=origin+origin*lilv-10;printf("%lf",i-1);getchar();return 0;}什么时候朋友超过一定数目#include<stdio.h>int main(void){int base=5;int week=1;while (base<150){base=(base-week)*2;printf("%d %d\n",week,base);week++;}getchar();return 0;}。