2009-7-27重庆工学院计算机科学与工程学院 基础教研室1
3
第 3章 顺序结构程序设计
3.1 结构化程序设计
3.2 算法
3.3 C语句概述
3.4 输入输出介绍
2009-7-27重庆工学院计算机科学与工程学院 基础教研室2
3.1 结构化程序设计什么叫程序设计?
使用计算机解决实际问题,通常是先要对问题进行 分析 并 建立数学模型,然后考虑 数据的组织方式和算法,并用某一种程序设计语言 编写程序,最后 调试 程序,
使之运行后能产生预期的结果。这个过程称为程序设计。
2009-7-27重庆工学院计算机科学与工程学院 基础教研室3
A
B
C
A B
条件Y N
3.1 结构化程序的基本结构入口出口
(a) 顺序结构 (b) 选择 (分支 )结构入口出口
2009-7-27重庆工学院计算机科学与工程学院 基础教研室4
3.1 结构化程序的基本结构入口出口
(c) 当型循环结构 (d) 直到型循环结构入口出口条件
A
Y
N A
条件
Y
N
2009-7-27重庆工学院计算机科学与工程学院 基础教研室5
3.2 算法
程序 =算法十数据结构 +程序设计方法 +语言工具
算法就是一种在有限的步骤内解决问题或完成任务的方法。
算法是程序设计的灵魂,数据结构是数据的组织形式,语言则是编程的工具。
2009-7-27重庆工学院计算机科学与工程学院 基础教研室6
3.2 算法算法的表示
自然语言表示:易理解和交流,容易产生二义性 。
伪码表示:用形式化语言描述算法的逻辑过程 。
程序流程图:用图形符号+文字说明来表示数据处理过程和步骤 。
N-S流程图:也称方框图 。
请自学 3.2算法 (P8~12),
掌握程序设计的基本算法
2009-7-27重庆工学院计算机科学与工程学院 基础教研室7
3.3 C语句的类型
控制语句:
流程控制,条件,循环辅助控制,break,continue,goto,return、
switch
表达式语句,一个表达式后跟一个“;”构成。
函数调用语句 属于表达式语句。
空语句,仅一个“;”构成。
复合语句,用,{ },括起来的一些语句。
2009-7-27重庆工学院计算机科学与工程学院 基础教研室8
3.4.1 格式输出函数 ——printf P14
基本形式是,
printf(“控制字符串,,输出项列表 );
功能,按规定的输出格式,把输出项依次输出到系统指定的缺省输出设备,通常为显示器。
输出项,可以是变量、常量、表达式;中间用,间隔
3.4 数据输入输出数据是程序处理的对象;输入输出操作是程序中不可缺少的部分,C中输入输出操作都 是通过函数调用实现的;
C提供了一个,标准 I/O库,。
2009-7-27重庆工学院计算机科学与工程学院 基础教研室9
%c 按字符型输出
%d 按带符号十进制整数输出
%u 按无符号整数输出
%f 按浮点型小数输出,float或 double
%o 按无符号八进制整数输出
%x 按无符号十六进制整数输出
%s 按字符串输出控制字符串 包括格式控制说明符和普通字符
1,格式控制说明 (表 3.1) P15
% 字符
2009-7-27重庆工学院计算机科学与工程学院 基础教研室10
使用修饰符,可以控制输出的宽度、精度、小数位数、对齐方式等。 例如:
(1) 字段宽度
%6d 表示以字段宽度为 6个字节显示一个整数。
设 i=123; printf(”%6d\n”,i); 输出,123
printf(”%06d\n”,i); 输出,000123
设 x=1234.567
printf(”%9.3f\n”,x); 输出,?1234.567
(2) - 不用 -为右对齐,用 -为左对齐
printf(”%-9.3f\n”,x); 输出,1234.567?
(3)字符 l
%ld
2009-7-27重庆工学院计算机科学与工程学院 基础教研室11
(4) 字符 *
#include <stdio.h>
void main()
{
int i=123,w=12.3456; float x=12.3456;
printf(”%*d\n”,5,i); //输出,123
printf(”%*d\n”,w,i); //输出,以 w宽度显示 i
printf(”%*.*f\n”,7,2,x); //输出,1234.56
}
2009-7-27重庆工学院计算机科学与工程学院 基础教研室12
2,普通字符,原样输出的字符可打印字符,直接写出字符不可打印字符,使用转义字符 \n,\t,\a
例如,m=3; n=12;
printf(”num1=%d \t num2=%d\n”,m,n);
显示,num1=3__ num2=12
printf(”%f%%\n”,95.6);
显示,95.6%
2009-7-27重庆工学院计算机科学与工程学院 基础教研室13
格式输入函数 ——scanf
格式,scanf(”控制字符串,,输入项 地址 列表 );
功能:从键盘输入数据,按指定的输入格式把数据赋给相应的输入项。
注意,接收数据的变量必须用其 地址 表示,
格式字符,与输入的表示方法相似,注意不同点。
普通字符,原样输入
2009-7-27重庆工学院计算机科学与工程学院 基础教研室14
如,用以下语句使 a=123,b=45,c=78,哪种输入方法正确?
scanf(“%d%d%d”,&a,&b,&c);
scanf(“%3d%2d%d”,&a,&b,&c);
scanf(“%d,%d,%d”,&a,&b,&c);
1234578?
123 45 78?
123?
45?
78?
123,45,78?
在程序执行过程中输入 数值 数据时,以下情况认为该 数据结束,
遇,Space”,或遇,Enter”,或遇,Tab”
达到指定的字段宽度
有非法输入
2009-7-27重庆工学院计算机科学与工程学院 基础教研室15
#include <stdio.h>
void main()
{
int a; char b; float c;
scanf(“%d%c%f”,&a,&b,&c);
printf (“%d,%c,%f\n”,a,b,c);
}
运行时输入,
① 20 65 234.896?
② 20?
65 234.896?
③ 20 65?
234.896
结论,不能通过 ASCII码值输入字符 !

