一、C语句分类
控制语句、函数调用语句、表达式语句、空语句、复合语句。
二、数据的输入输出
输入输出是对于ram(内存)而言的。其本质上是通过函数来实现。函数需要从系统库函数中调用,在使用系统库函数时,要用预编译命令"#include"将有关的头文件包括到用户源文件中。
输出设备如显示器、打印机等;输入设备如键盘、鼠标、扫描仪等。
以下将详细介绍字符输入输出函数putchar、getchar及格式输入输出函数printf、scanf。
三、字符数据的输入输出
1、putchar函数
表示输出单个字符。函数原型为: int putchar(int c);
在之前变量赋初值那篇文章中也曾简单提到过函数的调用,函数调用的表达式与返回值的类型一致。
则putchar函数调用:putchar(c);它输出字符变量c的值,c为字符型变量或整型变量,可从ASCII码表中查询具体序号,也可直接写入字符常量。
例如:65对应ASCII码表中的'A',10对应ASCII码表中的'\n'。最终输出A +换行。
2、getchar函数
表示输入单个字符。函数原型为: int getchar(void);
函数调用: getchar()
getchar函数有缓冲区(队列的数据结构),遵循FIFO先进先出。这样可以使高速设备不用一直等待低速设备响应,不占用其他设备的使用,避免资源浪费。
例如:用getchar函数输入一个字符,输出一个比其小32的字符。
四、格式输入与输出
1、printf函数
输出若干任意类型的数据。函数原型为: int printf(const char * format,...);其中const char *类型表示用双引号引起来的字符串常量;"..."表示变参,可传可不传,可传任意数据。
函数调用: printf(格式控制,输出表列);
格式控制(即占位符)是由下一个参数类型决定,输出表列中的参数也将按照占位符的格式打印结果。且占位符与输出列表中的参数个数保持一致。
<返回值为数据个数。>
格式字符有以下几种:
(1)整型
%d %i 按有符号十进制整型输出; %ld 长整型; %md 表示按一定的位数输出,m为指定输出位数,若m为正则在数据前补空格,为负在数据后补空格。
%o(八进制) %u(十进制) %x(小写十六进制) %X(大写十六进制)按无符号整型输出。
(2)浮点型
%e %E 按科学计数法表示的浮点型输出;
%f %F 按十进制表示的浮点型输出。小数点后均保留6位。
%m.nf 其中m为包括小数点本身的整数位数,n为小数点后的位数;当m小于实际的位数时,以实际位数输出。
%g %G 按科学计数法或者十进制表示浮点型都行,谁短输出谁。
(3)字符型
%c 按字符对应的ASCII码序号输出;
%s 指const char *类型,即用双引号引起来的字符串常量。
(4)%p 万能指针void * pointer;
%% 打印%号。
2、scanf函数
输入若干数据。函数原型为: int scanf(const char * format,...);
函数调用: scanf(格式控制,地址表列);
一般无法再被调函数中修改主调函数,但由于scanf函数的需求,因此在地址表列中应用取地址&,进行指针传参,来实现在被调函数中修改主调函数。
当无&时,scanf函数会认为地址表列中参数的地址为随机数,当写入程序后,在运行阶段,程序崩溃。
除此之外,取地址&无法推断变量为几个字节,一般默认4字节。要解决该问题,则需要在输入double型时,用%lf格式字符,不用%f;输入float型时,用%f,不用%lf。