文档章节

《C++ Primer Plus第6版中文版》编程练习

 高粱软件
发布于 2016/05/12 18:27
字数 3064
阅读 15
收藏 0

/* ConsoleApplication160511.cpp

内容:《C++ Primer Plus第6版中文版》编程练习 创建者:徐宏亮 创建时间:2016年5月11日

win10专业版x64,vs2013 */

#include "stdafx.h" #include "iostream" #include "climits" //use limits.h for older systems

using namespace std; string name = "unknow";

//第1章 //第2章 开始学习C++ //1.显示您的姓名和地址。 void nameAndAddr(){ cout << "XXX"<< endl; cout << "中国新疆乌鲁木齐XX区XX路XX小区X栋X单元XXX室" << endl; }

//2.要求用户输入一个long为单位的距离,转换为码(1 long = 220 码)。
void long2ma(){
	cout << "请输入一个以long为单位的距离" << endl;
	long num;
	cin >> num;//num = cin.get();
	cout << "转换成以“码”为单位,结果为" << num * 220 << "码" << endl;
}
/*3.它使用3个用户定义的函数(包括main()),并生成下面的输出:
	Three blind mice
	Three blind mice
	See how they run
	See how they run
其中一个函数要调用两次,该函数生成前两行;另一个函数也被调用两次,并生成其余的输出。
*/
void showMessage1(){
	cout << "Three blind mice"<<endl;
}
void showMessage2(){
	cout << "See how they run" << endl;
}
//4.让用户输入其年龄,然后显示该年龄包含多少个月(如“Enter your age: 29”)
void showAgeOfMonth(){
	cout << "输入你的年龄:" << endl;
	int age;
	cin >> age;
	cout << "你已经度过了" << age * 12 << "个月" << endl;
}

/* 5.编写一个程序,其中的main()调用一个用户定义的函数(以摄氏温度值为参数,并返回相应的华氏温度值)。
	该程序按下面的格式要求用户输入摄氏温度值,并显示结果:
	Please enter a Celsius value:20
	20 degrees Celsius is 68 degrees Fahrenheit.
	转换公式:华氏温度=1.8×摄氏温度 + 32.0
	*/
void Celsius2Fahrenheit(){
	cout << "请输入一个摄氏温度值:";
	int Celsius;
	cin >> Celsius;
	cout << Celsius << "摄氏度等于" << Celsius*1.8 + 32.0 << "华氏度" << endl;
}

/* 6.编写一个程序,其main()调用一个用户定义的函数(以光年值为参数,并返回对应天文单位的值)。
该程序按下面的格式要求用户输入光年值,并显示结果:
Enter the number of light years:4.2
4.2 light years = 265608 astronomical units
天文单位是从地球到太阳的平均距离(约150000000公里或93000000英里),光年是光一年走的距离(约10万亿公里或6万亿英里)(除太阳外,最近的恒星大约离地球4.2光年)。
请使用double类型(参见程序清单2.4)转换公式为:
1光年=63240天文单位
*/
void lightYears2astronomicalUnits(){
	cout << "输入一个光年数:";
	double lightYears;
	cin >> lightYears;
	cout << lightYears << "光年 = " << lightYears * 63240 << "天文单位" << endl;
}

/* 7.编写一个程序,要求用户输入小时数和分钟数。在main()函数中,将这两个值传递给一个void函数,
后者以下面这样的格式显示这两个值:
Enter the number of hours: 9
Enter the number of minutes: 28
Time: 9:28
*/
void time() {
	int hours, minutes;
	cout << "输入小时数:";
	cin >> hours;
	cout << "输入分钟数:";
	cin >> minutes;
	cout << "输入时间" << hours << ":" << minutes << endl;
}

