您的当前位置:首页第3章 顺序结构程序结构

第3章 顺序结构程序结构

2023-01-17 来源:乌哈旅游
第3章 顺序结构程序设计

章节分析:

本章所介绍的语句是按在程序中出现的顺序逐条执行,由这样的语句构成的程序结构称为顺序结构。主要实现的功能是给变量赋值及数据的输入与输出。 教学内容:

1、掌握数据输入、输出函数的调用规则和格式控制字符的正确使用; 2、熟练掌握putchar、getchar、printf、scanf函数及使用方法。 教学重点:

1、字符的输入与输出 2、格式化输入与输出 教学难点

1、掌握数据的输入/输出方法,学会输入/输出函数的使用方法。 2、掌握scanf和printf函数的格式控制问题 课时分配:4课时 导入新课:

回顾旧课,复习上节课内容。

C语言的输入输出由函数来实现,它提供了多种输入输出函数,使输入输出灵活、多样、方便、功能强。标准I/O函数库中有一些公用的信息写在头文件stdio.h中,因此要使用标准I/O函数库中的I/O函数时,一般应在程序开头先写预编译命令:#include “stdio.h”。以便把I/O函数要使用的信息包含到程序中来。

第一讲

一、字符输入与输出 (一)字符的输出 putchar函数

1.功能:将一个字符输出到标准输出设备。 2.格式:putchar(c) 3.使用要点

(1)putchar(c)中的c可以是字符型或整型数据。 例如:

1

c=98; putchar(c) putchar(‘a’)

输出字符b

输出字符a

putchar(0x41) 输出字符A

(2)使用输出函数需要调用c的标准I/O库函数,故需用预编译命令:

#include

将stdio.h文件包含在用户源程序文件中。

(3)putchar()也可以输出一个控制字符或其它转义字符。

如:putchar(‘\\n’) 输出一个换行符 putchar(‘\\101’) 输出字符A

输出字符单引号’

putchar(‘\\’’) 4.举例

【例3.1】输出单个字符。 #include main() { chara,b,c;

a=‘B’;b=‘o’;c=‘y’; putchar(a);putchar(b);putchar(c); } 运行结果: Boy

(二)字符的输入 getchar函数

1.功能:从标准输入设备上读入一个字符。 2.格式:getchar( ) 3.使用要点

(1)getchar( )函数本身没有参数,其函数值就是从输入设备 得到的一个字符。

(2)由getchar( )获得的字符可以赋值给一个字符或整型变 量,也可以作为表达式的一部分。如:

2

c=getchar(a); putchar(getchar( )); printf(“%c”, getchar( ));

(3)使用getchar( )函数要调用c的标准I/O库函数,应在程序 首部加上:#include 。 4.举例

【例3.2】输入单个字符。 #include main() { char c; c=getchar(); putchar(c);

printf(“%c\\n%d\\n”,c,c); } 输入数据: a

运行结果: a 97

二、格式化输入与输出 (一)格式化输出printf函数

1.功能:按指定的格式向终端输出若干任意类型的数据。 2.格式:printf(格式控制,输出表列) 如:printf(“x=%d”,x) 3.使用要点

(1)格式控制部分的用法:

① 格式控制字符是用双引号括起来的字符串,用来确定确定输出项的格式和需要原样输出的字符串。其组成形式为:

3

“普通字符串%+0m.nl格式控制字符” 其中:

输出数据项的顺序一般按从左至右的顺序输出。格式控制中的普通字符串,照原样输出;

例如:printf(“a= %d,b= %d”,a,b); %:为C语言规定的标记符;

+ :指定输出数据的对齐方式:+为右对齐(可缺省);-为左对齐; 0:输出数值时指定左边不使用的空位置自动填0; 关于m .n与l的说明:

表3.1 printf的附加格式说明字符

表3.2格式控制字符用于指定数据的输出形式,可以包含转义字符;

用两个连续的“%%”表示输出字符“%” ② 举例

printf(“%4d,%4d”,a,b); 若a=123,b=12345

4

运行结果: ︺123,12345

如果数据位数小于m,则左端补空格,若大于m,则按实际输出。 long a=135790; printf(“%ld”,a);

长整型数据应采用%ld格式输出,若采用%d格式则出错。 int a=-1;

printf(“%d,%o”,a,a); 运行结果: -1,177777

对于八进制输出不会输出带符号的数据,长整型数据用%lo格式输出,也可以指定宽度。如:printf(“%lo,%8o”,a,a); int a=-1;

printf(“%x,%o,%d”,a,a,a); 运行结果: ffff,177777,-1

同样,也可以用%lx输出长整型数据或指出输出宽度, 如:printf(“%lx,%12x”,a,a)

(2)输出表列:可以是合法的常量、变量和表达式,输出 项表中的个输出项之间要用“,”分隔。

(3)当格式符个数少于输出项时,多余的输出项不予输出。 若格式符多于输出项时,各系统的处理有所不同,TC对于缺 少的项将输出不定值。

