第四章、基本输入输出函数
什么是函数
函数(Function)是实现了一个功能的代码块。函数有函数的名字,函数名代表一段代码块的起点。也代表一个功能。
函数都有自己的名字,如:printf 、main 等。不同的名字代表不同的功能。
函数对应英文是 Function,其实函数翻译成中文为 功能 会更好理解(个人见解)。
C 语言中已经实现了一些函数供编码人员调用,这些函数我们称之为标准库函数。
函数的调用
函数只有调用了,函数内部的代码才能够执行,才能够发挥作用。
函数调用的语法
函数名(表达式1, 表达式2, 表达式3, ...)
语法说明:
函数名代表函数的功能。()代表调用此函数(让函数执行)。()括号内的表达式计算的结果是给函数提供数据(通常叫做实际调用参数),即函数的输入。多个数据给函数时需要用英文的逗号分隔符(,)分隔。一个函数需要多少个参数是由这个函数的声明者(编写函数的人)决定的。- 函数调用是一个表达式,它可以返回一个值。
示例:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("Hello World!\n");
printf("age:%d\n", 35);
return 0;
}
上述程序中,第一个 printf 函数只有一个参数为 "Hello World!\n",第二个 printf 函数有两个参数为 "age:%d\n" 和 35,中间用英文的逗号(,)分隔。
1. printf函数
printf 函数是用来在屏幕终端上打印一个标准输出,来让用户看到程序执行中运行的一些结果。
printf 的头文件
在使用库函数前,我们必须在当前的 .c 文件中使用 #include <xxx.h> 来包含库函数声明的头文件。C 语言的函数需要先声明再使用,而 printf 函数的声明在 头文件 stdio.h中。因此需要在 文件头部加上 #include <stdio.h>。
stdio含义为 标准输入输出(Standard Input/Output)。.h通常是头文件的后缀。
包含头文件的语法
#include <头文件名>
如,包含 stdio.h 这个文件的写法如下:
#include <stdio.h>
只要一次包含就可以多次使用此库中的所有函数了。
printf 的调用格式:
printf(格式字符串, 表达式1, 表达式2, ...);
例如:
#include <stdio.h>
int main(int argc, char *argv[]) {
printf("hello!\n");
printf("name:%s, age:%d\n", "张三", 18);
return 0;
}
执行结果如下:
hello!
name:张三, age:18
上述程序中第二个 printf 的第一个参数(格式字符串)中 %s 和 %d是格式说明符(也叫占位符),此处的数据需要使用第二个参数("张三")和第三个参数(18)填充。而第一个 printf 中 的第一个参数的字符串中没有%开头的格式说明符,则不需要额外的参数。
printf 格式说明符格式
%[flags][width][.precision][length]specifier
其中 中括号(
[]) 括起来的部分表示可选项。
说明:
flags:控制对齐、前缀等(如:-,+,0,#)。width:最小输出宽度(如:%5d)。.precision:精度(如:%.2f保留两位小数)。length:数据类型长度修饰符(如:%hd表示short)。specifier:格式字符。
格式化字符串的 格式字符
%d%i%u%o%x%X%f%e%E%g%G%c%s%p%%%长度修饰符
%ld%lld%Lf示例
#include <stdio.h>
int main(int argc, char *argv[]) {
float pi = 314.15926535;
int x = 8815431;
long long int lli= 1000;
printf("---%d---\n", x);
printf("---%u---\n", x);
printf("---%i---\n", x);
printf("---%o---\n", x);
printf("---%x---\n", x);
printf("---%X---\n", x);
printf("---%f---\n", pi);
printf("---%e---\n", pi);
printf("---%g---\n", pi);
printf("---%G---\n", pi);
printf("---%lld---\n", lli);
printf("=======================\n");
printf("---%10d---\n", x);
printf("---%-10d---\n", x);
printf("---%+10d---\n", x);
printf("---%010d---\n", x);
printf("---%hd---\n", x); // 转为short类型,丢失高位数据
printf("---%#x---\n", x);
printf("---%10.2f---\n", pi);
printf("---%.3f---\n", pi);
return 0;
}
执行结果:
---8815431---
---8815431---
---8815431---
---41501507---
---868347---
---868347---
---314.159271---
---3.141593e+02---
---314.159---
---314.159---
---1000---
=======================
--- 8815431---
---8815431 ---
--- +8815431---
---0008815431---
----31929---
---0x868347---
--- 314.16---
---314.159---
练习:
- 使用指数形式打印圆周率。
- 使用小数形式打印圆周率,小数点后保留2位有效数字。
- 使用小数形式打印圆周率,小数点后保留2位有效数字,共占据7个字符,数前空格补充
0。