1.变量
1) 变量定义的一般形式:类型名称int+变量名称price+;
eg:int price;
int amount;
int price,amount;(同时定义两个变量)
2)变量的名字:标识符
①基本原则:由字母,数字,下划线组成
②不能以数字开头
③不能使用c语言的关键字(保留字)
不用背,编译之后有错误提示,改一改就可以了
2.赋值运算符 =
赋值:把=右边的值交给=左边的变量(标识符)
int price =0
定义变量时的赋值叫做初始化,=右侧为初始值
赋值是动作,a=b 即 “令”a这个变量的值和b这个变量的值相等(把b的值给a)
不是非得初始化(在定义变量时赋值)但是必须在该变量b出现在=右边之前(就是在把b的值交给另一个变量a 之前,对b进行一次赋值,如下)(如果在用b之前,没有对b赋值,那就b在内存的位置附近有什么就输出什么578486464)
同时对多个变量初始化,只能一个一个变量地赋值,做不到一下子给所有变量赋同一个值
eg:int price=0,amount=100
含有运算符的式子叫表达式
3.变量类型
所有变量使用之前必须定义或声明它的数据类型(如int price=123)
数据类型(变量类型)表示在变量中可以存放什么类型的数据,变量中只能存放指定类型数据,程序运行过程中不能改变变量类型。
4.第2个变量
C99,可以在程序的任意地方定义变量c,只需要保证 定义这步 出现在变量c使用(c=123或者b=c)之前
ANSI C,所有变量的定义必须在程序最前面
5.读整数scanf
printf是用来输出的函数
scanf是用来输入的函数(f,format是格式化的意思)
scanf(" ") “”中的内容叫做字符串
在scanf里面,要让它读取变量,必须在变量前面加上&
eg:scanf(“%d”,&price)
出现在“”中的字符串都是要读取的东西,%d表示读取整数
scanf(“%d %d”,&a,&b)
printf(“%d %d\n”,a,b)
如果字符串是%d %d正常的直接输入1 2即可输出1 2
如果是%d,%d,需要输入1,2
如果是%d %d (后面加了个空格)需要输入1 2+一个空格(随便一个1代替空格,1不会被输出 )(输入回车有没用必须要有空格否则报错)
如果是%d %d\n(\n输出为回车,换行的效果)
需要输入(同空格)1 2
a
如果是price%d %d,需要输入price 1 2
出现在scanf字符串里的东西是他一定要让你输入的东西,而不是他要给你看的东西
6.常量VS变量
常量:不变的量。
整型int=1
实型常量:实数,浮点数float,double
float b=2.5
(字符型常量char c=‘c’)
直接量(literal),就是程序中直接使用的数据值
eg: 12//数字,1.2//小数,'hh'//字符串,true//布尔值false//另一个布尔值
/javascript/gi //正则表达式直接量(用作
模式匹配), null//空,{x:1,y:2]//对象,[1,2,3,4,5,]//数组
定义常量(c99):
定义常量好处:理解100是什么(莫名其妙的数字被称为magic number);修改程序时候容易找到
const(不变的)为修饰符,const int中的const属性为一旦int后变量被初始化(变量使用前肯定要初始化的,c99和ANSI C规定位置不同而已,见第4条第2个变量),就不能修改了,简而言之,const int AMOUNT=100就是定义常量同时初始化的意思(一般加修饰const的变量所有字母大写)
如果你试图对常量做修改,把它放在赋值运算符=的左边,就会被编译器发现指出为一个错误。(即不可再次赋值)
eg:AMOUNT=123(任意非初始值数字)即报错
7.让用户输入变量AMOUNT的值,而不是使用固定的初始值,怎么办?
去掉const,AMOUNT改为小写,变量正常初始化没问题,下面加上printf(“请输入票面”);
scanf(“%d”,&amount);表示让用户输入部分,程序如下:
8.一个scanf如何读取多个变量?
“”中有几个%d就可以读几个变量,程序如下:
第一个printf是输出提示用户的话
scanf用来读取用户输入值(只要在终端没有输入两个可以计算的数,按无数回车也没反应,输入之后按回车,程序继续运行)
第二个printf是输出计算数值。
如果没有输入规定数据类型int数字,而是输入字符串,就会内存附近有什么给什么,出现乱码七糟的数字计算结果
上面是客户输入并得到计算结果,下面对比程序员自己输入程序并得到计算结果
9.浮点数(小数点可以浮动的数,是计算机内部表达非整数,包含分数和无理数的一种方式;另一种表达方式叫做定点数。人们借用浮点数这个词来表达所有带小数点的数。)
整数就是不带小数点的数,整数的运算结果只能是整数,运算过程中出现的小数部分会被清零
当把浮点数和整数放到一起运算时,c会将整数转换为浮点数,然后进行浮点数的运算。
想要得到正确结果的改法一:10改为10.0
%d改为%f
改法二:把变量的数据类型从int改为double
输入或输出整数,即在scanf和printf里面都要%d
输入浮点数,scanf里用%lf
输出浮点数,printf里用%f
人们用double来表示浮点数类型(双精度浮点数的第一个单词),float表示单精度浮点数。
计算题:
10/3.0*3=3.333333*3=10.0
10/3*3.0=3*3.0=9.0在第一步计算过程中,小数点后面部分已经被抹掉