#include <stdio.h>
int main()
{
int price=0;
printf("请输入金额(元):");
scanf("%d",&price);
int change=100-price;
printf("找您%d元\n",change);
return 0;
}
1变量
变量:保存数据的地方
int price=0
,定义一个变量。名称:price;类型:int;初始值0
1.1定义
-
格式
-
<类型名称><变量名称>
int price
- C语言中,变量名称为“标识符”
- 标识符构造基本规则:只能由字母、数字和下划线组成(数字不可出现在第一个位置上;保留字/关键字不可以用作标识符)
1.2赋值和初始化
赋值
price=0
表达式子中“=”:赋值运算符(右边的值赋给左边的变量)
a=b表示将b的值赋给a
变量初始化
C语言中,在定义变量时发生赋值则称为初始化;
-
格式
-
<类型名称><变量名称>=<初始值>
int price=0
- 组合变量定义时,也可以给定义中单个变量单独赋值
int price=0,amount=100;
(必须一个一个赋值) - 如果没有初始化,也应在变量第一次被使用之前赋值一次
输出出现乱码:变量里原始的数据
1.3常量与变量
1.输入
scanf("%d",&price);
:利用scanf函数读入下一个整数并赋值给price。
- 若输入非整数,则price=0(初始化结果)。
2.常量
int change=100-price;
- 固定不变的数是常数
- 100:直接写在程序里,称作直接量(literal)
-
改进:
-
const int AMOUNT=100;
-
int change=AMOUNT-price;
const
(不变的):修饰符,初始化后不能再被赋值- 尝试被赋值,编译器将报错
-
继续改进:
-
int amount=100;
printf("请输入票面:");
scanf("%d",&amount);
int change=amount-price;
- 将常量变为变量,从而改变常量的值
scanf("%d %d",&amount,&price)
:可输入多个值
1.4浮点数
带小数点的数值
int foot;
int inch;
printf("请输入身高(英尺和英寸):");
scanf("%d %d", &foot,&inch);
printf("身高是%f米。\n",((foot+inch/12.0)*0.3048));
return 0;
(foot+inch/12.0)*0.3048
- 12.0与12在C中是完全不同的数
- 浮点数与整数一起运算时,整数被转换成浮点数,进行浮点数运算
-
整数
-
int
printf("%d",...)
scanf("%d",...)
带小数点的数
-
double
printf("%f",...)
scanf("%lf",...)
2表达式
一系列运算符结合算子组合,计算一个值。
a=b+5
- 运算符:指进行运算的动作
- 算子:指参与运算的值(常数/变量/返回值)
2.1算术运算符
例:
计算时间差,输入两个时间,输出相差几分几秒
//同一天时间差计算:
int main()
{
int hour1, minute1;
int hour2, minute2;
printf("请输入时间1:几小时几分钟");
scanf("%d %d", &hour1,&minute1);
printf("请输入时间2:几小时几分钟");
scanf("%d %d", &hour2, &minute2);
int minute1_1 = hour1 * 60 + minute1;
int minute2_1 = hour2 * 60 + minute2;
int t = minute2_1 - minute1_1;
printf("相差%d小时%d分钟",t/60,t%60);
}
2.2运算优先级
例:
输入两个整数,输出它们的平均值
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("平均值为%f\n", (a + b) / 2.0);
return 0;
}
- 一般自左向右:单目±和赋值=自右向左
- 单目运算符:只有一个算子(+a;-b)
- 赋值也是运算:a=6(自右向左结合)
a=b=6 =>a=(b=6)
例:
计算三年本金复利
int main()
{
int x;
scanf("%d", &x);
//double y = x * (1 + 3.3%)*(1 + 3.3%)*(1 + 3.3%); %意为取余,关键字
double y = x * (1 + 0.033)*(1 + 0.033)*(1 + 0.033);
printf("%f\n", y);
return 0;
}
2.3变量交换
例:
已知 a=5,b=6,令b=5,a=6
int main()
{
int a = 5, b = 6, x; //引入中间变量x
x = a;
a = b;
b = x;
printf("a=%d,b=%d\n", a, b);
return 0;
}
2.4复合赋值
-
格式
- “+=” “-=” “*=” “/=” “%=”
- 5个算术运算符与赋值运算符结合起来形成复合赋值运算符
- 两运算符之间不能有空格
- 先将赋值右边算完得到结果,再与左边变量结合
-
.
-
total=total+5;
total += 5;
2.5递增递减
-
格式
- “++” “–”
- 单目运算符,算子必须为变量,作用为变量+1/-1
-
.
-
count += 1;
-
count=count+1;
count++
- 前缀后缀
a=1
a++=1
//a++为a+1之前的值1
a=2
//副作用a=a+1为2
++a=3
//++a为a+1之后的值3
a=3
//副作用a=a+1为3