// 第3章 /* 复习题 1.为什么C++有多种整型:适应不同需求 2.声明与下述描述相符的变量 a.short 整数,值为80 short a = 80; b.unsigned int 整数,值为42110 unsigned int b = 42110; c.值为3000000000的整数 long long c = 3000000000; 3.C++提供了什么措施来防止超出整型的范围? 整型溢出 4.33L与33之间有什么区别? float与int 5.下面两条C++语句是否等价? char grade = 65; char grade = 'A'; 65 == 'A' 6.如何使用C++来找出编程88表示的字符?指出至少两种方法。 7.将long值赋给float变量会导致舍入误差,将long赋值给double变量呢?将long long 赋值给double变量呢? 8.下列C++表达式的结果分别是多少? a. 89+2 74 b. 63/4 4 c. 3/46 0 d. 6.03/4 4.5 e. 15%4 3

		cout << "8 * 9 + 2 = " << 8 * 9 + 2 << endl;
		cout << "6 * 3 / 4 = " << 6 * 3 / 4 << endl;
		cout << "3 / 4 * 6 = " << 3 / 4 * 6 << endl;
		cout << "6.0 * 3 / 4 = " << 6.0 * 3 / 4 << endl;
		cout << "15 % 4	= " << 15 % 4 << endl;
	9.假设x1和x2是两个double变量,您要将他们作为整数相加,再将结果赋给一个整型变量。
		请编写一条完成这项任务的C++语句。如果要将它们作为double值相加并转换为int呢?
		double x1 = 3.5, x2 = 4.6;
		int x3 = int(x1) + int(x2);
		cout << "x1 + x2 = " << x3 << endl;				7
		cout << "x1 + x2 = " << x1 + x2 << endl;		8.1
	10.下面每条语句声明的变量都是声明类型?
	a. auto cars = 15;
	b. auto iou = 150.37f
	c. auto level = 'B'
	d. auto crat = U'/U00002155'		字符常量中字符过多(编写时提示)
	e. auto fract = 8.25f/2.5
*/

//查看各个整型的长度限制
void limits(){
	int n_int = INT_MAX;		//初始化,将int最大值给n_int
	short n_short = SHRT_MAX;	//符号常量定义在climits flie
	long n_long = LONG_MAX;
	long long n_llong = LLONG_MAX;

	// sizeof operator yields size of type or of variable
	// sizeof 运算符大小或类型可变
	cout << "int 是" << sizeof (int) << "bytes." << endl;
	cout << "short 是" << sizeof n_short << "bytes." << endl;
	cout << "long 是" << sizeof n_long << "bytes." << endl;
	cout << "long long 是" << sizeof n_llong << "bytes." << endl;
	cout << endl;

	cout << "最大值:" << endl;
	cout << "int: " << n_int << endl;
	cout << "short: " << n_short << endl;
	cout << "long: " << n_long << endl;
	cout << "long long: " << n_llong << endl << endl;
	
	cout << "int最小值 = " << INT_MIN << endl;
	cout << "Bits per byte = " << CHAR_BIT << endl;
	
}

/* 编程练习
1.要求用户使用一个整数指出自己的身高(单位为英寸),然后将身高转换为英尺和英寸。该程序使用下划线字符来指示输入位置。
另外,使用一个const符号常量来表示转换因子。
*/
void cm2MFootInch(){
	const int x = 100;
	const int y = 12;
	cout << "请输入你的身高(单位为厘米):";
	int high;
	cin >> high;
	cout << "转换为" << high / x << "米" << high % x << "厘米。";
	double high2 = high / 2.54;
	cout << "转换为" << high2 / y << "英尺" << (int)high2 % y << "英寸。";
}

/* 2.编写一个小程序,要求以几英尺几英寸的方式输入其身高,并以磅为单位输入其体重。(使用3个变量来存储这些信息。)
	该程序报告其BMI(Body Mass Index,体重指数)。为了计算BMI,该程序以英寸的方式指出用户身高(1英尺为12英寸),
	并将以英寸为单位的身高转换为以米为单位的身高(1英寸=0.0254米)。然后,将以磅为单位的体重转换为以千克为单位的体重(1千克=2.2磅)。
	最后,计算相应的BMI——体重(千克)除以身高(米)的平方。用符号常量表示各种转换因子。
	体质指数(BMI)=体重(kg)÷身高^2(m)
	EX:70kg÷(1.75×1.75)=22.86
*/
void high2BMI(){
	//英尺英寸英镑,为毛这些不翻译成天朝常用单位,对天朝初学者不友好啊。

	/*const double m = 0.0254;
	const double bang = 2.2;*/
	//int foot, inch, weight;
	//cout << "请输入身高,英尺:";
	//cin >> foot;
	//cout << "英寸:";
	//cin >> inch;
	//cout << "请输入体重(磅):";
	//cin >> weight;
	//double high = (foot * 12 + inch)*0.0254;
	//double BMI = (weight / 2.2) / (high*high);
	

	////瞧瞧天朝常用单位多简洁明了。
	//double high, weight;
	//cout << "请输入身高(单位:m)";	//这里输入一点几米,还要输入小数点,有时候会忘。
	//cin >> high;
	//cout << "请输入体重(单位:kg)";
	//cin >> weight;
	//double BMI = weight / (high*high);


	//瞧瞧天朝常用单位多简洁明了。
	double high, weight;
	cout << "请输入身高(单位:cm)";
	cin >> high;
	cout << "请输入体重(单位:kg)";
	cin >> weight;
	double BMI = weight/ (high*high*0.01*0.01);	//单位cm化成m


	cout << "BMI值为:" << BMI << endl;
}
/* 3.编写一个程序,要求用户以度、分、秒的方式输入一个纬度,然后以度为单位显示该纬度。1度为60分,1分等于60秒,
	请以符号常量的方式表示这些值。对于每个输入值,应使用一个独立的变量存储它。下面是该程序运行时的情况:
	Enter a latitude in degrees, minutes, and seconds:
	Firts, enter the degerees:37
	Next, enter the minutes of arc:51
	Finally, enter the seconds of arc:19
	37 degrees, 51 minutes, 19 seconds = 37.8553 degrees
*/
void degreesMinSec2Degrees(){
	const int size = 60;
	double degrees, minutes, seconds;
	cout << "请以度、分、秒的方式输入一个纬度:"<<endl;
	cout << "首先,输入度:"<<endl;
	cin >> degrees;
	cout << "接下来,输入分:" << endl;
	cin >> minutes;
	cout << "最后,输入秒:" << endl;
	cin >> seconds;
	cout << degrees << "度" << minutes << "分" << seconds << "秒 = " << degrees + minutes / size + seconds / size / size <<" 度 "<< endl;
}

