【无标题】第二章 计算

第二章 计算

2.1变量

算找零

如何能在程序运行时输入那个数字23,然后计算输出结果?

需要:1.有地方放输入的数字;2.有办法输入数字;3.输入的数字能参与计算。

#include<stdio.h>
int main()
{
    int price=0;
    printf("请输入金额(元):");
    scanf("%d",&price);
    int change=100-price;
    printf("应找您%d元",change);
    return 0;
}

在这里插入图片描述

2.1.1 变量定义

1、变量
int prince =0;
//这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。

变量是一个保存数据的地方,当我们需要在程序里保存数据时,比如上面的例子中要记录用户输入的价格,就需要一个变量来保存它。用一个变量保存了数据,它才能参加到后面的计算中,比如计算找零。

2、变量定义
变量定义的一般形式就是:<类型名称> <变量名称>; 
int price;
int amount;
int price, amount;
3、变量的命名

变量需要一个名字,变量的名字是一种“标识符”,意思是它是用来识别这个和那个的不同的名字。

标识符有标识符的构造规则。基本的原则是:标识符只能由字母、数字和下划线组成,数字不可以出现在第一个位置上,C语言的关键字(有的地方叫它们保留字)不可以用做标识符。

  • C语言的保留字
auto,break,case,char,const,continue ,default,do ,double,else, ,enum,extern,float,for,goto,if,int,long,register,return,short,signed,sizeof, static,struct,switch,typedef,union,unsigned,void,volatile , while,inline,restrict

不需要背诵,随着学习自然会了解

2.1.2 变量赋值与初始化

int price = 0;

这一行定义了一个变量。变量的名字是price,类型是int,初始值是0。

price=0是一个式子,这里的“=”是一个赋值运算符,表示将“=”右边的值赋给左边的变量。

1、赋值

和数学不同,a=b在数学中表示关系,即a和b的值一样;而在程序设计中,a=b表示要求计算机做一个动作:将b的值赋给a。关系是静态的,而动作是动态的。在数学中,a=b和b=a是等价的,而在程序设计中,两者的意思完全相反。

2、初始化

当赋值发生在定义变量的时候,就像程序I中的那样,就是变量的初始化。虽然C语言并没有强制要求所有的变量都在定义的地方做初始化,但是所有的变量在第一次被使用(出现在赋值运算符的右边)之前被应该赋值一次

#include<stdio.h>
int main()
{
    int i;
    int j;
    j=i+10;
    printf("%d\n",j);
    return 0;
}//未初始化可能会出现乱码
3、变量初始化
<型名称> <变量名称>= <初始值>;

int price = 0;
int amount = 100;

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

4、表达式

“= "是赋值运算符,有运算符的式子就叫做表达式。

price=0;
change= l00-price;
5、变量类型
int price = 0;

这一行,定义了一个变量。变量的名字是price,类型是int,初始值是0。

C是一种有类型的语言,所有的变量在使用之前必须定义或声明,所有的变量必须具有确定的数据类型。数据类型表示在变量中可以存放什么样的数据,变量中只能存放指定类型的数据,程序运行过程中也不能改变变量的类型。

6、第二个变量
int change = 100 - price;
//定义了第二个变量change,并且做了计算

2.1.3变量的输入

1、读整数

scanf("%d", &price);

要求scanf这个函数读入下一个整数,读到的结果赋值给变量price

注意:小心price前面的&

2.1.4常量VS变量

1、常量
int change = 100 - price;

固定不变的数,是常数。直接写在程序里,我们称作直接量(literal)。

更好的方式,是定义一个常量:

const int AMOUNT = 100;
#include<stdio.h>
int main()
{
    const int AMOUNT=100;
    int price=0;
    printf("请输入金额(元):");
    scanf("%d",&price);
    int change=100-prince;
    printf("应找您%d元",change);
    return 0;
}

在这里插入图片描述

2、const
  • const是一个修饰符,加在int的前面,用来给这个变量加上一个const (不变的)的属性。这个const的属性表示这个变量的值一旦初始化,就不能再修改了。

  • int change = AMOUNT - price;

  • 如果你试图对常量做修改,把它放在赋值运算符的左边,就会被编译器发现,指出为一个错误。

在这里插入图片描述

让用户输入变量AMOUNT的值,而不是使用固定的初始值。这个变量在哪里定义合适呢?

#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

#include<stdio.h>
int main()
{
    int a=0;
    int b=0;
    printf("请输入两个整数:");
    scanf("%d %d",&a,&b);
    printf("%d+%d=%d\n",a,b,a+b);
    return 0;
}

在这里插入图片描述

2.1.5 浮点数

例:身高5尺7寸

美国人固执地使用英制计量单位,他们习惯用几尺几寸(英尺英寸)来报自己的身高。如果遇到一个美国人告诉你他是5英尺7,他的身高应该是一米几呢?

(5+7/12)x0.3048= 1.7018米

