四章顺序程序设计.ppt
第四章 顺序程序设计,本章主要介绍赋值语句、字符输入输出函数以及格式输入输出函数。通过本章的学习,读者可以学会顺序结构程序设计的用法,掌握一些常用算法,能编写较为简单的C程序。,学习目标 1.掌握赋值语句、输入输出语句 2.学会简单的顺序程序设计 学习重点 输入、输出语句 学习难点 格式输入输出语句,本章知识网络图,顺序结构程序设计举例,格式输入与输出,字符数据的输入输出,数据输入输出的概念及在C语言中的实现,赋值语句,C语言概述,顺序程序设计,4.1 C语句概述,一、C语句概述 1、控制语句 二个分支语句(if-else、switch)三个循环语句(for、while、do-while)四个转移语句(continue、break、goto、return),2、函数调用语句如:printf(“Hello,world!”);3、表达式语句x+y;i+;a=2;a=3*5,40;4、空语句(;)5、复合语句 可以用 把一些语句括起来成为复合语句,又称分程序。语句序列,4.2 赋值语句,赋值语句是由赋值表达式加上一个分号构成 如:b=3;if(a=b)0)t=a;,4.3 数据输入输出的概念及在C语言中的实现,1、输入、输出 2、C中输入输出操作是由函数来实现的C语言函数库中有“标准输入输出函数”字符的输入与输出:getchar()、putchar()字符串的输入与输出:gets()、puts()(p135用法)格式输入与输出:scanf()、printf(),3、在使用C语言库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文 件中。例如:使用标准输入输出库函数时,要用到“stdio.h”文件,在源文件开头应有:#include 或#include“stdio.h”,4.4 数据的输入输出,1、字符输出函数putchar 语法:putchar(c)语义:(向stdout终端)输出一个字符;C可以是字符型变量或整型变量。如:#include main()putchar(141);putchar(a);putchar(A+32);putchar(n);输出:aaa,2、字符输入函数getchar 语法:getchar(),是一个无参函数;语义:(从stdio终端上)输入一个字符;getchar 包含在 stdio.h中,是stdio.h中定义 的宏;如:#include main()putchar(getchar();,4.5 格式输入与输出,1、格式输出函数printf 语法:printf(“格式控制”,输出表列);(1)格式控制:是用双引号括起来的字符串,包含 两种信息:普通字符和转义字符(这类字符总是原样输出)(2)格式说明:由%和格式控制符组成。如:%d,%f等;(P77)如:printf(“a=%d,b=%dn”,a,b);,(3)输出表列 输出项表是可选的。如果要输出的数据不止1个,相邻2个之间用逗号分开。下面的printf()函数都是合法的:printf(I am a student.n);printf(%d,3+2);printf(a=%f b=%5dn,a,a+3);必须强调:“格式字符串”中的格式指示符,必须与“输出项表”中、输出项的数据类型一致,否则会引起输出错误。,(3)格式字符 对不同类型的数据用不同的格式字符。常用的 有以下几种格式字符:1、d格式字符。用来输出十进制整数。有以下 几种用法:%d 按整数的实际长度输出%md,m为指定的输出字段的长度.如果数据 的数位小于m,则左端补以空格,若大于m,则按 实际倍数输出.如:printf(“%4d,%4d”,a,b);a=123,b=12345 123,12345,%ld 输出长整型数据.long a=135790;printf(“%ld”,a);,2、o格式符,以八进制数形式输出整数.由于是将内存 单元中的各值(0或1)按八进制形式输出,因此输出 的数据不带符号.例如:int a=-1;printf(“%d,%o”,a,a);输出为:-1,177777,3、x格式符,以十六进制形式输出整数.同样不会 出现负的十六进制数.例如:int a=-1;printf(“%x,%o,%d”,a,a,a);输出结果为:ffff,177777,-1,4、u格式符,用来输出unsined型数据,即无符号数,以十进 制形式输出.例如:main()unsigned int a=65535;int b=-2;printf(“a=%d,%o,%x,%un”,a,a,a,a);printf(“b=%d,%o,%x%un”,b,b,b,b);运行结果为:a=-1,177777,ffff,65535 b=-2,177776,fffe,65534,5、c用来输出一个字符 例如:char c=a printf(“%c”,c);也可以指定字数宽度.,6、S格式符用来输出一个字符串.有几种用法:%s%ms,输出的字符串占m列,如果字符串本身的长 度大于m,则突破m的限制,将字符串全部输出.若 串长度小于m,则左补空格.%-ms,字符串向左靠,右补空格.%m.ns,输出占m列,但只取字符串中n个字符,输 出在m列右侧,左补空格%-m,ns同上,输出在m列左铡,右补空格.,7、f格式,用来输出实数(包括单、双精度),以 小数形式输出。有以下几种用法。%f不指定字段宽度,由系统自动指定,使整数部 分全部如数输出,并输出六位小数。应当注意,并 非全部数字都是有效数字.%m.nf指定输出的数据共占m列,其中有n位 小数。如果数值长度小于m,则左端补空格。%-m.nf与%m.nf基本相同,只是使输出的数值 向左端靠,右端补空格.,8、e格式符,以指数形式输出实数.可用以下形式:%e 不指定输出所占的宽度和数字部分的小 数位数,有的C编译系统自动指定给出6位小数,指数部分占5位如:e+002,数字按规范化指数形 式输出.%m.ne和%-m.ne.m、n和-字符含义与前相 同。此处n指拟输出的数据的小数部分的小数 位数。,9、g格式,用来输出实数,它根据数值的大小,自动选f格式或e格式(选择输出时占宽度较小 的一种),且不输出无意义的零。,(4)用printf函数注意事项 1)除了X,G,E外,其它格式符必须用小写字母 2)可用转义字符 3)%用格式符的起始位,在程序中给计算机提供数据,可以用赋值语句,也可以用输入函数。在C语言中,可使用scanf()函数,通过键盘输入,给计算机同时提供多个、任意的数据。一、scanf()函数的一般格式 scanf(格式字符串,输入项首地址表);(1)格式字符串。格式字符串可以包含3种类型的字符:格式指示符、空白字符(空格、Tab键和回车键)和非空白字符(又称普通字符)。格式指示符与printf()函数的相似,空白字符作为相邻2个输入数据的缺省分隔符,非空白字符在输入有效数据时,必须原样一起输入。,2、scanf()函数的一般格式,(2)输入项首地址表由若干个输入项首地址组成,相邻2个输入项首地址之间,用逗号分开。输入项首地址表中的地址,可以是变量的首地址,也可以是字符数组名或指针变量。变量首地址的表示方法:&变量名 其中“&”是地址运算符。例如,“&radius”是指变量radius在内存中的首地址。2scanf()函数的功能:从键盘上接收格式化输入。,二、格式指示符 格式指示符的一般形式为:%*宽度 l 类型字符 1类型字符 类型字符scanf()函数中,格式字符串“%f%f”。,2宽度n 指定该项输入数据所占列数为n。换句话说,读取输入数据中相应的n位,但按需要的位数 赋给相应的变量,多余部分被舍弃。例如,scanf(%3c%3c,假设输入“abcdefg”,则系统将读取的“abc”中的“a”赋给变量ch1;将读取的“def”中的“d”赋给变量ch2,所以printf()函数的输出结果为:ch1=a,ch2=d。,3赋值抑制字符*表示本输入项对应的数据读入后,不赋给相应的变量(该变量由下一个格式指示符输入)。例如,scanf(%2d%*2d%3d,假设输入“123456789”,则系统将读取“12”并赋值给num1;读取“34”、但舍弃掉(“*”的作用);读取“567”并赋值给num2。所以,printf()函数的输出结果为:num1=12,num2=567。4类型修饰符l。其含义与printf()中的一样,短整型和长整型。,三、数据输入操作 1如果相邻2个格式指示符之间,不指定数据分隔符(如逗号、冒号等),则相应的2个输入数据之间,至少用一个空格分开,或者用Tab键分开,或者输入1个数据后,按回车,然后再输入下1个数据。例如,scanf(%d%d,假设给num1输入12,给num2输入36,则正确的输入操作为:1236 或者:12 36注:使用“”符号表示按回车键操作,在输入数据操作中的作用是,通知系统输入操作结束。,2“格式字符串”中出现的普通字符(包括转义字符形式的字符),务必原样输入。例如,scanf(%d,%d,假设给num1输入12,给num2输入36,正确的输入操作为:num1=12,num2=36n,提高人机交互性建议:为改善人机交互性,同时简化输入操作,在设计输入操作时,一般先用printf()函数输出一个提示信息,再用scanf()函数进行数据输入。例如,将 scanf(num1=%d,num2=%dn,3输入数据时,遇到以下情况,系统认为该数据结束:(1)遇到空格,或者回车键,或者Tab键。(2)遇到输入域宽度结束。例如“%3d”,只取3列。(3)遇到非法输入。例如,在输入数值数据时,遇到字母等非数值符号(数值符号仅由数字字符0-9、小数点和正负号构成)。,4、使用格式说明符“%c”输入单个字符时,空格和转义字符均作为有效字符被输入。例如,scanf(%c%c%c,假设输入:ABC,则系统将字母A赋值给ch1,空格赋值给ch2,字母B赋值给ch3。,4.6 顺序结构程序设计,在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。输入任意三个整数,求它们的和及平均值。main()int num1,num2,num3,sum;float aver;printf(Please input three numbers:);scanf(%d,%d,%d,求方程ax2+bx+c=0的实数根。a,b,c由键盘输入,a0且b2-4ac0。#include math.hmain()float a,b,c,disc,x1,x2;printf(Input a,b,c:);scanf(%f,%f,%f,从键盘输入一个小写字母,要求用大写字母形式输出该字母及对应的ASCII码值。#include stdio.hmain()char c1,c2;printf(Input a lowercase letter:);c1=getchar();putchar(c1);printf(,%dn,c1);c2=c1-32;printf(%c,%dn,c2,c2);,在顺序结构程序中,一般包括以下几个部分:1程序开头的编译预处理命令。在程序中要使用标准函数(又称库函数),除printf()和scanf()外,其它的都必须使用编译预处理命令,将相应的头文件包含进来。2顺序结构程序的函数体中,是完成具体功能的各个语句和运算,主要包括:(1)变量类型的说明。(2)提供数据语句。(3)运算部分。(4)输出部分。,