[C程序设计] 03 - 输入输出

一、C 语句

1. C 语句分类

C 语句分为以下 5 类:

  1. 控制语句

    • 条件语句:if()...else...
    • 循环语句:for()...
    • 循环语句:while()...
    • 循环语句:do...while()
    • 结束本次循环语句:continue
    • 终止执行 switch 或循环语句:break
    • 多分支选择语句:switch
    • 从函数返回语句:return
    • 转向语句(结构化程序中基本不用):goto
  2. 函数调用语句
  3. 表达式语句:如赋值表达式。
  4. 空语句:只有一个分号,作为流程的转折点或循环语句的循环体。
  5. 复合语句:用 {} 把一些语句括起来。

2. 赋值语句

复合赋值运算

a += 3;  // a = a+3;
x *= y+8;  // x = x*(y+8);

使用复合赋值运算符,一是可以简化精炼程序,二是可以提高编译效率,生成质量较高的目标代码。

赋值过程中的类型转换

  • 浮点型赋值给整型:舍弃小数部分。
  • 整型赋值给单、双精度浮点型:数值不变。
  • 双精度浮点型赋值给单精度浮点型:只取 6~7 位有效数字,当双精度数值大小超过单精度数值范围时会出错。
  • 占字节多的整型赋值给占字节少的整型或字符型:只会将其低字节部分赋值给新变量,发生失真。失真不属于语法错误,编译系统不会提示,要注意避免!!!

赋值语句与赋值表达式

$$ 赋值语句 = 赋值表达式 + 分号\ ; $$

赋值表达式时 C 语言的特点之一,区别于其他语言。一个表达式可以包含在其他表达式中,赋值表达式也不例外:

if((b=a)>0) c=b;

// 相当于先把 a 赋值给 b,再判断 b 是否大于 0

二、数据的输入输出

1. 输入输出基本概念

  • 所谓输入输出是以计算机的主机为主体而言的。
  • C 语言本身不提供输入输出函数,这样做可以使编译系统简化、通用性强、可移植性好。C 语言函数库提供一批标准的输入输出函数,以标准的输入输出设备(一般为终端设备)为输入输出对象:

    • putchar输出字符
    • getchar输入字符
    • printf格式输出
    • scanf格式输入
    • puts输出字符串
    • gets输入字符串
  • 要在程序文件开头用预处理指令# include引入有关头文件。

# include指令还有一种形式:

#include "studio.h"

这两种预处理指令的区别是:

  • 使用尖括号时,编译系统从存放 C 编译系统的子目录中去找要包含的文件,称为标准方式
  • 使用双引号时,编译系统现在用户的当前目录中寻找要包含的文件,若找不到,再按标准方式找。双引号内可以是文件的具体路径。
  • 为提高效率,使用系统库函数时尽量使用标准方式。

2. printf输入函数

printf是格式化输出函数,用来向终端(或系统隐含指定的输出设备)输出若干个任意类型的数据。其一般格式为:

printf(格式控制, 输出表列);

输出表列是需要输出的数据,可以是常量、变量或表达式。
格式控制是用双引号括起来的字符串,称为格式控制字符串或格式字符串,包括两部分信息:

  1. 格式声明:由%和格式字符组成,作用是将输出的数据转换为指定格式。
  2. 普通字符:需要在输出时原样输出的字符。

格式字符包括:

格式字符 含义
d 输出有符号的十进制数
ld 输出长整型
lld 输出双长整型
c 输出一个字符
s 输出字符串
f 输出实数(单精度、双精度、长双精度)
eE 以指数形式输出实数
u 输出无符号(unsigned)型十进制数
gG fe格式中较短的一个格式输出浮点数
o 按八进制形式输出整数
xX 按十六进制形式输出整数

部分格式字符使用时可以在格式声明中指定输出数据的域宽,即所占的列数。原输出内容长度小于域宽时,默认在左侧加空格。如:

  • %5d输出数据占 5 列。
  • %m.nf输出数据占 m 列,其中小数为 n 列。原输出数据过长时采取四舍五入的方法处理。党 n 为 0 时,不输出小数和小数点。
  • %-m.nf%m.nf作用相似,但数据长度小于 m 时,数据向左靠,右端补空格。

虽然输出数据的域宽可以控制,但要注意数据的有效性。float型数据只能保证 6 位有效数字,double为 15 位。并不是能输出的数据都是精确的。

如果像输出%,应该在格式控制字符窜中使用%%

3. scanf输出函数

scanf的一般格式为:

scanf(格式控制, 地址表列);

scanf函数的格式控制与printf函数相同,以%开始,以格式字符结束,可插入附加字符。

需要注意的是,scanf函数中,格式控制后面的是变量地址,而不是变量名:

scanf("%d", a);  // 错误
scanf("%d", &a);  // 正确

4. 字符输入输出函数

putchar的作用是输出一个字符。putchar(c)中的c可以是字符常量、字符变量、整型常量、整型变量(其值在 ASCII 代码范围内)或转义字符。

getchar可以输入一个字符,得到的字符可以赋值给一个字符变量或整型变量,也可以直接作为表达式的一部分。

a = getchar();
putchar(getchar());

Reference:

谭浩强《C程序设计(第五版)》

你可能感兴趣的:(c)