二.计算

2.1变量

算找零
printf(“23+43=%d\n”,23+43);
printf(“100-23=%d\n”,100-23);
如何能在程序运行是输入那个数字23,然后计算输出结果?
需要:
1.有地方放输入的数字
2.有办法输入数字
3.输入的数字能参与计算

//change.c
int price=0;
printf("请输入金额(元):");
scanf("%d",&price);
int change=100-price;
printf("找您%d元\n",change);
//今后省略框架外int main 

如何输入
输入也在终端窗口中
输入是以为单位进行的,行的结束标志就是你按下了回车键。在你按下回车键之前,你的程序不会读到任何东西

变量
int price=0;
这一行,定义了一个变量。变量的名字是price,类型是in,初始值是0。
变量是一个保存数据的地方,当我们需要在程序里记录保存数据时,比如上面的例子中要记录用户输入的价格,就需要一个变量来保存它。用一个变量保存了数据,它才能参加到后面的计算中,比如计算找零。

变量定义
变量定义的一般形式
<类型名称><变量名称>;
int price,amount;
变量的名字
变量需要一个名字,变量的名字是一种“标识符”,意思是它是用来识别这个和那个的不同名字。
标识符有标识符的构造规则。基本的原则是:标识符只能由字母、数字、下划线组成,数字不可以出现在第一个位置上,C语言的关键字(有的地方叫保留字)不可以用做标识符。

赋值和初始化
int price=0;
这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。
price=0是一个式子,这里的“=”是一个赋值运算符,表示将“=”右边的赋值给左边的变量。

赋值
和数学不同,不表示关系,表示动作
初始化
C语言没有强制要求所有的变量都在定义的地方做初始化,但是所有的变量在第一次被使用(出现在赋值运算符的右边)之前应该被赋值一次

变量初始化
<类型名称><变量类型>=<初始值>;
int price=0;
组合变量定义的时候,也可以在这个定义中单独给单个变量赋值,如:
int price=0,amount=100;

表达式
“=”是赋值运算符,有运算符的式子就叫做表达式。
price=0;

变量类型
int price=0;
这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。
C语言是一种有类型的语言,所有的变量在使用之前必须定义或者声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中智能存放指定类型的数据,程序运行过程中也不能改变变量的类型。

ANSIC只能在代码开头的地方定义变量
C99 可以在变量使用之前的任何地方定义变量

读整数
scanf("%d",&price);
要求scanf这个函数读入下一个整数,读到的结果赋值给变量price
小心price前面的&
出现在scanf内的必须要输入才行,包括空格和符号

常量
int change=100-price;
固定不变的数,是常数。直接写在程序里,我们称作直接量(literal)
更好的方式,是定义一个常量:
const int AMOUNT=100;(C99)
减少magic number,增加程序可读性,方便修改

const
是一个修饰符,加在int的前面,用来给这个变量加上一个const(不变的)属性。
这个const的属性 表示这个变量的值一旦初始化,就不能再修改了。
int change=AMOUNT-price; //const变量一般全大写来强调
如果你试图对常量 做修改,把它放在赋值运算符的左边,就会被编译器发现,指出一个错误。

#include<stdio.h>
int main()
{
	int amount=100;
	int price=0;
	printf("请输入金额(元):");
	scanf("%d",&price);
	printf("请输入票面:");
	scanf("%d",&amount);
	int change=amount-price;
	printf("找您%d元\n",change);
	return 0;
}
//plus.c
int a;
int b;
printf("请输入两个整数:");
scanf("%d %d",&a,&b);
printf("%d+%d=%d\n",a,n,a+b);

2.2数据类型
计算身高的程序

prinf("请分别输入身高的英尺和英寸,"
	"如输入\"5 7"\表示5英尺7英寸:");
int foot;
int inch;
scanf("%d %d",&foot,&inch);
printf("身高是%f米。\n",((foot+inch/12)*0.3048));

上述代码运行,精确度有误
因为两个整数的运算的结果只能是整数
10/3*3=>?
10和10.0在C中使完全不同的书
10.0是浮点数

浮点数
带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式。另一种方式叫做定点数,不过在C语言中不会遇到定点数。人们借用浮点数这个词表达所有带小数点的数。
当浮点数和整数放到一起运算时,C语言会将整数转换成浮点数,然后进行浮点数的运算。
printf(“身高是%f米。\n”,((foot+inch/12.0)*0.3048));

double
inch是定义为int类型的变量,如果吧int换成double,我们就把它改为double类型的浮点数变量了。
double的意思是“双”,它本来是“双精度浮点数”的第一个单词,人们用来表示浮点数类型。除了double,还有float(意思就是浮点)表示单精度浮点数

prinf("请分别输入身高的英尺和英寸,"
	"如输入\"5 7"\表示5英尺7英寸:");
double foot;
double inch;
scanf("%lf %lf",&foot,&inch);
printf("身高是%f米。\n",((foot+inch/12)*0.3048));
//浮点数输出用 %f;浮点数输入用 %lf:

3.3表达式
表达式
一个表达式是一系列运算符和算子的组合,用来表示计算一个值
运算符(operator)是指进行运算的动作,比如加法运算符“+”
算子(operand)是指残云运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值

用程序解决问题时思考步骤
1.问题解决过程中需要得到什么数据,如何用变量保存
2.有了数据以后如何计算

计算时间差

int hour1,minute1;
int hour2,minute2;
scanf("%d %d",&hour1,&minute1);
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);

求平均值

int a,b;
scanf("%d %d",&a,&b);
double c=(a+b)/2.0;
printf("%d和%d的平均值=%f\n",a,b,c);

运算符优先级
赋值运算符
赋值也是运算,也有结果
a=6的结果是a被赋予的值,也就是6
a=b=6->a=(b=6)

int c=1+(b=a);
嵌套式赋值
不利于阅读
容易产生错误

结合关系
一般自左向右,单目±和赋值=自右向左

交换两个变量
程序是按步执行的
程序表达的是顺序执行的动作,而不是关系

int a=5;
int b=6;
int t;
t=a;
a=b;
b=t;

调试
在程序中设置断点,在某一步停下来

符合赋值
5个运算符,“±*/%”,可以和赋值运算符“=”结合起来,形成符合赋值运算符,两个运算符之间不要有空格
t+=5;
t=t+5;
t/=12+6;
t=t/(12+6);

递增递减运算符
“++”和“–”是两个很特殊的运算符,它们是单目运算符,这个算子还必须是变量。
这两个运算符分别叫做递增和递减运算符,它们的作用就是给这个变量+1或者-1.
count++;
count=count+1;

++和–可以放在变量的前面,叫做前缀形势,也可以放在变量的后面,叫做后缀形式。
a++的值是a加1以前的值,而++a的值是加1以后的值,无论哪个,a自己的值都加1了。
可以单独使用,但是不要组合进表达式。
前缀后缀
a = b+=c+±d±-e/-f 怎么理解
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值