C++ Primer Plus章节编程练习第三章

1

题目

  编写一个小程序,要求用户使用一个整数指出自己的身高(单位为英寸),然后将身高转换为英尺和英寸。该程序使用下划线字符来指示输入位置。另外,使用个const符号常量来表示转换因子。

题解

#include<iostream>
int main(){
    using namespace std;
    const int k_conversion_flag=12;
    int input;
    cout<<"Please enter your height in inches:______\b\b\b\b\b\b";
    cin>>input;
    cout<<"Your height: "<<input/k_conversion_flag
        <<" feet, "<<input%k_conversion_flag<<" inches.\n";
    return 0;
}

2

题目

  编写一个小程序,要求以几英尺几英寸的方式输入其身高,并以磅为单位输入其体重。(使用3个变量来存储这些信息。)该程序报告其BMI ( Body Mass Index,体重指数)。为了计算BMI,该程序以英寸的方式指出用户的身高(1英尺为12英寸),并将以英寸为单位的身高转换为以米为单位的身高(1英寸=0.0254米)。然后,将以磅为单位的体重转换为以千克为单位的体重(1千克=2.2磅)。最后,计算相应的BMI---体重-(千克)除以身高(米)的平方。用符号常量表示各种转换因子。

题解

#include<iostream>
int main(){
    using namespace std;
    //定义单位转换的常量
    const int kfeet2inches=12;
    const double kinches2meter=0.0254;
    const double kkg2pounds=2.2;
    int feet_num,inches_num,pounds_num;
    //获取输入
    double height,weight;
    cout<<"Please enter your height (exp:10 feet, 2 inches): ";
    scanf("%d feet, %d inches",&feet_num,&inches_num);
    cout<<"Please enter your weight (exp:110 pounds): ";
    scanf("%d pounds",&pounds_num);
    //计算身高和体重
    height=(feet_num*kfeet2inches+inches_num)*kinches2meter;
    weight=pounds_num/kkg2pounds;
    cout<<"You BMI = "<<height/(weight*weight)<<endl;
    return 0;
}

//测试样例
// Please enter your height (exp:10 feet, 2 inches): 15 feet, 5 inches
// Please enter your weight (exp:110 pounds): 150 pounds
// You BMI = 0.00101081

3

题目

  编写一个程序,要求用户以度、分、秒的方式输入一个纬度,然后以度为单位显示该纬度。1度为60分,1分等于60秒,请以符号常量的方式表示这些值。对于每个输入值,应使用一个独立的变量存储它。
  下面是该程序运行时的情况:

Enter a latitude in degrees, minutes, and seconds:
First, enter the degree: 37
Next, enter the minutes of arc: 51
Finally enter the seconds of arc: 19
37 degrees, 51 minutes, 19 seconds = 37.8553 degrees

题解

#include<iostream>
int main(){
    using namespace std;
    const int kflag=60;
    int degree,minutes,seconds;
    double output;
    cout<<"Enter a latitude in degree, minutes, and seconds:\n";    //获取数据
    cout<<"First, enter the degree: ";cin>>degree;
    cout<<"Next, enter the minutes of arc: ";cin>>minutes;
    cout<<"Finally, enter the seconds of arc: ";cin>>seconds;
    output=1.0*degree+1.0*minutes/kflag+1.0*seconds/(kflag*kflag);  //转化为角度并输出
    cout<<degree<<" degrees, "<<minutes<<" minutes, "<<seconds<<" seconds = "<<output<<" degrees\n";
    return 0;
}

//题目样例
// Enter a latitude in degree, minutes, and seconds:
// First, enter the degree: 37
// Next, enter the minutes of arc: 51
// Finally, enter the seconds of arc: 19
// 37 degrees, 51 minutes, 19 seconds = 37.8553 degrees

4

题目

  编写一个程序,要求用户以整数方式输入秒数(使用long或long long 变量存储),然后以天、小时、分钟和秒的方式显示这段时间。使用符号常量来表示每天有多少小时、每小时有多少分钟以及每分钟有多少秒。该程序的输出应与下面类似:

Enter the number of seconds: 31600000
31600000 seconds = 365 days,17 hours, 46 minutes, 40 seconds

题解

#include<iostream>
int main(){
    using namespace std;
    const int khour=24;
    const int kminutes=60;
    const int kseconds=60;
    int day,hour,minute,second;
    long long input,temp;
    cout<<"Enter the number of seconds: ";
    cin>>input;
    temp=input;
    second=input%kseconds;  input/=kseconds;
    minute=input%kminutes;  input/=kminutes;
    hour=input%khour;
    day=input/=khour;
    cout<<temp<<" seconds = "<<day<<" days, "<<hour<<" hours, "
        <<minute<<" minutes, "<<second<<" seconds\n";
    return 0;
}

//题目样例
// Enter the number of seconds: 31600000
// 31600000 seconds = 365 days, 17 hours, 46 minutes, 40 seconds

5

题目

  编写一个程序,要求用户输入全球当前的人口和美国当前的人口( 或其他国家的人口)。将这些信息存储在long long变量中,并让程序显示美国(或其他国家)的人口占全球人口的百分比。该程序的输出应与下面类似:

Enter the world's population: 6898758899
Enter the population of the US: 310783781
The population of the US is 4.50492% of the world population.

题解

#include<iostream>
int main(){
    using namespace std;
    typedef long long ll;
    ll word_population,us_population;
    cout<<"Enter the world's population: ";
    cin>>word_population;
    cout<<"Enter the population of the US: ";
    cin>>us_population;
    cout<<"The population of the US is "<<100*(1.0*us_population/word_population)
        <<"\% of the world population.\n";
    return 0;
}

//题目样例
// Enter the world's population: 6898758899
// Enter the population of the US: 310783781
// The population of the US is 4.50492% of the world population.

6

题目

  编写一个程序,要求用户输入驱车里程(英里)和使用汽油量(加仑),然后指出汽车耗油量为--加仑的里程。如果愿意,也可以让程序要求用户以公里为单位输入距离,并以拜为单位输入汽油量,然后指出欧洲风格的结果---即每100公里的耗油量(升)。

题解

#include<iostream>
int main(){
    using namespace std;
    int miles,gallons;
    cout<<"Please enter vehicle mileage in miles: ";
    cin>>miles;
    cout<<"Please enter the vehicle fuel consumption: ";
    cin>>gallons;
    cout<<"Fuel consumption per mile of your car is "<<gallons*1.0/miles<<endl;
    return 0;
}

7

题目

  编写一个程序,要求用户按欧洲风格输入汽车的耗油量(每100公里消耗的汽油量(升)),然后将其转换为美国风格的耗油量---每加仑多少英里。注意,除了使用不同的单位计量外,美国方法(距离/燃料)与欧洲方法(燃料/距离)相反。100公里等于62.14英里,1加仑等于3.875升。因此,19mpg大约合12.4/100km,l27mpg 大约合8.71/100km。

题解

#include<iostream>
int main(){
    using namespace std;
    //定义常量
    const double gallon2l=3.875;
    const double hundrandkm2miles=62.14;
    double lprekm,mpg;
    cout<<"Please enter fuel consumption of your car in L/100km: ";
    cin>>lprekm;
    //表示方法的转化
    mpg=hundrandkm2miles/(lprekm/gallon2l);     
    cout<<"Fuel consumption of your car in US-style is: "<<mpg<<"mpg\n";
    return 0;
}

当珍惜每一片时光~