第三章输入/输出与顺序结构
3.1输入/输出函数
3.1.1 输出函数:printf,putchar() , puts()
输出函数指的是把指定的数据按指定的形式显示到屏幕上。
- printf:
基本格式:printf(“输出格式字符串”,表达式1,表达式2,······,表达式n)
“输出格式字符串”可以包含各种普通字符,以%开头的格式符(用于规定显示数据的类型和形式),以及以“ \ ”开头的转义字符。printf的功能是分别按从右至左的次序依次计算出表达式n,然后是表达式n-1,······最后是表达式1的值,替换“输出格式字符串”中对应的格式符,把替换后的字符串显示到屏幕上。
格式符 | 功能 | 对应表达式类型 |
---|---|---|
%d 或 %i ; | 输出带符号十进制整数 | int |
%ld | 输出十进制长整数 | long int |
%o | 以无符号八进制形式输出整数 | int 或 unsigned int |
%x | 以无符号十六进制形式输出整数 | int 或 unsigned int |
%c | 输出单个字符 | char,int |
%s | 输出字符串 | 地址,即 char* |
%f | 输出十进制实数 | float 或 double |
%e | 以科学计数法的形式输出实数 | float或double |
如果要显示一个普通字符“%”,为了避免printf把它当成格式符的开始符号,必须写成“%%”。
printf的格式化输出:
- %Xd和%-Xd格式符,用X格显示整数,如果待显示的整数不足X格则左补(%-Xd为右补)空格补齐X格,如果待显示整数超过X格则忽略格数的规定。正号表示右对齐,负号表示左对齐。
- %A.Bf和%-A.Bf格式符,用A格、小数点后取B位的方式显示实数,如果待显示的实数不足A格则左补(%-A.Bf为右补)空格补齐X格,如果待显示整数超过A格则忽略格数的规定。小数点后取B位时,对第B+1位进行四舍五入。当B为0时,表示显示与该实数最接近的整数。正号表示右对齐,负号表示左对齐。
- putchar():
无论是字符型常量还是字符型变量,在输入/输出时都会设计字符的形状和字符ASCII码值这两个方面的问题。“显示一个字符”与显示一个字符的ASCII码值”是两个不同的概念,也有着完全不同的效果。在标准输出函数printf的“输出格式字符串”中,%c表示显示字符的形状,%d表示显示字符的ASCII码。
C语言系统为显示单个字符设置了一个专用的函数putchar,其使用格式如下:
等效于 :
- puts():
puts函数用于将字符串输出到标准输出设备(遇到“ \0 ”即止),并自动追加换行符。
使用格式:puts(指向字符数组的指针);
3.1.2 输入函数:scanf,getchar(),gets()
输入函数是指能够在程序执行过程中从键盘读入数据,并按指定的类型存放到内存指定的位置。
- scanf:
基本格式:scanf(“输入格式字符串”,地址1,地址2,······,地址n);
"输入格式字符串"可以包含以%开头的格式符,也可以包含各种普通字符,一般不含转义字符,也不在格式符中指定输入数据的宽度。但对于格式串中的普通字符,在输入时必须原样输入,不得有任何更改。各个地址的参数是“ &变量 ”的形式或者 指针 。注意:在格式串中连续出现多个表示数值的格式符(%d、%f、%lf等)时,输入以空格作为分隔符;连续出现%c格式符时(1个汉字在C语言中是两个符号),中间不得有包括空格在内的任何其它符号。
格式符 | 功能 | 对应的变量类型 |
---|---|---|
%d | 输入十进制整数,以带有符号整数的形式存放 | int |
%ld | 输入十进制整数,以长整数的形式存放 | long int |
%c | 输入单个字符 | char |
%s | 输入字符串 | 字符数组 |
%f | 输入实数,以单精度的形式存放 | float |
%lf | 输入实数,以双精度的形式存放 | double |
- getchar():
C语言系统为输入单个字符设置了一个专用的函数getchar,其使用格式如下:
- gets():
除了用scanf,以%s接收字符串之外,还可以使用gets函数更方便的接收字符串。注意:gets不会检查输入的字符串长度,即可能超出字符串数组的长度造成内存溢出,这其实也是gets函数不安全的原因。
使用格式:gets(指向字符数组的指针);
3.2 顺序结构的基本流程
在计算机系统中,按语句编写的自然顺序逐条执行即为顺序结构。在顺序结构中,语句是从上至下一条条执行的。C语言程序一般由三部分组成,它们分别是预处理命令部分,主函数部分及自定义函数部分。