c语言中数据的输入与输出(一)
1.输出输出是以计算机为主机为主体而言的。从计算机向输出设备(显示器,打印机等)输出数据称为输出,从输入设备设备(如键盘,光盘。扫描机等)向计算机输入数据称为输入。
2.C语言本身不提供输入输出语句,输出和输入操作是由C标准函数库中的函数来实现的,例如printf和scanf函数,它们不是C语言提供的关键字,而只是库函数的名字。
要在程序文件的开头用预处理指令#include 把有关头文件放在本程序中。
#include指令还有一种形式,头文件不是用尖括号括起来的,而是用双撇号,如:
#include "stdio.h"
1.这两种#include 指令形式的区别是用尖括号形式(<stdio.h>)时,编译系统从存放C编译系统的子目录中去找所要包含的文件(如stdio.h),这称为标准方式。
如果使用双撇号"stdio.h" ,在编译时,编译系统先在用户当前目录(一般是用户存放源程序文件的子目录)中寻找要包含的文件,若找不到,再按标准方式查找。
1.使用printf函数输出数据
在C程序中来实现输入和输出的主要是printf函数和scanf函数。这两个函数是格式输入输出函数。用这两个函数时,必须指定输入输出数据的形式,即根据数据的不同类型指定不同的类型。
1.1 printf的一般格式
printf(格式控制,输出表列)
例如:printf("%d,%c\n",i,c);
(1)“格式控制” 是用双撇号括起来的一个字符串,它包含两个信息:
①格式声明,格式声明由"%“和格式字符组成,如%d,%f等,作用是将输出的数据类型转化为指定的格式后输出。格式声明总是由”%"字符开始的。
②普通字符。普通字符即需要在输出时原样输出的字符,例如上面printf函数中双撇号内的逗号,空格和换行符,也可以包括其他字符。
(2).输出表列是程序需要输出的一些数据,可以是常量、变量或表达式。
printf函数的具体例子:
printf(" %d %d \n" , a,b );
格式声明 输出表列
printf(" a=%d b=%d \n", a, b ) ;
格式声明 输出表列
2.格式字符
(1). d格式字符,用来输出一个有符号的十进制整数
在输出时,按十进制整型数据的实际长度输出,正数的符号不输出,并且可以在格式声明中指定输出数据的域宽,如用“%5d”,指定输出数据占5列。输出的数据在此区域的右侧,如:
printf("%5d\n%5d\n",12,-354);
输出结果为:
12 (12前面有三个空格)
-345 (-345前面有1个空格)
若输出long (长整形数据),在格式符d前面加字母l(l代表Long),即"%ld"。若输出long long(双长整数型)数据,在格式符d前面加两个字母ll。即 “%lld”.
(2).C格式符。用来输出一个字符,例如:
char ch='a';
printf("%c",ch);
运行时输出
a
也可以指定域宽,如:
printf("%5c",ch);
运行时输出:
a (a前面有四个空格)
c语言中数据的输入与输出
1.输出输出是以计算机为主机为主体而言的。从计算机向输出设备(显示器,打印机等)输出数据称为输出,从输入设备设备(如键盘,光盘。扫描机等)向计算机输入数据称为输入。
2.C语言本身不提供输入输出语句,输出和输入操作是由C标准函数库中的函数来实现的,例如printf和scanf函数,它们不是C语言提供的关键字,而只是库函数的名字。
要在程序文件的开头用预处理指令#include 把有关头文件放在本程序中。
#include指令还有一种形式,头文件不是用尖括号括起来的,而是用双撇号,如:
#include "stdio.h"
1.这两种#include 指令形式的区别是用尖括号形式(<stdio.h>)时,编译系统从存放C编译系统的子目录中去找所要包含的文件(如stdio.h),这称为标准方式。
如果使用双撇号"stdio.h" ,在编译时,编译系统先在用户当前目录(一般是用户存放源程序文件的子目录)中寻找要包含的文件,若找不到,再按标准方式查找。
1.使用printf函数输出数据
在C程序中来实现输入和输出的主要是printf函数和scanf函数。这两个函数是格式输入输出函数。用这两个函数时,必须指定输入输出数据的形式,即根据数据的不同类型指定不同的类型。
1.1 printf的一般格式
printf(格式控制,输出表列)
例如:printf("%d,%c\n",i,c);
(1)“格式控制” 是用双撇号括起来的一个字符串,它包含两个信息:
①格式声明,格式声明由"%“和格式字符组成,如%d,%f等,作用是将输出的数据类型转化为指定的格式后输出。格式声明总是由”%"字符开始的。
②普通字符。普通字符即需要在输出时原样输出的字符,例如上面printf函数中双撇号内的逗号,空格和换行符,也可以包括其他字符。
(2).输出表列是程序需要输出的一些数据,可以是常量、变量或表达式。
printf函数的具体例子:
printf(" %d %d \n" , a,b );
格式声明 输出表列
printf(" a=%d b=%d \n", a, b ) ;
格式声明 输出表列
2.格式字符
(1). d格式字符,用来输出一个有符号的十进制整数
在输出时,按十进制整型数据的实际长度输出,正数的符号不输出,并且可以在格式声明中指定输出数据的域宽,如用“%5d”,指定输出数据占5列。输出的数据在此区域的右侧,如:
printf("%5d\n%5d\n",12,-354);
输出结果为:
12 (12前面有三个空格)
-345 (-345前面有1个空格)
若输出long (长整形数据),在格式符d前面加字母l(l代表Long),即"%ld"。若输出long long(双长整数型)数据,在格式符d前面加两个字母ll。即 “%lld”.
(2).C格式符。用来输出一个字符,例如:
char ch='a';
printf("%c",ch);
运行时输出
a
也可以指定域宽,如:
printf("%5c",ch);
运行时输出:
a (a前面有四个空格)
一个整数,如果在0~127范围内的话,也可以用"%c"使之按字符形式输出,在输出前,系统会将该整数作为ASCII码转换成相应的字符,如:
short a =121;
pritnf("%c",a);
输出字符y,如果整数比较大,则把它的最后一个字节的信息以字符形式输出,如:
int a=377;
printf("%c",a);
也输出字符y,因为使用%c格式输出时,只考虑一个字节,存放a的存储单元中最后一个字节中的信息是01111001,即十进制的121,它是"y"的ASICC码。
(3).s格式符 用来输出一个字符串。如:
printf("%s",“CHINA”);
执行此函数时在显示屏上输出字符串 “CHINA”(不包括双引号)。
(4). f格式符。用来输出实数(包括单精度,双精度,长双精度),以小数点形式输出,有几种用法:
①基本型,用%f
不指定输出数据的长度,由系统根据数据的实际情况决定数据所占的列数。系统处理的方法一般是:实数中的整数部分全部输出,小数部分输出6位。
②指定数据宽度和小数位数,用%m.nf,例如想要输出双精度变量a的15位小数,可以采用此方法:
#include <stdio.h>
int main()
{
double a=1.0;
printf("%20.15f\n",a/3);
return 0;
}
需要注意的是,在用%f输出时要注意数据本身能提供的有效数字,如float型数据的存储单元只能保证6位有效数字,double型数据能保证15位有效数字,不要以为计算机输出的所有数学都是绝对精确的。
③输出的数据向左看齐,用%-m,nf
在m.n的前面加一个负号,其作用于%m.nf形式作用基本相同,但当数据长度不超过m时,数据向左靠,右端补空格,如:
printf("%-25.15f,%25.15f\n",a,a);
执行结果:
3333.333333333333500 3333.333333333333500
(5).e格式符
用格式符声明%e指定以指数形式输出实数,如果不指定输出数据所占的宽度和数字部分的小数位数,许多C编译器系统会自动给出数字部分的小数位数为6位,指数占5列。例如:
printf("%e",123.456);
输出如下:
1. 234560e+002
234560(六列) e+002(五列)
(6).其他格式符
①i格式符。作用与d格式符相同,按十进制整形数据的实际长度输出,一般习惯使用%d而少用%i。
②o格式符。以八进制整数输出,将内存单元的各位的值按八进制形式输出,因此输出的数值不带符号,即将符号位也一起作为八进制的一部分输出。
③x格式符,以十六进制形式输出整数
int a== -1;
printf("%d\t%o\t%x\t",a,a,a);
输出结果为
-1 37777777777 ffffffff
④u格式符。用来输出无符号(unsigned)型数据,以十进制整数形式输出
⑤g格式符。用来输出浮点数,系统自动选f格式或e格式输出,选择其中长度较短的格式,不输出无意义的0,如:
double a=12345678954321;
printf("%f\t%e\t%g\n",a,a,a);
输出结果为:
12345678954321.000000 1.234568e+013 1.23457e+013
综合上面的介绍,格式声明的一般形式可以表示为
% 附加符号 格式符号
说明:
1.printf函数输出时,务必注意输出对象的类型应于上述格式说明匹配,否则将会出现错误。
2.除了X,E,G外,其他格式字符必须用小写字母,如%d不能写成%D
3.可以在printf函数中的格式控制字符串内包含转义字符,如\n,\t,\b,\r,\f和\377等。
4.一个格式声明以"%“为开头,中间可以插入附加格式字符(也称修饰符),例如:
printf(“c=%cf=%fs=%s”,c,f,s);
5.如果想输出字符”%",应该在“格式控制字符串”中连续两个"%“表示,如:
printf(”%f%%\n",1.0/3);
下一节复习scanf函数,冲冲冲