C语言学习(二)变量

本次学习了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));

猜你喜欢

转载自blog.csdn.net/qq_33523925/article/details/86599039