C 语言 _2 变量
2.1.2 变量定义
找零钱问题:100-(用户输入)物品的价格=找你的钱我们需要:
有办法输入数字;
有地方放输入的数字;
输入的数字参与计算。
变量是一个保存数据的地方。变量定义的一般形式就是:<类型名称> <变量名称>变量的名字叫“标识符”,基本原则只能由字母、数字、下划线构成,数字不能出现在第一个位置上。C 语言的关键字(又叫保留字)不可用作字符。如何输入:输入也在终端窗口中。输入以行为单位进行,敲下回车,行结束。(敲下回车之前,程序不会读到任何东西。)
2.1.3 变量赋值与初始化
和数学中不同,b=a 和 a=b 在程序中有着相反的含义。当赋值发生在刚定义变量时,就叫程序的初始化。虽然 C 语言并没有强制要求所有的变量在被定义的地方做初始化,但所有变量在第一次被使用(出现在=等号右边)前都应该被赋值一次。如果没有初始化呢?就是使用这个变量在内存中的那个值。变量初始化:<类型名称> <变量名称>=<初始值>也可以在组合变量定义中给单个变量单独赋初值,如
有运算符的式子就叫表达式(比如=是赋值运算符)C 语言是有类型的语言,所有变量在使用前必须先定义或声明;所有变量必须有确定的数据类型(表示在变量中可以存放什么样的数据),变量中也只能存放指定类型的数据,程序运行过程中也不能改变变量的类型。int charge=100-price;
比较 C 和 ANSI C
2.1.4 变量输入
scanf()
函数,读到的结果赋值给后面的变量(注意变量前的 &)如果输入非整数(比如找钱一例中:输入字母,找我 100 元)应该怎么处理?这种情况后面再说。
2.1.5 常量 vs 变量
固定不变的数,是常数。直接写在程序里的,叫直接量。
其中 const 是个修饰符,加在 int 前面,给这个变量加上一个 const(不变的)属性,表示这个变量的值一旦初始化,就不能再更改了。好处:1.便于理解 2.修改的时候好找编译时会显示:read-only variable is not assignable(一般 const 的变量全大写)scanf 的空格有讲究,以后再说。输入时如果要两个数,在中间、最后敲空格或回车,计算机读到两个数字时停止当 scanf 扫描数字时输入字母,可能会出来很多奇怪的数字。(应该是 ASCII 码吧?)后面再细说。
2.1.6 浮点数
C 语言中两个整数做运算得到的结果也只能是个整数(去掉小数部分)。而 10 和 10.0 在 c 中是完全不同的两个数字,10.0 是浮点数(浮点数指小数点时可以浮动的,是计算机中表示分数和无理数的一种方式。人们用浮点数来称呼有小数点的数)(其实还有定点数。但是在 c 语言中无)当浮点数和整数放在一起运算时,计算机会自动把整数转化为浮点数计算(如:
有一次尝试 printf("%f",3/2);输出的是整数。应该是先进行整数运算再以 %f 形式输出,而不是以 %f 形式输出。所以应该改进为 3/2.0
有单精度 float(%f)和双精度 double(%lf)(计算机里会有这种纯粹的整数,是因为运算快、占地小。而且日常生活中大多也是整数运算。)
2.2.1 表达式
一个表达式是一系列运算符和算子的结合,用来计算一个值运算符(operator)是指进行运算的动作,比如加/减法运算符+-算子(operand)是指参与运算的值,可能是常数/变量/一个方法的返回值
计算时间差:这里只记录分钟错位的情况(1:40 和 2:10)方法:全部记为分钟(小时*60)
2.2.2 运算符优先级
(double 输入的时候用%lf
,输出的时候用%f
就行)运算符优先级
(a+b,a-b 是双目;+a,-a 是单目,相当于正负号)赋值也是运算,也有结果。a=6
的结果就是 a 被赋予的值,也就是 6 如 a=b=6
:自右向左,a=(b=6)。
嵌入式赋值:int c=1+(b=a)
缺点:不利于阅读;容易产生错误运算符的结合关系一般自左向右;单目+-
和赋值=
自右向左下面的式子过于复杂,不利于阅读和理解。
所以应该把它拆开来计算。(C 语言没有幂次,所以只能一个个乘。)
2.2.3 交换变量
交换 a 和 b 的值(a=6,b=5)错误示例
程序表达的是顺序执行的动作,而不是关系.所以这样做先把 b 赋给 a,然后再把 a 赋给 b,都是 5.方法:再找一个变量 c,c=a 储存一下 a 的值,然后 a=b,b=c
断点
DEV C++中,在左边数字那里点击一下,然后程序运行时就会在这一行停止。
运行也只能到这一行点下一行,就会运行到下一行。这样可以方便排 bugC语言:使用Dev C++断点调试
2.2.4 复合赋值
a+=5
表示a=a+5
(注意两个运算符之间无空格)类似有-=
,*=
,/=
(a*=b+5
表示a=a*(b+5)
,如果想先算a=a*b
记得加括号)INC 递增、DEC 递减运算符:++
,--
:单目运算符,只能有一个算子,这个算子还只能是变量(如a++
后缀形式,++a
前缀形式)让该变量+1/-1;a++
运算式的值是 a+1 以前的值;++a
运算式的值是 a+1 以后的值。无论哪个,a 的值都+1 了
++
和--
可以单独使用,但不要把它组合进表达式,复杂。
3.0.1 PAT 再解释
是 Program Ability Test 的简写。
看样例数据和看题目一样重要;
不要交互地输出,题目要求输出什么就输出什么,不要画蛇添足,一个空格不对都不算对);
不要检查输入,题目只会输入定义域范围内的数字;
严格遵守输出的格式;
scanf 里不要乱输什么东西(?)
int a/b;
如果后面是小数,c 语言会强制类型转换为整数。但以后学习 c++或 java 是不可以的,要记得类型转换。
版权声明: 本文为 InfoQ 作者【泾箐】的原创文章。
原文链接:【http://xie.infoq.cn/article/0de737ce2cf6b5a7b6b422594】。文章转载请联系作者。
评论