运行时输入
① A234.896?
② 20A?
234.896?
③ 20?
A234.896?╳
2009-7-27重庆工学院计算机科学与工程学院 基础教研室16
3.字符 *
输入时,用于跳过其相应的数据,
scanf(”%d%d”,&i,&j);
输入 34 45 时,i为 34 j为 45
scanf(”%*d%d”,&i,&j);
输入 34 45 时,i为 45
以下输入语句是否正确?
scanf(“%d”,i);
scanf(“%d\n”,&i);
scanf(“%5.3f”,&f);



2009-7-27重庆工学院计算机科学与工程学院 基础教研室17
字符输出函数 ——putchar
功能,将一个字符输出在显示屏上,显示参数可以是字符变量、字符常量、字符 ASCII码。
putchar(?A?); 显示大写字母 A
putchar(97); 显示小写字母 a
如果,c=?!?;
putchar(c) ; 显示字符 !
输入输出函数被包含在库函数,stdio.h”中,使用这些函数时,要使用预处理命令。
#include,stdio.h” 但 printf 和 scanf 可缺省
2009-7-27重庆工学院计算机科学与工程学院 基础教研室18
例 3.5 输入两个字符并回显这两个字符。
#include <stdio.h>
void main()
{
char a,b;
a=getchar();
b=getchar();
putchar(a);
putchar(b);
}
2009-7-27重庆工学院计算机科学与工程学院 基础教研室19
字符输入函数 ——getchar
格式,getchar( )
功能,从键盘上输入一个可打印字符,函数的返回值为该字符的 ASCII码。
如,
c=getchar(); 无参数
2009-7-27重庆工学院计算机科学与工程学院 基础教研室20
例:输入一个字符,输出其前导字符,字符和后续字符
#include,stdio.h”
void main( )
{ char c; int c1,c2;
c=getchar( );
c1=c-1; c2=c+1;
printf(”%c%c%c\n”,c1,c,c2);
printf(”%d%d%d\n”,c1,c,c2);
}
输入,B
输出,ABC
65 66 67
2009-7-27重庆工学院计算机科学与工程学院 基础教研室21
例 3.6 已知圆的半径为 2,编程计算圆的周长和圆的面积。
算法:
(1) 说明实型变量 r为半径,l为圆周长,s
为圆面积;
(2) 调用格式输入函数输入半径 r;
(3) 分别利用公式:计算;
(4) 调用格式输出函数输出结果。
2009-7-27重庆工学院计算机科学与工程学院 基础教研室22
编程的一般方法:
#include,stdio.h”
void main( )
{
}
定义变量输入数据 (或赋值 )
处理数据输出数据
2009-7-27重庆工学院计算机科学与工程学院 基础教研室23
#include <stdio.h>
void main()
{
float pi,r,l,s;
pi=3.14159;
printf("Please input radius,\n"); /*输入提示 */
scanf("%f",&r); /*从键盘上输入半径,回车 */
l=2*pi*r;
s=pi*r*r;
printf("The circle length,l=%.2f\n",l); /*输出圆的周长 */
printf("The circle area,s=%.2f\n",s); /*输出圆的面积 */
}
2009-7-27重庆工学院计算机科学与工程学院 基础教研室24
例 数据交换。从键盘上输入两个数,交换值后再输出。
本题思路:
(1) int i,j ;
(2)输入两个数据 i,j ;
(3)交换 i,j的值?
(4)输出 i,j的值。
i,j交换值?
k=i; i=j; j=k; /* k暂存值 */
红烧肉
i
回锅肉
j
k
,k
1
2
3
2009-7-27重庆工学院计算机科学与工程学院 基础教研室25
#include <stdio.h>
void main()
{ int i,j,k;
clrscr(); //清屏
printf(“input i,j:\n”);
scanf("%d,%d",&i,&j);
printf("\n Before exchange,\n i=%d,j=%d\n",i,j);
k=i;
i=j;
j=k;
printf("\n Afer exchange,\n i=%d,j=%d\n",i,j);
}
2009-7-27重庆工学院计算机科学与工程学院 基础教研室26
第三章小结
1,了解结构化程序设计的方法
2,了解 c语句的分类和特点以及复合语勾在程序中的作用和特征
3,了解用流程图描述算法的方法
4,理解基本算法及其原理
5,掌握编写顺序结构程序设计的方法
6,掌握格式输入输出函数的使用
2009-7-27重庆工学院计算机科学与工程学院 基础教研室27
① 程序的输入输出功能是通过调用系统提供的标准库函数实现的。
② 利用 printf( )函数可以输出各种类型的数据,可以使用控制符按照需要方式显示输出信息。
③ 利用 scanf( )函数可以从键盘输入数据。也可以使用控制符按照需要方式输入信息。
④ 利用 getchar( )和 putchar( )函数可以输入或输出单个字符。
⑤ 除使用 scanf( ) 和 printf( )以外,要使用其他标准的 I/O库函数,必须在源程序前使用预处理命令,
#include,stdio.h”
2009-7-27重庆工学院计算机科学与工程学院 基础教研室28
Homework
独立完成课后习题:教材 P22,23
一,1~6 (做在书上 )
二,7~9 (做在作业本上 )
三,10 (选做 )
以上各题均上机操作验证结果