#include<stdio.h>
int main()
{
    printf("请分别输入身高的英尺和英寸:");
    int foot;
    int inch;
    scanf("%d %d",&foot,&inch);
    printf("身高是%f米。\n",((foot+inch/12)*0.3046));
    return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这些结果里英寸并没有起到作用

因为两个整数的运算的结果只能是整数

10和10.0在C中是完全不同的数

10.0是浮点数

要把12改为12.0

当浮点数和整数放到一起运算时,C会将整数转换成浮点数,然后行浮点数的运算。

#include<stdio.h>
int main()
{
    printf("请分别输入身高的英尺和英寸:");
    int foot;
    int inch;
    scanf("%d %d",&foot,&inch);
    printf("身高是%f米。\n",((foot+inch/12.0)*0.3046));
    return 0;
}

在这里插入图片描述

带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式。另一种方式叫做定点数,不过在C语言中你不会遇到定点数。人们借用浮点数这个词来表达所有的带小数点的数。

1、double

inch是定义为int类型的变量,如果把int换成double,我们就把它改为double类型的浮点数变量了。

double的意思是“双”,它本来“双精度浮点数”的第一一个单词,人们用来表示浮点数类型。除了double,还有float (意思就是浮点! )表示单精度浮点数。

#include<stdio.h>
int main()
{
    printf("请分别输入身高的英尺和英寸:");
    double foot;
    double inch;
    scanf("%d %d",&foot,&inch);
    printf("身高是%f米。\n",((foot+inch/12)*0.3046));
    return 0;
}

在这里插入图片描述

2、数据类型
  • 整数

    • int
    • printf(“%.”,…)
    • scanf(“%d”,…) …
  • 带小数点的数

    • double
    • printf("%f,…)
    • scanf(“%lf”,…)

2.2 表达式

表达式是一系列运算符和算子的组合,用来计算一个值。

2.2.1.运算符

  1. 运算符(operator) 是指进行运算的动作,比如加法运算符“+”,减法运算符“-”

  2. 算子(operand)是指参与运算的值,这个值可能是常数,也可能是变量,还可能是一个方法的返回值

在这里插入图片描述

例:计算时间差

输入两个时间,每个时间分别输入小时和分钟的值,然后输出两个时间之间的差,也以几小时几分表示。

#include<stdio.h>
int main()
{
	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);
	return 0;
}

在这里插入图片描述

2.2.2运算符优先级

写一个程序,输入两个整数,输出它们的平均值

#include<stdio.h>
int main()
{
	int a,b;
	scanf("%d %d",&a,&b);
	double c=(a+b)/2.0;
	printf("%d和%d的平均值=%f\n",a,b,c);
	return 0;
}

在这里插入图片描述

1、运算符优先级
优先级运算符运算结合关系举例
1+单目不变自右向左a*+b
1-单目取负自右向左a*-b
2**自左向右a*b
2/自左向右a/b
2%取余自左向右a%b
3+自左向右a+b
3-自左向右a-b
4=赋值自右向左a=b

单目运算,取负,优先级最高

2、赋值运算符
  • 赋值也是运算,也有结果

  • a=6的结果是a被赋予的值,也就是6

  • a=b=6—> a=(b=6)

3、结合关系
  • 一般自左向右

  • 单目±和赋值=自右向左

例:计算复利

在银行存定期的时候,可以选择到期后自动转存,并将到期的利息计入本金合并转存。如果1年期的定期利率是3.3%,那么连续自动转存3年后,最初存入的x元定期会得到多少本息余额?

本息合计= x(1+3.3%)}.

#include<stdio.h>
int main()
{
	int x;
	scanf("%d",&x);
	double amount=x*(1+0.033)*(1+0.033)+(1+0.033);
	printf("%lf",amount);
	return 0;
}

2.2.3变量交换

如果已经有:

Int a = 6;

int b= 5;

如何交换a、b两个变量的值?

  1. 程序是按步骤执行的

程序表达的是顺序执行的动作,而不是关系

a=b; 
b=a;

是依次执行的,结果使得a和b都得到b原来的值

  1. 像交换两杯水,需要第三个杯子
int c;
c=b;
b=a;
a=c;
#include<stdio.h>
int main()
{
    int a=5;int b=6;
    int t;
    t=a;
    a=b;
    b=t;
    printf("a=%d,b=%d",a,b);
    return 0;
}

2.2.4复合赋值和递增递减

1、复合赋值

  • 5个算术运算符,+ - * / %,可以和赋值运算符”="结合起来,形成复合赋值运算符:“+=”、”-=”、“*=”、“/=”和“%=”

  • total +=5;

  • total = total + 5;

  • 注意两个运算符中间不要有空格

2、递增递减运算符

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

count++;
count += 1;
count=count+1;
  1. 前缀后缀

​ ++和–可以放在变量的前面,叫做前缀形式,也可以放在变量的后面,叫做后缀形式。

​ a++的值是a加1以前的值,而++a的值是加了1以后的值,无论哪个,a自己的值都加1了。

#include<stdio.h>
int main()
{
	int a=10;
	printf("a++=%d\n",a++);
	printf("a=%d\n",a);
	printf("++a=%d\n",a++);
	printf("a=%d\n",a);
    return 0;
}

在这里插入图片描述

表达式运算表达式的值
count++给count加1count原来的值
++count给count加1count+1以后的值
count–给count减1count原来的值
–count给count减1count-1以后的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值