(4)每次调用printf函数之后,将得到一个整型的函数值, 该值等于正常输出的字符个数。 4.举例

【例3.3】无符号数据的输出。 #include main()

5

{ unsignedint a=65535; int b=-2;

printf(“a=%d,%o,%x,%u\\n”,a,a,a,a); printf(“b=%d,%x,%o,%u\\n”,b,b,b,b); } 运行结果:

a=-1,177777,ffff,65535 b=-2,fffe,177776,65534 【例3.4】字符数据的输出。 main()

{ char c=‘a’; int k=97;

printf(“%c,%d\\n”,c,c); printf(“%c,%d\\n”,k,k); } 运行结果: a,97 a,97

【例3.5】实型数据的输出。 #include main()

{ floatx,y,z;doublea,b;

x=11111.111,y=22222.222,z=123.456; a=1111111111111.111111111; b=2222222222222.222222222 printf(“%f\\n%f\\n”,x+y,a+b); printf(“%10f,%10.2f\\n”,z,z); printf(“%e\\n”,z); printf(“%g\\n”,z);}

6

运行结果:

33333.333984 3333333333333.333010 123.456001,︺︺︺︺123.46 1.234560e+02 123.456︺︺︺

(二)数据的输入scanf函数

1.功能:将从终端(键盘)输入的数据传送给对应的变量。 2.格式:scanf(格式控制,输入项地址表) 说明:

(1)格式控制的含义同printf函数,“%格式控制字符” (2)输入项地址表由若干个地址组成,代表每一个变量在 内存的地址。表示为:&变量(或数组与字符串的首地址) (3)每次调用scanf( )函数后,函数将得到一个整型函数 值,此值等于正常输入数据的个数 3.使用要点

(1)格式符的个数必须与输入项的个数相等,数据类型必须从左至右一一对应 (2)scanf( )函数中常用的格式符有:

表3.3 scanf的格式字符

表4.4 scanf的附加格式说明字符

7

(3)用户可以指定输入数据的域宽,系统将自动按此域宽截取所读入的数据。 如:scanf(“%3d%3d”,&a,&b);

输入123456 系统自动将123赋值给a,将456赋值给b. (4)输入实型数据时,用户不能规定小数点后的位数。 scanf(“%7.2f”,&a);是错误的.

(5)输入实型数据时,可以不带小数点,即按整型数方式输入。 4.举例

【例3.6】用scanf函数输入数据。 #include main() { inta,b,c; charx,y,z;

scanf(“%c%c%c”,&x,&y,&z); scanf(“%d%d%d”,&a,&b,&c); printf(“%c%c%c”,x,y,z); printf(“%d%d%d”,a,b,c); }

三、应用举例

【实例1】输入三角形的三边长,求三角形的面积。 #include main() {

floata,b,c,s,area;

scanf(“%f,%f,%f”,&a,&b,&c);

8

s=1.0/2*(a+b+c);

area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\\n”,a,b,c,s); printf(“area=%7.2f\\n”,area); } 程序分析:

程序中第7行中sqrt( )是求平方根的函数。由于要调用数学函 数库的函数,必须在程序的开头加一条#include命令,把头 文件“math.h”包含到程序中来。请注意,以后凡是在程序中要 用到数学函数库中的函数,都应当“包含”math.h头文件。 运行情况如下: 输入数据: 3,4,6 运行结果:

a= 3.00, b= 4.00, c= 6.00 s= 6.50 area= 5.33

【实例2】从键盘输入大写 字母,要求改用小写字母输出。 程序如下: #include \"stdio.h\" main()

{ char c1,c2; }

输入数据:A 运行结果:

9

c1=getchar();

printf(\"%c,%d\\n\ c2=c1+32;

printf(\"%c,%d\\n\

A,65

a,97 程序分析:

用getchar函数得到从键盘上输入的大写字母‘A’,赋给字符变量c1。将c1分别用字符形式(‘A’)和整数形式(65)输出。再经过运算得到小写字母‘a’,赋给字符变量c2,将c2分别用字符形式(‘a’)和整数形式(97)输出。 作业:

1、 若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274, n=128765, c1=‘a’,c2=‘b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。

2、用scanf下面的函数输入数据,使a=3,b=7,x=8.5,y=71.82, c1=ˊAˊ,c2=ˊaˊ,问在键盘上如何输入? main( ) {

int a,b;float x,y;char c1c2; scanf(\"a=%d_b=%d\",&a,&b); scanf(\"_x=%f_y=%e\,&y); scanf(\"_c1=%c_c2=%c\",&c1,&c2); }

3、 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 小结

本章主要讲解数据是输入输出及顺序结构,在程序设计中,对数据的一种重要的操作是输入输出。没有输出的程序是没有用的;没有输入的程序是缺乏灵活性的,因为程序在多次运行时,用到的数据可能是不同的。在程序运行时,由用户临时输入所需的数据,可以提高程序的通用性和灵活性。

10

因篇幅问题不能全部显示,请点此查看更多更全内容