每种语言都有自己的一套符号,符号是组成程序的基本单位,它是由若干字符组成的具有一定意义的最小词法单元,如标识符、关键字、运算符、分隔符、常量、注释符等。这里组成符号的字符必须是这种语言字符集中的合法字符,在C++中规定了一个自己的字符集。
类型是对系统中的实体的一种抽象,它描述了某种实体的基础特性,包括值的表示、存储空间的大小以及对该值的操作。C++的数据类型包括基本数据类型和构造数据类型两类。构造数据类型又称复合数据类型,它是一种更高级的抽象。当变量被定义为某种类型时会受到系统对该类型的特别保护,确保其值不受非法操作。
C++语言的基本数据类型有如下四种:
在32位系统中(现在普遍是int32位),signed的范围是(-216到215-1),即是-2147483648~+2147483647,unsigned类型 的int 范围:0~4294967295 即( 0到232-1);
char为一个字节,所以char的unsigned的范围是0到255,signed类型的话就是-128到127127(-28->27-1);
- float (%f):float占用的内存为4个字节, 和int占用的空间是一样的, 只是保存的方式不同, float采用的是指数的方式保存数字,精确度会有问题,储存长度大概与int相差无几。(稍微比int大)
- double (%lf):double占用的8个字节的内存, 所以表示范围会比float更大, double保存数值的方式也是为指数保存,所以也有精确度的问题,表示的长度大概是10的32次方。
为了满足各种情况的需要,除了void型外,上述的三种类型前面还可以加上修饰符改变原来的含义。
signed 表示有符号
unsigned 表示无符号
long 表示长型
short 表示短型
上述4种修饰符都适用于整型和字符型,只有long 还适用于双精度浮点型。
数据类型规定的存储空间都是按字节算的,其占用的字节数会根据机器字长的不同会有所变化。也就是说,变量所占空间的大小与被定义的类型和机器有关。
大象喝水
【问题描述】
一只大象口渴了,要喝20升水才能解渴,但现在只有一个深h厘米,底面半径为r厘米的小圆桶(h和r都是整数)。问大象至少要喝多少桶水才会解渴。
【输入】输入有一行,包行两个整数,以一个空格分开,分别表示小圆桶的深h和底面半径r,单位都是厘米。
【输出】输出一行,包含一个整数,表示大象至少要喝水的桶数。
【样例输入】23 11
【样例输出】3
【提示】如果一个圆桶的深为h厘米,底面半径为r厘米,那么它最多能装Pi * r * r * h立方厘米的水。(设Pi=3.14159, 1升 = 1000毫, 1毫升 = 1 立方厘米)
【代码解答】
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
double r = 0,v = 0,pi = 3.14159,t = 0,h = 0;
scanf("%lf %lf",&h,&r);
v = pi*r*r*h;
v = v/1000;
t = ceil(20/v);
printf("%.0lf",t);
return 0;
}
计算距离
【问题描述】
太阳光到达地球表面需要8分18秒,光在真空中的传播速度是宇宙中最快的速度,为300000000m/s.请问太阳到地球有多远。
【样例输出】149400000000
【代码解答】
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double a = 8,b = 18,c = 0,d = 300000000,e = 0;
a = a*60;
c = a+b;
e = c*d;
printf("%.0lf",e);
return 0;
}
平均分
【问题描述】
已知某班有男同学x位,女同学y位,x位男生的平均分为87,y位女生的平均分是85分,问全体同学的平均分是多少分。
【输入】两个整数,分别为x和y的值。
【输出】一位数可能是整数也可能是浮点数。
【样例输入】1 1
【样例输出】86
【代码解答】
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double x = 0,y = 0,c = 0;
scanf("%lf %lf",&x,&y);
c = (x * 87 + y * 85) / (x + y);
printf("%.1lf",c);
return 0;
}
长方体的体积
【问题描述】
输入一个长方体的长,宽和高,输出长方体的体积。(提示:长方体的体积 = 长 * 宽 * 高)
【输入】一行,包含三个正整数,分别是长方体的长,宽和高;
【输出】一行,包含一个整数,表示长方体的体积;
【样例输入1】
2 3 4
【样例输出1】
24
【代码解答】
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double a = 0,b = 0,h = 0,c = 0;
scanf("%lf %lf %lf",&a,&b,&h);
c = a*b*h;
printf("%.0lf",c);
return 0;
}
等差数列末项
【问题描述】
描述给出一个等差数列的前两项a1,a2,求第n项是多少。
【输入】一行,包含三个整数a1,a2,n。-100 <= a1,a2 <= 100,0 < n <= 1000。
【输出】一个整数,即第n项的值。
【样例输入】1 4 100
【样例输出】298
【代码解答】
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double a1 = 0,a2 = 0,an = 0,d = 0,n = 0;
scanf("%lf %lf %lf",&a1,&a2,&n);
d=a2-a1;
an=a1+(n-1)*d;
printf("%.0lf",an);
return 0;
}
计算多项式的值
【问题描述】
对于多项式f(x) = ax³ + bx² + cx + d 和给定的a, b, c, d, x, 计算f(x)的值。
【输入】输入仅一行,包含5个实数,分别是 x, 及参数a、b、 c、d的值,数与数之间以一个空格分开。
【输出】输出一个实数,即f(x)的值,保留到小数点后7位。
【样例输入】2.31 1.2 2 2 3
【样例输出】33.0838692
【代码解答】
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double a = 0,b = 0,c = 0,d = 0,x = 0,j = 0;
scanf("%lf %lf %lf %lf %lf",&x,&a,&b,&c,&d);
j = a*x*x*x+b*x*x+c*x+d;
printf("%.7lf",j);
return 0;
}
铜钱的面积
【问题描述】
古代的铜钱是圆形的,其中中间是一个正方形的镂空,已知圆形的半径和正方形的边长,求铜钱的面积(圆周率取值3.14)。
【输入】输入圆形的半径和正方形的边长
【输出】输出铜钱面积,结果保留两位小数
【样例输入】10 5
【样例输出】289.00
【代码解答】
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double c = 0,f = 0,s = 0,pi = 3.14;
scanf("%lf %lf",&f,&c);
s = pi * (f * f) - c * c;
printf("%.2lf",s);
return 0;
}
球体的体积
【问题描述】
给定你一个球体的半径r,请你计算球体的体积。
计算球体的公式为 v=(4/3)∗pi∗r∗r∗r。pi取 3.14159。
注意:有些语言中 (4/3)无法得到 1.3333……,建议在公式中使用 (4/3.0)。
【输入格式】输入一个整数r
【输出格式】其中v为球体的体积,结果保留三位小数。
【数据范围】1≤r≤2000
【样例输入】3
【样例输出】113.097
【代码解答】
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
double r = 0,v = 0,pi = 3.14159;
scanf("%lf",&r);
v = 4/3.0*pi*r*r*r;
printf("%.3lf",v);
return 0;
}