/* 4.编写一个程序,要求用户以整数方式输入秒数(使用long 或long long 变量存储),然后以天、小时、分钟和秒的方式显示这段时间。
	使用符号常量来表示每天有多少小时、每小时有多少分钟、以及每分钟有多少秒。该程序的输出应与下面类似:
	Enter the number of seconds:31600000
	31600000 seconds = 365 days, 17 hours, 46 minutes, 40seconds
*/
void seconds2DaysHoursMinutesSeconds(){
	const int hoursOfDay = 24;
	const int minutesOfHour = 60;
	const int secondsOfMinute = 60;
	
	int days, hours, minutes, seconds;
	long long totalSeconds, tempSeconds;
	
	cout << "输入一个秒数:";
	cin >> totalSeconds;

	//算法比较多,只写出最容易想到的,数据结构与算法的水平就在这了。
	days = totalSeconds / (24 * 60 * 60);
	tempSeconds = totalSeconds - days * 24 * 60 * 60;
	hours = tempSeconds / (60 * 60);
	tempSeconds = tempSeconds - hours * 60 * 60;
	minutes = tempSeconds / 60;
	seconds = tempSeconds%60;

	cout << totalSeconds << "秒 = " << days << "天" << hours << "小时" << minutes << "分钟" << seconds << "秒" << endl;
}
/* 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.
*/
void perOfpopulation(){
	long long worldPopulation, chinaPopulation;
	long double perOfPopulation;
	cout << "输入全球人口总数:";
	cin >> worldPopulation;
	cout << "输入天朝人口总数:";
	cin >> chinaPopulation;
	perOfPopulation = (long double)chinaPopulation *100/ (long double)worldPopulation;
	cout << "天朝人口占全球人口的" << perOfPopulation << "%" << endl;
	
}
/* 6.编写一个程序,要求用户输入驱车里程(英里)和使用汽油量(加仑),然后指出汽车耗油量为一加仑的里程
	如果愿意,也可以让程序要求用户以公里为单位输入距离,并以升为单位输入汽油量,然后指出欧洲风格的结果——
	即每100公里的耗油量(升)。
	*/
void oilConsumption(){
	double mileage, oilConsumption;
	cout << "请输入驱车里程(公里):";
	cin >> mileage;
	cout << "请输入使用汽油量:";
	cin >> oilConsumption;
	cout << "每100公里耗油" << oilConsumption / mileage * 100 << "升" << endl;
}
/* 7.编写一个程序,要求用户按欧洲风格输入汽车的耗油量(每100公里消耗的汽油量(升)),然后将其转换为美国风格的耗油量——
每加仑多少英里。注意,除了使用不同的单位计量外,美国方法(距离/燃料)与欧洲方法(燃料/距离)相反。100公里等于62.14英里,
1加仑等于3.875升。因此,19mpg大约合12.4l/100km,127mpg大约合8.7l/100km。62.14/(x/3.875)
*/
void oilConsumption2(){
	const double mileage = 62.14;
	const double gallon = 3.875;
	double oilConsumption;
	cout << "请输入汽车耗油量(每100公里消耗的汽油量(升)):";
	cin >> oilConsumption;
	cout << "换成美国风格的耗油量,每加仑" << mileage/(oilConsumption/gallon) << "英里"<<endl;
}

