格式化输出
- 函数格式:printf(格式控制串, 输出序列)
- 参数说明:
1)格式控制串由双引号括起来,由“%”和格式符以继普通字符组成
2)输出序列是需要输出的数据,可以是常量、变量或表达式
3)输出的参数必须与格式控制符中的格式说明相匹配
例如:
- 格式控制符
格式控制符 作用 例子 d 以十进制有符号形式输出整型 int a = 10:
printf("%d",a);o 以八进制无符号形式输出整型 int a = 10:
printf("%o",a);x 以十六进制无符号形式输出整型 int a = 10:
printf("%x",a);u 以十进制无符号形式输出整型 int a = -10:
printf("%u",a);f 以小数形式输出浮点型
输出默认保留小数6位float a = -10.3:
printf("%f",a);e 以指数形式输出浮点型
输出默认保留小数6位float a = -10.3:
printf("%e",a);c 以字符形式输出一个字符 char a = ‘A’:
printf("%c",a);s 以字符形式输出一个字符串 字符串的定义放在数组中讲 - 格式修饰符
一般格式:%[-][m][.][n][l]格式符
最常用的是 m.n 的形式格式修饰符 作用 - 当数据的宽度小于显示宽度时,数据左对齐,右方补空格 m 输出数据占m个字符位,若实际数据的宽度大于m,按实际输出;实际数据宽度小于m,数据右对齐,左方补空格 n 输出数据占n位小数 m.n 输出序列占m列n位小数 l 用于long或double类型数据
例如:%6.2f 表示占六列,保留两位小数,右对齐
交互式输入
- 函数格式:scanf(格式控制串, 地址表列)
- 参数说明
1)格式控制串由双引号括起来,由“%”和格式符以继普通字符组成
2)地址表列由若干个地址组成,可以是变量地址或字符串首地址 - 格式控制符
格式控制符 作用 d 输入十进制带符号整型 f,e 输入float类型 c 输入单个字符 s 输入一个字符串 - 分割输入多个数据的方法
1)一个或多个空格
2)回车、tab
3)达到输入位宽
4)遇到非法字符 - 使用实例
运行结果:#include <stdio.h> int main(){ int a,b; float c; // 输入的时候用空格或回车分割输入数据 scanf("%d%d%f",&a,&b,&c); printf("%d %d %f\n",a,b,c); // 输入的时候指定输入数据的位宽分割输入数据 scanf("%3d%3d",&a,&b); printf("a=%d,b=%d\n",a,b); return 0;}
- 错误分析
单个字符的输入和输出
- getchar函数:从键盘输入单个字符
函数从屏幕读取下一个可用的字符,并把它返回为一个整数。
这个函数在同一个时间内只会读取一个单一的字符。
可以在循环内使用这个方法,以便从屏幕上读取多个字符。
以回车符 ‘\n’ 结束字符的输入,输入的字符(包括回车)都先放在输入缓冲区。
然后在赋值的时候,从输入缓冲区读取一个字符赋值。
例如:
结果如下:#include <stdio.h> int main( ) { int c,c1; printf( "Enter a value :"); c = getchar( ); printf( "\nYou entered: "); printf("%c",c); c1 = getchar(); // 从缓冲区再取一个 printf( "\nNext is: "); printf("%c",c1); return 0; }
- putchar函数:向键盘输出单个字符
函数把字符输出到屏幕上,并返回相同的字符。
这个函数在同一个时间内只会输出一个单一的字符。
可以在循环内使用这个方法,以便在屏幕上输出多个字符。
例如:
结果如下:#include <stdio.h> int main( ) { int c,c1; printf( "Enter a value :"); c = getchar( ); printf( "\nYou entered: "); while(c != '\n'){ putchar(c); c = getchar( ); } return 0; }
- 使用getchar要注意的问题
使用getchar函数时,输入的数据先放在输入缓冲区,直到键入回车符或文件结束符EOF时,才认为输入结束。
此时函数才开始从缓冲队列读取一个字符。
前面函数没有读取走的数据仍在缓冲队列中,会被下一个getchar函数读取。
例子1:
结果如下:#include <stdio.h> int main( ) { char c1,c2; c1 = getchar(); // 读取一个字符 getchar(); // 读取缓冲队列中剩下的回车符\n printf("c1=%c\n",c1); c2 = getchar(); // 读取一个字符 getchar(); // 读取缓冲队列中剩下的回车符\n printf("c2=%c\n",c2); return 0; }
例子2:体会这个程序
分别尝试 输入a+回车;ab+回车
把getchar的注释取消掉再试试输入同上两个#include <stdio.h> int main( ) { int a; char b; scanf("%d",&a); //getchar(); scanf("%c",&b); printf("%d %c",a,b); return 0; }
字符串的输入输出
C语言中字符串的是以数组的形式存储的。
因为涉及到数组的知识,所以放在数组中记录。
字符串的输入和输出涉及 gets() 和 puts() 函数