目录
3.2 数据的表现类型及其运算
3.3 运算符和表达式
3.4 C语句
3.5 数据的输入输出
3.2 数据的表现类型及其运算
3.2.1 常量和变量
1.常量
整型常量:如1000,1834,-28等
实型常量:
①十进制小数形式,由数字和小数点组成,如12.34,0.235,-48.2,0.0,12.0等; ②指数形式,12.34e-25或12.34E-25表示,e/E前必须有数字,e/E后必须为整数。
字符常量:
①普通字符,用单撇号括起来的一个字符,如‘A’。储存时以其ASCII值储存在计算机中。单撇号只是界限符,字符常量只能是一个字符,不包括单撇号。
②转义字符,以‘\’开头。'\n',换行;'\t',水平制表符;'\r',回车;'\f',换页;'\b',退格。详见下表
③字符串常量,如"123","boy"等。通常是双撇号中的全部字符。单撇号只能包含一个字符,双撇号可以包含一个字符串。
④符号常量,用#define指令,指定一个符号名称代表一个常量。如,#define PI 3.14159。
优点,含义清楚,一改全改。注意,符号常量不占内存,常用大写表示,只是一个临时符号,在预编译后这个符号就不存在了,故不能对符号常量赋新值,与变量不同。
2.变量
变量代表一个有名字的、具有特定属性的存储单元,在程序运行期间,变量的值是可以改变的。
注意,变量使用前必须先定义后使用。
变量名&变量值 变量名实际上是一个名字代表的一个存储地址,变量值是存放在变量a的内存单元中的数据。从变量中取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据。
3.常变量
表示方式:const int a
常变量&常量
常变量有变量的基本属性,有类型,占存储单元,只是不允许改变其值。常变量是有名字的不变量,常量是没有名字的不变量。
常变量&符号常量
定义符号常量用#define指令,是预编译指令,在预编译是仅进行字符替换,在预编译后,符号常量就不存在了。符号常量不占用存储单元,而常变量要占用存储单元。常变量使用更方便,尽量多用符号常量。
4.标识符
对变量、符号常量名、函数、数组、类型等命名的有效字符序列。
C语言规定只能由字母、数字、下划线组成,且第一个字符不能是数字。
3.2.2 数据类型
略
3.2.3 整型数据
3.3 运算符和表达式
3.4 C语句
分类:
3.4.1 控制语句
①if()...else... 条件语句
②for... 循环语句
③while()... 循环语句
④do...while() 循环语句
⑤continue 结束本次循环语句
⑥break 终止执行switch或循环语句
⑦switch 多分支选择语句
⑧return 从函数返回语句
⑨goto 转向语句,在结构化程序中基本不用goto语句
2.函数调用语句 一个函数+一个分号。如printf("hello");
3.表达式语句 最典型的是赋值表达式构成赋值语句,即赋值表达式+分号。
4.空语句
5.复合语句 用{}括起来的一个整体,常用在if和循环语句中。
3.4.2 关于赋值
1.运算符 =为赋值运算符。二目运算符都能和赋值运算符组合在一起,形成复合运算符。
2.赋值过程中的类型转换
1)浮点型数据(不论单双精度)赋给整型变量。直接舍去小数点后的数字。
2)整型数据赋给单双精度变量。数值不变,不过小数点后多了些0.
3)double型数据赋给float型变量。只取6-7位有效数字。注意double型数据不应超过float变量的数值范围。
4)float型数据赋给double型变量。数值不变,有效位数增加到15位。
5)字符型数据赋给整型变量。将字符的ASCII值赋给整型变量。
6)将占字节多的整型数据赋给占字节少的整型变量或字符变量,发生“截断”。即只保留低字节的数据,将其转化为十进制进行数字或字符输出。(下文有举例解释截断发生的情形)
总之,整型数据之间赋值,是按照储存单元中的储存形式直接传送;实型数据间、整型和实型数据间转换,是先转换再赋值。
3.5 数据的输入输出
C语言函数库中有一批标准输入输出函数,它是以标准的输入输出设备(一般为终端设备)为输入输出对象的。包含putchar(输出字符)、getchar(输入字符)、printf(格式输出)、scanf(格式输入)、puts(输出字符串)、gets(输入字符串)。
要在程序文件的开头用预处理指令#include把有关头文件放在本程序中。
说明:#include指令还有一种形式,将头文件的尖括号换为双撇号,如,#include"stdio.h"区别是,用尖括号时,编译系统从存放C编译系统的子目录中找所要包含的文件,这称为标准方式。若用双撇号,编译时,编译系统先在用户的当前目录(一般是用户存放源程序文件的子目录)中寻找要包含的文件,若找不到,再按标准方式查找。如果想包含的头文件不是系统所提供的相应头文件,而是用户自己编写的文件,应用双撇号形式,如果该头文件不在当前目录中,可以在双撇号中写出文件路径。
3.5.3 用printf函数输出数据
重点介绍格式字符
①d格式字符
可以在格式声明中指定输出数据的域宽(所占的列数),如“%5d”,指定输出数据占五列,输出的数据从右往左依次填满列数,未填满的以空格形式填入。
%ld,表示输出长整型数据(long);%lld,表示输出长长整型数据(long long)。
②c格式字符
如char ch=‘a’
printf("%c",ch) 输出a。
可以指定域宽。
一个整数(0-127范围内),可以用%c输出。输出时系统自动将该数字转化成ASCII所对应的字符,再输出。如short a=121
printf("%c",a) 输出y。
若整数超过上述范围,%c会把最后一个字节的信息以字符形式输出。(发生截断)
如short a=377
printf("%c",a) 输出y。
因为用%c输出时只考虑一个字节,存放在a的储存单元中最后一个字节是01111001,即十进制的121,是y的ASCII代码。
③s格式符
用来输出字符串。如printf("%s","CHINA").此时显示屏上会显示CHINA(不带双引号)。
④f格式符
用来输出实数(单、双精度、长双精度),以小数形式输出。
1>%f (不指定输出数据的长度,系统根据实际情况自动决定数据所占列数)整数部分全部输出,小数部分最多输出六位。(直接舍去or四舍五入?)
2>%m.nf (指定数据宽度和小数位数)如%7.2f指定数据输出一共7列,其中2列是小数列。其后一位四舍五入处理。如int a=1.0
printf("%20.15f",a/3)
输出0.333333333333333(15个3),注意0前有三个空格。
注意,float型数据只能保证6位有效数字的精确度;double型数据只能保证15位有效数字的精确度。注意有效数字的读法,从第一位非零数字开始数,如3.123是四位有效数字。
3>%-m.nf (输出的数据向左对齐)类似指定域宽,只不过%5d是向右靠,从右往左填满列数,不够的在最左边补入空格,而该输出方式是向左靠。
⑤e(E)格式符
%e表示以指数形式输出实数,如果不指定输出的整数位数和小数位数,许多编译系统自动默认输出小数位6位(占6列),指数部分占5列(e+两个字符占其中的两列),小数点前只有一位非零数字。如printf("%e",123.456); 输出 1.234560e+002。
可进行%m.ne的格式声明 如printf("%13.2e",123.456); 表示输出的整体占13列,小数点后占2位。
输出 1.23e+002 (整体前面有4个空格)
其他还有很多格式符,初学时不太常见,所以在此略,如果用到可以自行查阅。
3.5.4 用scanf函数输入数据
较printf函数所介绍的格式字符相比,sccanf介绍较少,现阶段常用%d,%f,%c。不必死记硬背,需要时自行查阅即可。
注意,在scanf的双撇号中有什么内容,输入时就要对应输入什么内容,包括逗号、空格等,如果没有空格也不要输入空格。
3.5.5 字符输入输出函数
1.用putchar函数输出一个字符
如char a='B'
putchar(a) 输出结果显示为B。
形式大致为putchar(c),其中的c可以是字符常量、整型常量、字符变量或整型变量(整型数据应在0-127范围内,否则只保留最后一个字节的数据)。与printf有相似之处。putchar函数是输出字符的函数,它只能输出字符,不能输出数字。
其中c也能是转义字符。如putchar('\101'),转义字符中‘\+数字’是在八进制下进行运算,需将其转化为十进制数字,在ASCII表中找到对应字符,才是最后输出结果。而其他'\+其它字母或字符'则应遵循上面常用表格中对应含义输出。
2.用getchar函数输入一个字符
如a=getchar(); //从键盘输入一个字符,给a(类似scanf的作用)
putchar(a); 输出结果显示为a。
注意,在输入过程中,是先将这些字符暂时储存在键盘的缓冲器中,只有按下Enter键后才会一起将其输入计算机中。所以如果输入一个字符后立刻按Enter,再输入一个字符,系统会把Enter也当作一个字符输入键盘缓冲区,最后一起输出,即getchar函数不仅可以输出可显示字符,不可显示的字符也可以输出。
getchar只能接受一个字符。如果想输入多个字符就要用多个getchar函数。
常见用法:① char a; ② putchar(getchar()); ③printf("%c",getchar());
a=getchar();
putchar(a);
思考:用printf和scanf输入输出字符和用getchar和putchar输入输出字符的特点,以及适用情况。
①②③④⑤⑥⑦⑧⑨