文档介绍:计算机及程序设计概述
输入输出
输入/输出
在C语言中,没有专门的输入输出语句,所有的输入/输出操作都是通过对标准的I/O库函数的调用实现
【例】计算给定了底和高的三角形面积
#include <>
main( )
{
int height=5; /*the height of the triangle */
int width=4; /* the width of the triangle
int area; /* area of the
puted) */
area=(width*height)/2;
}
2
输入/输出
输入/输出函数
输入是指从键盘接受用户输入数据,输出是指在屏幕上显示结果数据
在C的标准函数库中提供了多种输入/输出函数
例如:printf函数和scanf函数
提示
在调用标准输入/输出库函数时,在程序的开始处应有预编译命令:
#include <>或#include “”
3
数据输入
getchar函数
功能
从标准输入设备上(键盘)输入一个且只能是一个字符,并将该字符返回为函数的值
格式:getchar();
提示
只有在按“回车”键后输入的字符才有效
此函数只接受一个字符,而非一串字符
若输入 abcde,该函数也只接受第一个字符 a
getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量而是作为表达式的一部分
例:
#include <>
main()
{
int i;
i=getchar();
printf(“%c:%d\n”,i,i);
}
执行本程序时,按键A时
显示结果如下:A:65
4
数据输入
scanf函数
功能
该函数从标准输入设备(键盘)上将数据读到地址参数所指定的位置上
格式:scanf(format,addlist);
format规定数据的输入格式,必须由“”括起来,其内容包括格式说明和普通字符两部分
addlist必须与 format 参数中的类型说明相一致
在C语言中一个变量的地址可以通过&地址运算符得到
例如:int a,b; 则a,b的地址为&a,&b
5
数据输入
【例】
int a;
scanf(“%d”,&a);
含义:
按变量a在内存的地址将从外界
获取的值存入变量a所描述的存
储单元,变量a的地址在编译阶
段分配。
说明格式
输入变量地址
注意:
scanf()中各个变量要加地
址操作符,就是变量名前加“&”
地址操作符,这是容易忽视的一
个问题。如果忘记了在函数的每
个变量前面加&符号,可能会导致
程序甚至系统崩溃。
格式控制符串:由“”括起
的字符串。
6
数据输入
scanf函数
格式转换说明符
格式说明规定了输入项中的变量将以何种类型的数据格式被输入
形式:%[<修饰符>]<格式字>
可以指定输入数据的域宽,系统自动按域宽截取输入数据
例如:scanf(“%3d”,&a);/*按宽度3输入一个整数给变量a*/
字符*:*表示按规定格式输入但不赋予相应的变量,作用是跳过相应的数据
例如: scanf(“%d%*d%d”,&a,&b);
输入long型数据必须用%ld,输入double数据必须用%lf或%le
7
数据输入
scanf函数
输入方法
普通字符在输入时按原样输入
例如
scanf(“%d,%d;”,&a,&b);
/*输入:3,4<回车> */
问题:如果3 4 <回车> ?
scanf(“a=%d;b=%c;”,&a,&b);
/*输入是:a=3;b=a; */
a=3 ,而b的值不确定。这是因为格式
串中的逗号是普通字符,要照原样输入
8
数据输入
scanf函数
输入方法
按格式截取输入数据
例如:
scanf(“%d%4d”,&a,&b );
/*输入序列为:123 12345 (_表示空格)
则a=123 , b=1234*/
为什么?
虽然输入的是12345但%4d宽度为4位,截取前4位,即1234
9
数据输入
scanf函数
如果格式说明符之间包含其他字符,则输入时,必须在相应位置输入这些字符
如果格式说明符之间不包含其他字符,则输入数据时, 两个数据之间可以使用空格、tab键或回车键作为间隔
输入字符数据时,由于空格和转义字符都是有效字符,所以不能以空格作为间隔符
例如:scanf(“%d%c”,&a,&c);输入32< >a<ch> /*空格符作为输入数据被赋值给字符型变量c*/
不允许有精度输入
例如: scanf(“%”,&a);是错误的