2.1.1变量定义
举个计算例子
#include <stdio.h>
int main(){
int price= 0;
printf("请输入金额(元):");
scanf("%d",&price);//scanf是输入,&price是输入的整数
int change= 100-price;
printf("找您%d元\n",change);
return 0;
}
int price =0;
这一行定义了一个变量。变量的名字是price,类型是int,初始值是0
变量是一个保存数据的地方,当我们需要在程序中保存数据时,比如输入价格,就需要一个变量保存它。用了一个变量保存了数据,它才能参加到后面的计算中,比如计算找零。
变量的定义
定义变量的一般形式
类型名称 变量名称
例:int price;
2.1.2赋值和初始化
perice =0是一个式子,这里的”=“是一个赋值运算符,表示讲右边的值赋给左边的变量。
赋值
a=b是将b的值赋给a,关系是静态的,而动作是静态的。在数学中a=b是等价的,而在程序设计中,两者的意思完全相反。
初始化
当赋值发生在定义变量时,就是变量的初始化。虽然C语言并没有要求所有变量都在定义的地方做初始化,但是所有的变量在第一次被使用之前被赋值一次。
例:
#include <stdio.h>
int main(){
int i;
int j;
j= i+10;
printf("%d",j)
}//输出内容很奇怪
//但是如果给i赋值 int i= 0;则输出内容为10.
变量初始化
<类型名称><变量名称>=<初始值>
int price = 0;
组合变量定义的时候,也可以在这个定义中单独给单个变量赋初值,例
int price =0;,amount = 100;
错误:int price,amount =10,age;
变量类型
int price =0;
这一行定义了一个变量,变量的名字为price,类型为int,初始值是0.
C是一种有类型的语言,所有的变量在使用之前必须定义或者声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行中也不能改变变量的类型。
有效的变量名:包含字母、数字和下划线。
例1:name1是正确的变量名而1name不是,变量名不能以数字开头。
例2:name_1是有效变量名而name#1不是,含有#。
第二个变量
int change = 100-price; //C99写法,ANSI C只能在代码开头定义变量。
定义了第二个 变量change并且做了计算。
读整数
scanf("%d",&price);//scanf代表输入,printf代表输出
要求scanf这个函数读入下一个整数,读到的结果赋值给price.
小心price前面的&.
2.1.3常量Vs变量,不变的量是常量
固定不变的数是常数,直接写在程序里
例:
const int AMOUNT = 100;//c99写法
const是一个修饰符,加在int前面用来给变量加上一个const的属性,表示这个变量的值一旦初始化,就不能发生改变。
例一:
int main(){
int amount = 100;
int price =0;
printf("请输入购买金额:");
scanf("%d",&price);
printf("请输入票面");
scanf("%d",&amont)
int change = amount - price;
printf("找您%元",change);
return 0;
}
例二:scanf读入多个变量
int a;
int b;
printf("请输入两个整数:");
printf("%d %d",&a,&b);
printf("%d+%d=&d\n",a,b,a+b);
2.1.4浮点数
带小数点的数、浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式。
另一种方式叫做定点数,不过在C语言中人们用浮点数这个词表达所有带小数点的数。
例1:
printf("请分别输入英尺和英寸");
int foot;
int inch;
scanf("%d %d",&food,&inch);
printf("身高是%f米。\n",((foot + inch/12)*0.3048));
return 0;
//输出结果不对,因为int为整数所以inch/12还是为整数(丢掉0.1后面的小数点,保留整数)。
例2:
printf("%d\n",14/3);
return 0;
//结果为4(四舍五入)
10和10.0是完全不同的数.
10.0是浮点数。
例3:
printf("%f\n",10.0/3);
return 0;
例4:
double foot;
scanf("%lf",&foot);
printf("您的xx是%lf",12/3);
//两种形式结果一样 int foot; scanf("%f",&foot); printf("您的XX是%f",12.0/3);
double是双精度浮点数,float是单精度浮点数。
整数
int
printf("%d",...);
scanf("%d,...");
带小数点的数
double
printf("%f",...);
scanf("%fl",...);
2.2.1表达式
定义:一个表达式是一系列运算符和算子的组合,用来计算一个值。
例:count =count+1;
value=(min/2)*lastValue;
运算符是(operator):指进行运算的动作,比如加法运算符“+”,减法运算符“-”。
算子(operand):是指参与运算的值,这个值可能是常数还可能是变量,还可能是一个方法的返回值。
计算时间差
int hour1,minute1;
int hour2,minute2;
printf("请输入开始时间(格式为:小时 分钟):");
scanf("%d %d",&hour1,&minute1);
printf("请输入结束时间(格式为:小时 分钟):");
scanf("%d %d",&hour2,&minute2);
int t1 = hour1*60+minute1;
int t2 = hour2*60+minute2;
int t = t2-t1;
printf("时间差是%d小时%d分",t/60,t%60);
retutn 0;
2.2.2运算符优先级
单目运算是指(-1)负数。
赋值运算符(自右向左结合)
赋值也是运算,也有结果
a = 6的结果是a被赋予的值,也就是6
a=b=6----a=(b=6);
嵌入式赋值
int a = 6; int b; int c = 1+(b=a);
不利于阅读‘容易产生错误。
计算复利
#include <stdio.h>
int main(){
double a =0;
printf("请输入你的存款:");
scanf("%lf",&a);
double b = a*(1+0.033)*(1+0.033)*(1+0.033);
printf("您的本息为:%f",b);
return 0;
}
2.2.3交换两个变量
int main(void){
int a = 5;
int b = 6;
int t;
t=a;
a=b;
b=t;
printf("a=%d,b=%d",a,b);
}
2.2.4复合赋值和递增递减
五个算数运算符,+ - * / %,可以和赋值运算符”=“结合起来,形成复合赋值运算符:”+=“,”-=“,”/=“,和”%=“。
例:
total += 5;
total = total + 5;
total +=(sum+100)/2;
total = toal+(sum+100)/2;
total*=(100+sum);
total = toal*(100+sum);
注意两个运算符中间不要有空格
递增递减运算符
”++“,”--“是两个很特殊的运算符,它们是单目运算符,这个算子必须是变量。这两个运算符分别叫做递增和递减运算符,他们的作用就是给这个变量+1或者+1.
count++;
count +=1;
count = count + 1;
前缀和后缀
++和--可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式。
a++的值是a加1以前的值,而++a的值是加了1以后的值,无论哪一个,a自己的值都加了1.
这两个运算符有历史来源,可以单独使用但是不要进行组合表达式。
++i++__>?'