前言概括
1 所谓输入输出是以计算机为主体而言的
2 本章介绍的是向标准输出设备显示器输出数据的语句
3 在C语言中,所有的数据输入、输出 都是由库函数完成的,因此都是函数语句
4 在使用C语言库函数时,要用编译命令#include将有关“头文件”包括到源文件中,使用标准输入输出库函数时要用到“stdio.h”文件,因此源文件开头由以下预编译指令
#include<stdio.h>或者#include"stdio.h"
stdio是standard input&output的意思标准的输入输出
5 考虑到printf和scanf函数使用频繁,系统允许在使用这两个函数时不需要加#include<stdio.h>或#include"stdio.h"
putchar
putchar函数是字符输出函数,功能是在显示器上输出单个字符
一般形式:putchar(字符变量)
例如: putchar('A');//输出大写字母A putchar(x);//输出字符变量x的值 putchar('\101')//也是输出字符A putchar('\n')//换行
对控制字符则执行控制功能,不在屏幕上显示(\n)
注意:在使用putchar前必须要用头文件包含命令#include<stdio.h>
#include<stdio.h> void main() { char a='B',b='o',c='k'; putchar(a);putchar(a);putchar(a); putchar(a);putchar(a);putchar(a); putchar('\n'); putchar(b); putchar(c); }
getchar
getchar函数的功能是从键盘上输入一个字符
一般形式:getchar();
通常把输入的字符赋予一个字符变量,构成赋值语句,如:
char c; c=getchar();
例如: #include<stdio.h> void main() { char c; printf("input a character \n"); c=getchar();//输入字符数据 putchar(c);//输出字符 }
printf
printf又叫格式输出函数,其关键最末的一个字母f即为”格式(format)之意“
功能就是按照用户指定的格式,把指定的数据显示道显示屏幕中
一般形式:printf(”格式控制字符串“,输出表列);
%d//十进制输出 %ld//十进制长整型输出 %c///字符型输出
例如: #include<stdio.h> void main() { int a=88,b=89; printf("%d,%d \n",a,b); printf("%d,%d \n",a,b); printf("%c,%c \n",a,b);//输出的是ascII码对应的值 printf("a=%d,b=%d \n",a,b); }
在printf里面有一个易错的理解:
使用printf函数还要注意一个问题,那就是输出表列中的求值顺序,不同的编译系统不一样相同,可以从左到右,也可以从右到左。turvbo C是按从右到左进行的
#include<stdio.h> void main() { int i=8; printf("%d\n%d\n%d\n%d\n%d\n%d\n%d\n",i,++i,--i,i++,i--,-i++,-i--); } //只有在printf中,++i,--i可以抵消,i++i--不可抵消,也就是说,第二个和第三个抵消掉了,我们在第四位算出是i=8,也就是说前面都是i,i,i //从右往左算
#include<stdio.h> void main() { int i = 8; printf(“%d\n”,++i); printf(“%d\n”,--i); printf(“%d\n”,i++); printf(“%d\n”,i--); printf(“%d\n”,-i++); printf(“%d\n”,-i--); }
格式字符串、精度问题
%d 十进制输出整数值 %o 八进制输出整数值 %x 十六进制输出整数值 %u 无符号数形式输出整数值 %c 输出字符值 %s 使出字符串 %f 输出十进制浮点数 %e 科学计数法输出浮点数 %g 等价于%f或%e,输出两者占位较短的
例如: #include<stdio.h> void main() { int a=15; float b=123.1234567; double c=12345678.1234567; char d='p'; printf("a=%d,%5d,%o,%x\n",a,a,a,a); //%5d表示输出五位占位的数,输出五位,在15前面有三个空格 printf("b=%f,%lf,%5.4lf,%e",b,b,b,b); //"%5.4lf"指定输出宽度为5,精度为4,由于实际长度超过5,故应该按实际位数输出 //%f和%if保留六位小数(最后一位小数会自动进行四舍五入的转换(不是十进制的四舍五入)) //为什么%f输出的是123.123459呢?是因为float是单精度,不是很准确,很容易计算错误,如果是double那么就不会出现四舍五入的错误了 //用flaot会出现精度问题,建议使用double printf("c=%lf,%f,%8.4lf\n",c,c,c); //c=12345678.123457,12345678.123457,12345678.1235 printf("d=%c,%8c\n",d,d); //d=p, p }