1.为什么C++有多种整型?
在C++程序编写过程中我们常常用到int
,那么其实int
的数据类型就是我们今天要了解的整型。事实上整型并不只有int
一种,还有short
(短整型)、long
(长整型)和long long
(长长整型)。
它们既然有着不同的“名字”,那肯定是有一定区别的。这里用一张表格来展示它们的区别之处
数据类型 | 占用空间 | 取值范围 |
---|---|---|
short(短整型) | 2字节 | -2¹⁵~2¹⁵-1 |
int(整型) | 4字节 | -2³¹~2³¹-1 |
long(长整型) | Windows为4字节,Linux为4字节(32位),8字节(64位) | -2³¹~2³¹-1 |
long long(长长整型) | 8字节 | -2⁶³~2⁶³-1 |
从表格中可以看出不同种类的整型的取值范围是明显不同的,那当我们想要用一个变量去存储一个数时,当然要根据数的大小用相应的整型去定义变量了
2.编写一个程序,要求用户以整数方式输入秒数(使用long
或long long
)然后以天、小时、分钟和秒的方式来显示这段时间。
这道题本质上就是一道简单的单位换算的问题。我们要注意的是,如果输入的是一个很大的秒数,那么即使转化成分钟依旧较大,所以这里建议保存分钟、小时、天的变量都用long long
定义
#include <iostream>
using namespace std;
int main()
{
long long t,a,b,c,d;
cout <<"请以整数的形式输入一个不小于1的秒数:"<<endl;
cin >> t;
cout <<"您输入的秒数为:"<< t <<"second(s)"<<endl;
a=t/60/60/24;
cout <<"这段时间是:"<< a <<"day(s)"<<endl;
b=t/60/60;
cout <<"这段时间是:"<< b <<"hour(s)"<<endl;
c=t/60;
cout <<"这段时间是:"<< c <<"minute(s)"<<endl;
d=t;
cout <<"这段时间是:"<< d <<"second(s)"<<endl;
system("pause");
return 0;
}
3.编写一个程序输入全球当前的人口和中国当前的人口,将这些信息储存在long long
变量中,并显示中国的人口占全球人口的百分比。
#include <iostream>
using namespace std;
int main()
{
long long wp,cp;
cout << "请输入世界人口:" << endl;
cin >>wp;
cout << "请输入中国人口:" << endl;
cin >>cp;
double percent = double(cp)/double(wp) * 100;
cout <<"中国人口占世界人口比重为:"<< percent <<"%"<<endl;
system("pause");
return 0;
}
程序代码如上,我们需要格外注意的一行是:
double percent = double(cp)/double(wp) * 100;
这短短的一行中包含着三个double,但一个一个分开看就会很明了。在这段代码中我们的变量percent是用来存储人口比值的,而这个比值为整数的概率是很小的,所以第一个double用来定义双精度浮点型变量percent.
在C或C++中,两个整数相除得到的还是整数,那放到这题,两个人口值一定是整数,但人口占比除出来一定是个0~1之间的数。显然,单纯的用人口数相除,那么C或C++就会默认这个比值为零,但这与事实相悖。
这里,提出一个概念——强制转换类型,通常通过数据类型(被转换数据) 来实现,例如:
int a;//定义一个整型变量a
double(a);//将整型变量a强制转换成浮点型变量
说到这里,上面的第二、三个double应该就不难理解了
4.编写一个程序,要求以几英尺几英寸输入身高,并以磅为单位输入体重,(使用三个变量来存储信息)为了计算BMI,将英寸转化为米,(1英尺为12英寸1英寸为0.0254米),将磅转化为千克. (1千克=2.2磅)最后计算BMI体重除以身高的平方。
代码如下,这题和前面时间换算的题非常相似,在这里不做细致讲解
#include<iostream>
using namespace std;
int main()
{
int FootToInch=12;//1英尺=12英寸
double InchToMeter=0.0254;//1英寸=0.0254米
double PoundToKg=1/2.2;//1千克=2.2磅
/*
FootToInch、InchToMeter、PoundToKg等均为普通变量,并不具有任何特殊含义
*/
int foot,inch,pound;
double meter,kg,BMI;
cout <<"请以几英尺几英寸的方式输入您的身高\n";
cout <<"请输入英尺的值:";
cin >>foot;
cout <<"请输入英寸的值:";
cin >>inch;
cout <<"请输入您的体重(磅):";
cin >>pound;
meter=foot*FootToInch*InchToMeter;
kg=pound*PoundToKg;
BMI=kg/meter/meter;
cout <<"您的身高为"<< meter <<"米,您的体重为"<< kg <<"千克,您的BMI为"<< BMI <<endl;
system("pause");
return 0;
}