先看一段代码
printf("23+43=%d\n", 23+43);
printf("100-23=%d\n", 100-23);
代码分别将23+43和100-23的结果输出,但是如果想在程序运行时输入23,则需要
1.有地方放输入的数字;
2.有办法输入数字;
3.输入的数字可以参与运算。
下面一段代码
#include <stdio.h>
int main()
{
int price=0;
printf("请输入金额(元):");
scanf("%d", &price);
int change=100-price;
printf("找您%d元。\n", change);
return 0;
}
输出结果为
请输入金额(元):24(键盘输入24后按回车)
找您76元。
分析上段代码
int price=0
这一行定义了一个变量,名字是price,类型是int,初始值是0。
变量,是指在程序运行时其值可以改变的量,变量的功能就是存储数据。
变量定义的一般形式:<类型名称><变量名称>
变量的名字是一种“标识符”,只能由字母、数字和下划线组成且数字不能位于第一位,C语言标识符(有些地方也叫保留字)不可做标识符。
int price=0;
这段代码定义了int类型的变量price的同时给了它初始值0。
在定义变量的同时进行赋值就是初始化。C语言中赋值和初始化差异不大,其他语言不一定。但是所有变量第一次使用(出现在赋值运算符右边)前应该赋值一次。
price=0是一个式子,“=”不是数学中的“等于”,是赋值运算符,将右边的值赋给左边的变量。有运算符的式子就叫表达式(expression)
这两个式子意思相反。
变量初始化的基本形式如下:
C是一种有类型的语言,所有变量使用前必须定义说声明,且必须具有确定的数据类型。数据类型表示变量中可以存放什么样的数据,且只能存放指定类型数据,程序运行过程中不能改变变量类型。
scanf("%d",&price);
如果要读入多个变量值,则有
scanf(“%d %d”, &a, &b);
将输入的两个数分别赋给a和b
注意!
如果是下面的代码
scanf("%d, %d", &a, &b);
想要输入值给a和b则与刚刚不同,必须带上逗号,原因在于scanf函数的形参列表有固定的形式。
int change=100-price;
这段代码中100是固定不变的数,是常数。直接写在程序里称作直接量。
更好的方式是定义一个常量:
const int AMOUNT =100;
这样的好处在于,一是使程序更有可读性,不然代码里全是数字(magic number)会很难懂,二是如果想修改这些数字直接修改定义的常量就好了。
const是一个修饰符,加在int前给变量加了一个const属性,表示变量的值一旦初始化就不能修改。如果把常量放在“=”左边,编译器会报错。
首先给出一个换算公式
#include <stdio.h>
int main()
{
printf("请分别输入身高的英尺和英寸,"
"如输入\"5 7\"表示5英尺7英寸:");
int foot;
int inch;
scanf("%d %d", &foot, &inch);
printf("身高是%lf米。\n",
((foot+inch/12)*0.3048));
return 0;
}
运行结果
请分别输入身高的英尺和英寸,如输入"5 7"表示5英尺7英寸:5 7
身高是1.524000米。
结果明显是错误的。那么原因是什么呢?
C语言中,两个整数只能是整数。如果两个整数运算的结果有小数,则会将结果的小数部分直接丢掉。
如
但是
这是因为10是整数,10.0是浮点数。这样就引出了“浮点数”这个概念。
浮点数是带小数点的数值,指小数点是浮动的,是计算机内部表达非整数的一种方式,另一种是定点数,在C中不会遇到。人们借用浮点数这个词来表达所有带小数点的数。
如果想让上面的程序得出正确结果,可以对其进行修改。
一个表达式就是一些运算符和算子的组合,用来计算一个值
运算符是指进行运算的动作,如“+”,“-”,算子是指参与运算的值,可能是常数也可能是变量,还可能是一个方法的返回值。
举了一个计算时间差的例子,给出小时和分钟要求计算时间差。
要考虑到分钟和小时是六十进制存在借位的情况,将时间t1和t2全部转化成分钟进行计算,再将结果转换成小时+分钟的形式。
赋值也是运算,本身也有结果。
上图可以看出结合关系一般是自左向右, 单目±和赋值=是自右向左
如果a=5,b=6,那么怎么交换a和b的值呢?
如
a=b;
b=a;
输出
a=6, b=6
因为a=b将b的值赋给a,a此时等于b等于6,然后b=a又将a的值赋给b,则结果自然b=6,没有完成交换。
正确的做法是应该找第三个变量t,先将a的值存入t中,然后将b的值赋给a,最后将t中存放的a原来的值赋给b即可完成交换。
t=a;
a=b;
b=t;
输出
a=6, b=6
成功交换!
5个算术运算符±/%可以和赋值运算符=结合形成复合赋值运算符:“+=”、“-=”、“=”、“/=”、“%=”。
如
“++”和“–”是单目运算符,可以放在变量前也可以放在变量后。
注意!要区分count本身的值和count++这个表达式的值!