本次学习了C语言中的变量问题,这里穿插了两个例子的分析,分析了变量使用的一些问题,包括变量名、变量定义赋值、变量输入等。
例1:找零
代码如下:
#include<stdio.h>
int main()
{
int price = 0,change = 0;
printf(“请输入金额\n”);
scanf(“%d”,&price);
change =100-price;
printf(“找您%d元\n”,change);
return 0;
}
1. 变量
① 变量名:
变量名:变量的名字是一种标识符,用于识别不同变量的名字。
变量名的规则:只能由字母、数字、下划线组成;数字不能出现在第一个位置,C语言的关键字不能用做标识符(int、if、switch等)。
② 赋值与初始化
int price = 0;
这一行,定义了一个变量,名称为price,类型是int,初始值为0。
赋值:price=0是一个式子,表示将0赋值给变量price。
初始化:当赋值发生在定义变量的时候,就叫做初始化,所有的变量在第一次被使用之前都应该被赋值一次。如果没有初始化,该变量在内存中存储,就会读入该内存中原有的内容。
变量初始化:<类型名称><变量名称>=<初始值>
③ 变量类型
C语言是一种有类型的语言,所有的变量在使用之前必须定义或声明,所有的变量必须有确定的数据类型。数据类型表示在该变量中存入什么样的数据,变量中只能存放制定类型的数据,且运行过程中不能改变变量类型。
④ 变量定义
传统的ANSI C语言中,变量的定义只能在代码开始进行定义,一旦开始进行计算输入输出,就不能再定义变量了。
2. 变量输入
scanf(“%d”,&price);
① 读整数
要求scanf这个函数读入一个整数,读到的结果赋值给变量price。
② 如果输入不是整数
输入hello,结果显示“找您100元”,默认初值为0.
3. 变量与常量
方法一:
change =100-price;
这里面有一个100,在这里这就是一个常量。
方法二:
如果我们想用更好的方式来定义这个常量,可以写做:
const int AMOUNT =100;
用AMOUNT对100这个常量进行定义,可以更直观的定义100这个常量的意义,表示一个金额。Const表示不能改变,也就是在AMOUNT在被赋予初值100后,后面就不能再对其进行其他的赋值了,相当于AMOUNT只是一个只读的量。
方法三:
int amount =100;
printf(“请输入票面”);
scanf(“%d”,&amount);
这种写法可以用户自己输入给的钱的票面,会更加方便对amount进行修改。
最后的程序为:
#include<stdio.h>
int main()
{
int price = 0,change = 0;
int amount = 100;
printf(“请输入金额\n”);
scanf(“%d”,&price);
printf(“请输入票面\n”);
scanf(“%d”,&amount);
change =amount-price;
printf(“找您%d元\n”,change);
return 0;
}
4. 浮点数
例2:计算身高的程序
美国人习惯使用英尺英寸计量单位,我们这里写一个程序来计算5尺7寸对应得身高是多少。
公式计算:(5+7/12)*0.3048=1.7018米
程序代码:
#include<stdio.h>
int main()
{
int foot=0;
int inch=0;
printf("请输入身高的英尺与英寸\n");
scanf("%d %d",&foot,&inch);
printf("身高是米\n",((foot+inch/12)*0.3048));
return 0;
}
运行结果:
运行会发现,只有英尺起作用,英寸在计算中不起作用。也就是输入5 7 、5 2结果相同,输入6 3 、6 2结果相同。
分析:
这是因为两个整数在运行后的结果只能是整数,例如10和10.0不同,10.0是浮点数。
在这里英寸除以12之后是小数,被丢掉了,并且不会有四舍五入。就只剩了0。
解决方案1:
① 这里的所有变量都是int类型,而结果是double类型,将%d改成%f。
② 将12改为12.0,当浮点数与整数进行运算时,C语言会将整数变为浮点数进行运算,结果也是浮点数。
改变后的代码:
int foot=0;
int inch=0;
printf("请输入身高的英尺与英寸\n");
scanf("%d %d",&foot,&inch);
printf("身高是%f米\n",((foot+inch/12.0)*0.3048));
解决方案2:
① Inch是定义为int类型的变量,如果将int变为double类型,就是浮点数变量了。
double是“双”,表示“双精度浮点数”,除此之外还有float,表示“单精度浮点数”。
② 除了改为double类型,输入也要由%d改为%lf,输出用%f即可。
改变后的代码:
double foot=0;
double inch=0;
printf("请输入身高的英尺与英寸\n");
scanf("%lf %lf",&foot,&inch);
printf("身高是%f米\n",((foot+inch/12.0)*0.3048));