第3章 顺序程序设计

目录

3.2 数据的表现类型及其运算

   3.2.1 常量和变量

      1.常量                2.变量

      3.常变量            4.标识符

   3.2.2 数据类型

   3.2.3 整型数据

3.3 运算符和表达式

3.4 C语句

3.5 数据的输入输出

      3.5.3 用printf函数输出数据

      3.5.4 用scanf函数输入数据          

      3.5.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表示12.34*10^{-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输入输出字符的特点,以及适用情况。

①②③④⑤⑥⑦⑧⑨

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值