1、第 4 章 最简单的C程序设计,4.1 C语句概述,C语言的语句是用来向计算机系统发出操作指令。一个语句经编译后产生若干条机器指令。,C程序,C语句可以分为以下5类:(1) 控制语句(2) 表达式语句(3) 函数调用语句(4) 空语句(5) 复合语句,a=3;i+;,printf(Chinan);,;,t=a;a=b;b=t;,4. 3 数据输入输出在C语言中实现,C语言本身不提供输入输出语句,输入输出操作是由函数来实现的。 在C标准函数库中提供了一些输入输出函数,如:printf、scanf、 putchar、 getchar函数 在使用C语言库函数时,要用预编译命令#include将有关的
2、头文件包括到用户源程序文件中。,如命令: #include #includestdio.h,二者区别:用括住文件时,编译时系统到存放C库函数头文件所在的目录中寻找要包含的文件,这称为标准方式。用“ ”括住文件时,编译时系统先到用户当前目录中寻找要包含的文件,若找不到,则到存放C库函数头文件所在的目录中寻找要包含的文件。,4.4 字符数据的输入输出,一、字符输出函数 putchar函数,格式:putchar (输出项)作用:向终端输出一个字符。,二、字符输入函数 getchar函数,格式:getchar ( )作用:从终端输入一个字符。,例: #include main() char c1; c
3、1=B; putchar(c1); putchar(x42); putchar(c1+32); putchar(n); ,说明:输出项可以是一个字符变量或常量或表达式。,返回,#include main( )char c; c=getchar( ); putchar(c); ,说明:getchar函数没有参数,#include void main() char c1,c2; c1=getchar(); c2=getchar(); putchar(c1);putchar(c2);,问题:当输入两个字符a b运行结果:,连续使用getchar()问题,可选择下列两种方法之一解决:1.连续输入两个字
4、符,然后回车 ab2.程序中每输入一个字符之后, 增加一个getchar(),以吸收掉第一个空格。 #include stdio.hvoid main() char c1,c2; c1=getchar(); getchar(); c2=getchar(); putchar(c1);putchar(c2);,a,4.5 格式输入与输出,格式化输入输出函数是按指定的格式完成输入输出过程。一、格式输出函数 printf函数,格式:printf (格式控制,输出表列)作用:向终端输出若干个任意类型的数据。,二、格式输入函数 scanf函数,格式:scanf (格式控制,地址表列)作用:从终端输入若干个
5、任意类型的数据。,printf函数中的“格式控制”参数包括两种信息:格式说明:由%和格式字符组成。如%d,%f等 它的作用是将输出的数据转换为指定的格 式输出。普通字符:即需要原样输出的字符。printf函数中的“输出表列”参数:是需要输出的一些数据,可以是表达式。,printf 格式字符,main( ) int a=5; float b=67.52; char c=A; printf(a=%d, b=%f, c=%cn,a, b, c);,a=,5,b=,67.520000,c=,A,换行,当 printf 函数中的输出项有多个时,格式控制中的格式字符个数应与输出项个数相同,并按先后顺序一一
6、对应。,如: printf(%e,123.456);输出: 1.234560e+002,3位,6位,格式符u、o、x是以无符号形式输出整数#include void main() int a = -1; printf(%o,%u,%xn,a,a,a); 格式符e,printf 附加格式说明字符,#include void main( ) int a=5; float x=67.8564; long n=1234567; printf(%3dn,a); printf(%-10f , %8.2fn, x, x); printf(%ldn, n);,输出结果: 567.856400, 67.8612
7、34567,返回,scanf函数中的地址表列参数:可以是变量的地址,也可以是数组的首地址。取变量地址的运算符是,格式:scanf (格式控制,地址表列),注:1、当“格式控制”字符串中只有以%开头的格式字符时,输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键、Tab键隔开。,2、如果在“格式控制”字符串中还有其它字符,则在输入数据时应输入与这些字符相同的字符。例:scanf(“%d, %d”, 应输入:123, 456,3、可以指定输入数据所占的宽度,但不能规定精度。例:scanf(“%3d%2d”, 如果输入:12345,4、如果在%后有一个“*”附加说明符,表示跳过它指定的宽
8、度 例:scanf(“%2d %3d %2d”,&a,&b); 如果输入:1234567 ,5、对用“%c”格式输入字符时,空格和转义字符都作为有效的字符输入例:scanf(“%c %c %c”,&c1, &c2, &c3); 如果输入:a b c ,注:在输入数据进,遇到以下情况认为数据输入结束 遇到空格、按“回车”键或“Tab”键。 超过域宽 遇非法结束,例:scanf(“%d%c%f”,运行时:输入:1234a123.46,1、已有定义 int x; float y; 且执行scanf(%3d%f , 从第一列开始输入数据12345678 则 x 的值为 1 , y的值2。(注: 是空格
9、) 1 A) 12345 B) 123 C) 45 D)345 2 A)无定值 B) 45.000000 C) 678.000000 D) 123.000000,2、已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10, 20, A, B, 当从第一列开始输入数据时, 正确的数据输入方式是_ int a1,a2; char c1,c2; scanf(%d%d, A) 1020AB B) 10 20 AB C) 10 20 AB D) 10 20AB ,4.6 顺序结构程序设计举例,特点: 程序按语句从上到下的排列顺序依次执行,每条语句必须执行且只能执行一次,没有执行不到或执行多次的语句。,A,B,顺序结构传统流程图,顺序结构N-S流程图,A,B,例1:输入一个三位整数,然后反向输出。,解题思路 (如NS图) :,void main( ) int a, i, j, k; printf(“Please input:”); scanf(“%d”, ,#include main() float a,b,c,d,x1,x2,p,q; scanf(a=%f,b=%f,c=%f,