如果没有存储在内存中的数据,我们基本上不能用计算机做任何有趣的事情,我们用来存储数据的“位置”称为对象。我们需要使用一个名字来访问一个对象。这个命名后的对象称为变量,它有特定的类型(如int或string),类型决定我们将什么赋值给对象,如123可以赋给int型, “hello world!\n” 可以赋给string型。类型也决定了可以使用的操作,如对int型可以进行乘法运算,对多个string类型可以使用<=进行比较。我们赋给变量的数据项称为值。一个用来定义变量的语句称为定义,一个定义通常提供一个初始值:
string name="Annnnmarie";
int number_of_steps=39;
我们不能将类型错误的值赋给变量:
string name2=39; //error: 39 isn't a string
int number_of_steps="Annnnmarie"; //error "Annnnmarie" is not a int
上面错误定义编译器会报错。
简单例子:输入两个数相加
#include <cstdio>
int main() {
int a, b;
scanf("%d%d", &a, &b);
printf("%d\n", a+b);
return 0;
}
声明两个整型变量a,b
scanf主要a和b前面的&符号,&是取地址运算符,返回变量所在内存的地址,&a就表示变量a的内存地址,在c语言中的说法就是指向a的指针。如果漏写了&会怎样?可以试试,程序编译通过,运行会崩溃,原因是int a未初始化,一般值是0,scanf输入整数到地址0的变量,而地址0是操作系统用的内存,不允许访问,访问程序就崩溃了。
求圆柱体面积
输入底面半径r和高h,输出圆柱体表面积,保留3位小数,格式样例:
输入:3.5 9
输出:Area=274.889
#include <cstdio>
#include <cmath>
int main() {
const double pi=acos(-1.0);
double r,h,s1,s2,s;
scanf("%lf%lf", &r, &h);
s1 = pi*r*r;
s2 = 2*pi*r*h;
s=s1*2.0+s2;
printf("Area=%.3lf\n", s);
return 0;
}
pi的值涉及到了三角函数、反三角函数,这里用的反余弦函数,大家可以脑补一下余弦函数图,x,y倒过来就是反余弦。
const表示常量,表示这个值是不可改变的,所以不能再次赋值给它。
主要赋值语句虽然用的等号,但和等号意义不同,而程序中表示相等需要使用==,注意这个差别。