1、.C程序源程序文件1源程序文件2源程序文件n预编译命令函数1函数n说明部分执行部分(语句)结构化程序设计方法结构化程序设计方法1 1、含义:、含义:它要求程序设计者按照一定的结构形式来设计和编写程序。它要求程序设计者按照一定的结构形式来设计和编写程序。2 2、引入结构化程序设计方法的原因:、引入结构化程序设计方法的原因:使程序易读、易理解、易修改,以提高程序设计和使程序易读、易理解、易修改,以提高程序设计和维护工作的效率。维护工作的效率。3 3、结构化程序的三种基本结构:、结构化程序的三种基本结构:顺序结构、选择结构、循环结构。顺序结构、选择结构、循环结构。4 4、结构化程序设计的方法:、结构
2、化程序设计的方法:自顶向下、逐步精化。自顶向下、逐步精化。例:求一组正数中的最大者。例:求一组正数中的最大者。求一组正数中的最大者求一组正数中的最大者找出这些数中的找出这些数中的最大的数最大的数打印最大数打印最大数使使max=0逐个读入数据,逐个读入数据,把最大者送到把最大者送到max中中ABABTFBBAAPPFTTFPA当P为真APAFT直到P为假A格格式式字字符符 说说明明d d以以带带符符号号的的十十进进制制形形式式输输出出整整数数o o以以无无符符号号的的八八进进制制形形式式输输出出整整数数x x以以无无符符号号的的十十六六进进制制形形式式输输出出整整数数u u以以无无符符号号的的十
3、十进进制制形形式式输输出出整整数数c c以以字字符符形形式式输输出出一一个个字字符符s s输输出出字字符符串串f f以以小小数数形形式式输输出出单单,双双精精度度数数,隐隐含含输输出出六六位位小小数数e e以以标标准准指指数数形形式式输输出出单单,双双精精度度数数,数数字字部部分分六六位位小小数数g g选选用用%f f 或或%e e 格格式式中中输输出出宽宽度度较较短短的的一一种种格格式式输输出出,不不输输出出无无意意义义的的 0 0字字符符说说明明字字母母 l l用用于于长长整整型型整整数数,可可加加在在格格式式符符 d d,o o,x x,u u 前前面面一一个个正正整整数数 m m数数据
4、据最最小小宽宽度度一一个个正正整整数数 n n对对实实数数表表示示输输出出 n n 位位小小数数;对对字字符符串串,表表示示截截取取的的字字符符个个数数负负号号-输输出出的的数数字字或或字字符符在在域域内内向向左左靠靠齐齐输出为:输出为:33333.333984 33333.333984 3333333333333.3330103333333333333.333010123.456001,123.456001,123.46123.461.234560e+021.234560e+02123.456123.456scanfscanf()()函数函数1 1、功能:、功能:将从终端(键盘)输入的数据传
5、送给对应的变量。将从终端(键盘)输入的数据传送给对应的变量。2 2、格式:、格式:scanfscanf(格式控制,输入项地址表)格式控制,输入项地址表)说明:说明:格式控制的含义同格式控制的含义同printfprintf函数,函数,“%格式控制字符格式控制字符”输入项地址表由若干个地址组成,代表每一个变量在内存的地址。表输入项地址表由若干个地址组成,代表每一个变量在内存的地址。表示为:示为:&变量(或数组与字符串的首地址)变量(或数组与字符串的首地址)每次调用每次调用scanfscanf()()函数后,函数将得到一个整型函数值,此值等于正函数后,函数将得到一个整型函数值,此值等于正常输入数据的
6、个数常输入数据的个数3 3、使用要点:使用要点:4 4、举例:举例:scanfscanf()()函数的使用要点函数的使用要点1 1、格式符的个数必须与输入项的个数相等,数据类型必须从左至、格式符的个数必须与输入项的个数相等,数据类型必须从左至右一一对应。右一一对应。2 2、scanfscanf()()函数中常用的格式符有:函数中常用的格式符有:3 3、用户可以指定输入数据的域宽,系统将自动按此域宽截取所读、用户可以指定输入数据的域宽,系统将自动按此域宽截取所读入的数据,如:入的数据,如:scanf(“%3d%3d”,&a,&b);scanf(“%3d%3d”,&a,&b);输入输入123456
7、123456系统自动将系统自动将123123赋值给赋值给a,a,将将456456赋值给赋值给b.b.4 4、输入实型数据时,用户不能规定小数点后的位数。输入实型数据时,用户不能规定小数点后的位数。scanf(“%7.2f”,&a);scanf(“%7.2f”,&a);是错误的是错误的.5 5、输入实型数据时,可以不带小数点,即按整型数方式输入。、输入实型数据时,可以不带小数点,即按整型数方式输入。scanfscanf()()函数的使用要点函数的使用要点6 6、从终端输入数值数据时,遇下述情况系统将认为该项数据结束:、从终端输入数值数据时,遇下述情况系统将认为该项数据结束:遇到空格、回车符或制表
8、符(遇到空格、回车符或制表符(TABTAB),),故可用它们作为数值数据间的分故可用它们作为数值数据间的分隔符;隔符;遇到宽度结束,如遇到宽度结束,如“%4d%4d”表示只取输入数据的前表示只取输入数据的前4 4列。列。遇到非法输入,如:假设遇到非法输入,如:假设a a为整型变量,为整型变量,chch为字符型变量,对于:为字符型变量,对于:scanf(“%d%c”,&a,&chscanf(“%d%c”,&a,&ch););若输入若输入246a,246a,则系统将认为:则系统将认为:a=246,ch=aa=246,ch=a7 7、在使用在使用%c%c格式符时,输入的数据之间不需要分隔符标志;空格
9、、格式符时,输入的数据之间不需要分隔符标志;空格、回车符都将作为有效字符读入。回车符都将作为有效字符读入。scanf(“%c%c%c”,&a,&b,&cscanf(“%c%c%c”,&a,&b,&c););输入输入b bo oy yb b赋值给赋值给a,a,赋值给赋值给b,ob,o赋值给赋值给c cscanfscanf()()函数的使用要点函数的使用要点8 8、如果格式控制字符串中除了格式说明之外,还包含其它字符,、如果格式控制字符串中除了格式说明之外,还包含其它字符,则输入数据时,在与之对应的位置上也必须输入与这些字符相则输入数据时,在与之对应的位置上也必须输入与这些字符相同的字符。同的字符
10、。如:如:scanf(“Enterscanf(“Enter a number:%d”,&x);a number:%d”,&x);scanf(“%d%d”&a,&bscanf(“%d%d”&a,&b););输入格式输入格式 122 23122 23 scanf(“%d,%d”,&a,&bscanf(“%d,%d”,&a,&b););输入格式输入格式 122,23122,23 scanf(“ascanf(“a=%d,b=%d”,&a,&b);=%d,b=%d”,&a,&b);输入格式输入格式 a=123,b=23a=123,b=239 9、格式说明格式说明%*表示跳过对应的输入数据项不予读入。表示
11、跳过对应的输入数据项不予读入。如如:scanf(“%2d%:scanf(“%2d%*2d%2d”,&a,&b);2d%2d”,&a,&b);若输入若输入12 345 6712 345 67 则则1212赋给赋给a,67a,67赋给赋给b,b,而而345345没有赋给任何数据没有赋给任何数据.1010、在标准、在标准C C中不使用中不使用%u%u格式符格式符,对对unsignedunsigned型数据以型数据以%d,%x,%o%d,%x,%o格格式输入。式输入。格格式式 字字符符说说明明d d以以十十 进进制制形形式式输输 入入整整数数o o以以八八 进进制制形形式式输输 入入整整数数x x以以
12、十十 六六进进制制形形式式 输输入入整整数数c c以以输输 入入一一个个字字符符s s输输 入入 字字 符符 串串,将将 字字 符符 串串 送送 到到 一一 个个 字字 符符 数数 组组 中中,在在 输输 入入 时时以以 非非 空空 白白 字字 符符 开开 始始,以以 第第 一一 个个 空空 白白 字字 符符 结结 束束.字字 符符 串串以以 0 0作作为为结结束束标标 志志f f以以小小 数数形形式式或或指指 数数输输入入实实数数e e以以 f f 格格式式相相同同字字 符符说说 明明l l用用 于于 输输 入入 长长 整整 型型 数数 据据 以以 及及 d do ou ub bl le e 型型 数数 据据h h用用 于于 输输 入入 短短 整整 型型 数数 据据域域 宽宽(为为 一一 正正 整整 数数)指指 定定 输输 入入 数数 据据 所所 占占 宽宽 度度*表表 示示 本本 输输 入入 项项 在在 读读 入入 后后 不不 赋赋 给给 相相 应应 的的 变变 量量