int _tmain(int argc, _TCHAR* argv[]) { using namespace std; //第1章 //daan:略略略。

//第2章
//nameAndAddr();			//1.显示您的姓名和地址。
//long2ma();				//2.要求用户输入一个long为单位的距离,转换为码(1 long = 220 码)。
//showMessage1();			//3.调用两次一个函数,输出两行信息,调用另一个函数,输出其余两行。
//showMessage1();
//showMessage2();
//showMessage2();
//showAgeOfMonth();		//4.用户输入其年龄,显示该年龄包含多少个月(如“Enter your age: 29”)
//Celsius2Fahrenheit();	//5.用户输入摄氏度,显示该摄氏度等于多少华氏度。
//lightYears2astronomicalUnits();//6.用户输入光年数,显示该光年数等于多少天文单位。
//time();				//7.用户输入小时数和分钟数,显示小时与分钟(如 9:28)
//limits();				//查看各个整型的长度限制

//第3章
//cm2MFootInch();			//1.用户输入身高(单位:cm),显示m+cm,英尺+英寸。
//high2BMI();				//2.用户输入身高(单位:cm),显示BMI指数。
//degreesMinSec2Degrees();	//3.用户输入纬度的度分秒,以度为单位显示该纬度。
//seconds2DaysHoursMinutesSeconds();	//4.用户输入秒数,以天数小时数分钟数秒数的形式显示该秒数。
//perOfpopulation();			//5.用户输入全球人口,天朝人口,算出天朝人口占全球人口的比例。
//oilConsumption();			//6.用户输入驱车里程(公里),使用汽油量(升)。算出每100公里的耗油量(升)
oilConsumption2();		//7.用户输入欧洲风格,每100公里耗油量(升),算出美国风格,每加仑多少英里。


cin.get();
cin.get();
return 0;

}

© 著作权归作者所有

粉丝 0
博文 1
码字总数 3064
作品 0
乌鲁木齐
程序员
私信 提问
学习c++很迷茫,恳求大佬们能够指点一下

学习c++半年了,各式各样的视频教程。最终买了一本 c++ primer plus 第六版中文版 每天研读,有英语障碍但也一直在坚持。最近做题发现,书上基础的复习题都没有问题,编程练习也能够勉强写。...

疯狂的十一
2017/05/20
225
7
web前端、c++、项目管理、java、php书籍10-40/本,转让

本人因转行,又因经济困难,所以转让一下书籍。按标价出售,人在北京。联系qq:602505 可在东城区、中关村、回龙观等地当面交易。 书新旧程度全部在9成新以上。 点击书名查看书籍介绍和原价。...

匿名网友
2011/02/24
1K
17
C++各阶段学习书目

1. 入门 Lippman的《Essential C++》 顾名思义,这本书是很短小精悍的。通过这本书,可以对C++的最常用和重要的特性有全面的了解,并对C++的全貌有一个概念。虽然这远远不够,但就是这样的书...

晨曦之光
2012/04/24
430
1
如果有人让你推荐编程技术书,请叫他看这个列表

计算机系统与网络 《图灵的秘密:他的生平、思想及论文解读》 《计算机系统概论》 《深入理解Linux内核》 《深入Linux内核架构》 《TCP/IP详解 卷1:协议》 《Linux系统编程(第2版)》 《Lin...

retref
2017/02/28
8.6K
47
转让c++ Linux好书

转让几本书书,家里书太多了,占位置: 1、 c++ primer 第四版中文版 http://book.douban.com/subject/1767741/ 2、c++ primer 第五版英文版 http://book.douban.com/subject/24089577/ 3、计...

zhoutianzuo
2014/03/14
510
4

没有更多内容

加载失败,请刷新页面

加载更多

DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
57分钟前
3
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
今天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
今天
6
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
今天
5
0
Python机器学习之数据探索可视化库yellowbrick

背景介绍 从学sklearn时,除了算法的坎要过,还得学习matplotlib可视化,对我的实践应用而言,可视化更重要一些,然而matplotlib的易用性和美观性确实不敢恭维。陆续使用过plotly、seaborn,...

yeayee
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部