几乎每一个程序都包含输入和输出。因为要进行运算,就必须给出数据,而运算的结果当然需要输出,没有输出的程序是没有意义的。当然,这里的输出并不仅仅是输出到屏幕,在涉及到输入输出时要注意以下几点:
(1) 输入输出的概念
输出:从计算机向外部输出设备输出数据。
输入:从输入设备向计算机输入数据。
(2)C语言本身不提供输入输出语句,输入和输出操作是由C函数库中的函数来实现。
(3)在使用输入输出函数时,要在程序文件的开头使用如下预编译指令:
#include<stdio.h>
一、格式输出函数——printf
1.printf函数的一般格式
printf(格式控制,输出表列)
格式控制:由双引号引起来的字符串,主要包括格式声明和普通字符。
输出表列:需要输出的数据,可以是常量、变量或表达式。
例:printf函数的具体例子:



2.常用格式字符
(1)d格式符。 用来输出一个有符号的十进制整数
%d:输出int型数据
%md(%-md):指定输出数据的域宽。如: printf(”%5d\n%5d\n”,12,-345);
%ld:输出long型数据
思考 以下程序的运行结果为?
#include <stdio.h>
void main( )
{printf("%10d %-10d\n",1,1);
printf("%10d %-10d\n",12,21);
printf("%10d %-10d\n",123,321);
printf("%10d %-10d\n",1234,4321);
return;}
(2)c格式符:用来输出一个字符
char ch='a';
printf("%c",ch);
(3)%s格式符: 用来输出一个字符串
printf("%s","CHINA");
(4)f格式符:用来输出实数,以小数形式输出
①不指定数据宽度和小数位数,用%f
printf("%f\n",1.0/3);
②指定数据宽度和小数位数。用%m.nf
printf("%10.2f\n",1.0/3);
③输出的数据向左对齐,用%-m.nf
例:输出实数时的有效位数。阅读程序,分析程序的运行结果。
#include <stdio.h>
void main( )
{ floata,b;
a=11111.11111;
b=22222.22222;
printf("%f\n",a+b);
printf("a+b=%10.2f\n",a+b);
return;
}
(5)e格式符:以指数形式输出实数
%e: 小数位数占6列,指数部分占5列,小数点前必须有且只有1位非零数字
printf("%e",123.456);
输出:1.234560e+002
表4.1 printf函数的格式字符

表4.2 printf函数的附加格式字符(%-m.nf)

二、格式输入函数——scanf
1.scanf函数的一般形式
scanf(格式控制,地址表列)
格式控制:含义和printf函数相同,以%开始,以一个格式字符结束,还可以插入普通的字符,如:
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
地址列:该部分需要变量的地址,地址就是在变量名前加上地址操作符”&”。
【例】用scanf函数输入数据。
#include<stdio.h>
void main()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
}
程序运行时可以用空格或回车分隔数据,运行结果如下图的示;

注意:格式声明中可插入其他字符,输入时需对应。
思考:要使a、b、c的值分别为1、2、3,以下程序运行时,该如何输入数据。
#include<stdio.h>
void main()
{
int a,b,c;
scanf("a=%d,b=%d,c=%d",&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
}
2.使用scanf函数时应注意的问题
scanf("%f%f%f",a,b,c); 错
scanf("%f%f%f",&a,&b,&c); 对
3. 连续输入字符时,不以空格结束
#include<stdio.h>
void main()
{
char c1,c2,c3;
scanf("%c%c%c",&c1,&c2,&c3);
printf("c1=%c,c2=%c,c3=%c\n",c1,c2,c3);
}

三、字符数据的输入输出
1.用putchar函数输出一个字符
功能:从计算机向显示器输出一个字符
形式:
putchar(c)
2. 用getchar函数输入一个字符
功能:向计算机输入一个字符
形式:
c=getchar( )

