《四章顺序程序设计》由会员分享,可在线阅读,更多相关《四章顺序程序设计(36页珍藏版)》请在金锄头文库上搜索。
1、四章顺序程序设计Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望学习目标学习目标 1. 1. 掌握赋值语句、输入输出语句掌握赋值语句、输入输出语句 2. 2. 学会简单的顺序程序设计学会简单的顺序程序设计 学习重点学习重点 输入、输出语句输入、输出语句 学习难点学习难点 格式输入输出语句格式输入输出语句本章知识网络图本章知识网络图顺序结构程序设计举例顺序结构程序设计举例格式输入与输出格式输入与输出字符数据的输入输出字符数据的输入输出数据输入输出的概念及在数据输入输出的概念及在C语言中
2、的实现语言中的实现赋值语句赋值语句C语言概述语言概述顺序程序设计顺序程序设计4.1 C4.1 C语句概述语句概述一、一、C C语句概述语句概述 1 1、控制语句、控制语句 二个分支语句(二个分支语句(if-elseif-else、switchswitch) 三个循环语句(三个循环语句(forfor、whilewhile、do-whiledo-while) 四个转移语句(四个转移语句(continuecontinue、breakbreak、gotogoto、 return return) 2 2、函数调用语句、函数调用语句如:如:printf(“Hello, world!”);printf(“H
3、ello, world!”); 3 3、表达式语句、表达式语句x+y; i+; a=2; a=3*5, 40 ; x+y; i+; a=2; a=3*5, 40 ; 4 4、空语句、空语句( ;)( ;) 5 5、复合语句、复合语句 可以用可以用 把一些语句括起来成为复合语句,又称分程序。把一些语句括起来成为复合语句,又称分程序。 语句序列语句序列 4.2 4.2 赋值语句赋值语句赋值语句是由赋值表达式加上一个分号构成赋值语句是由赋值表达式加上一个分号构成 如:如:b=3;b=3; if(a=b)0) t=a; if(a=b)0) t=a;4.3 4.3 数据输入输出的概念及在数据输入输出的概
4、念及在C C语言中的实现语言中的实现1 1、输入、输出输入、输出 2 2、C C中输入输出操作是由函数来实现的中输入输出操作是由函数来实现的CC语言函数库中有语言函数库中有“标准输入输出标准输入输出函数函数”字符的输入与输出:字符的输入与输出:getchar()getchar()、putcharputchar()()字符串的输入与输出:字符串的输入与输出:gets()gets()、putsputs()() (p135 (p135用法)用法)格式输入与输出:格式输入与输出:scanf()scanf()、printfprintf()()3 3、在使用、在使用C C语言库函数时,要用预编译命令语言库
5、函数时,要用预编译命令 “#include” “#include”将有关的将有关的“头文件头文件”包括到用户源包括到用户源文文 件中。件中。 例如:使用标准输入输出库函数时,要用到例如:使用标准输入输出库函数时,要用到 “stdio.h” “stdio.h”文件,在源文件开头应有:文件,在源文件开头应有: #include #include 或或 #include “stdio.h” #include “stdio.h”4.4 4.4 数据的输入输出数据的输入输出1 1、字符输出函数、字符输出函数putcharputchar 语法:语法:putchar(c)putchar(c) 语义:(向语义
6、:(向stdoutstdout终端)输出一个字符;终端)输出一个字符; C C可以是字符型变量或整型变量。可以是字符型变量或整型变量。 如:如:#include #include main() main() putchar(141); putchar(a); putchar(141); putchar(a); putchar(A+32); putchar(n); putchar(A+32); putchar(n); 输出:输出:aaaaaa2 2、字符输入函数、字符输入函数getchargetchar 语法:语法:getchar ( )getchar ( ),是一个无参函数;,是一个无参函数;
7、 语义:语义:( (从从stdiostdio终端上终端上) ) 输入一个字符;输入一个字符; getchar getchar 包含在包含在 stdio.h stdio.h中,是中,是stdio.hstdio.h中定义中定义 的宏;的宏; 如:如:#include #include main( ) main( ) putchar(getchar( ); putchar(getchar( ); 4.5 4.5 格式输入与输出格式输入与输出 1 1、格式输出函数、格式输出函数printfprintf 语法:语法:printf (“printf (“格式控制格式控制”, ”, 输出表列);输出表列);
8、 (1 1)格式控制:是用双引号括起来的字符串,包)格式控制:是用双引号括起来的字符串,包含含 两种信息:两种信息: 普通字符和转义字符(这类字符总是原样输出)普通字符和转义字符(这类字符总是原样输出) (2 2)格式说明:由)格式说明:由% %和格式控制符组成。如:和格式控制符组成。如:%d, %d, %f %f等;(等;(P77P77) 如:如:printf(“a=%d, b=%dn”,a,b);printf(“a=%d, b=%dn”,a,b); (3 3)输出表列)输出表列 输出项表是可选的。如果要输出的数据不止输出项表是可选的。如果要输出的数据不止1 1个,个,相邻相邻2 2个之间用
9、逗号分开。下面的个之间用逗号分开。下面的printf()printf()函数都是函数都是合法的:合法的: printf(I am a student.n); printf(I am a student.n); printf(%d,3+2); printf(%d,3+2); printf(a=%f b=%5dn, a, a+3); printf(a=%f b=%5dn, a, a+3); 必须强调:必须强调:“格式字符串格式字符串”中的格式指示符,必须中的格式指示符,必须与与“输出项表输出项表”中、输出项的数据类型一致,否则中、输出项的数据类型一致,否则会引起输出错误。会引起输出错误。(3 3)
10、格式字符)格式字符 对对不不同同类类型型的的数数据据用用不不同同的的格格式式字字符符。常常用用的的 有以下几种格式字符:有以下几种格式字符: 1 1、d d格格式式字字符符。用用来来输输出出十十进进制制整整数数。有有以以下下 几种用法:几种用法: %d %d 按整数的实际长度输出按整数的实际长度输出 %md,m%md,m为为指指定定的的输输出出字字段段的的长长度度. .如如果果数数据据 的的数数位位小小于于m,m,则则左左端端补补以以空空格格, ,若若大大于于m,m,则则按按 实际倍数输出实际倍数输出. . 如如:printf(“%4d,%4d”,a,b);:printf(“%4d,%4d”,
11、a,b); a=123,b=12345 a=123,b=12345 123,12345 123,12345 %ld %ld 输出长整型数据输出长整型数据. . long a=135790; long a=135790; printf(“%ld”,a); printf(“%ld”,a);2 2、o o格格式式符符, ,以以八八进进制制数数形形式式输输出出整整数数. .由由于于是是将将内内存存 单单元元中中的的各各值值(0(0或或1)1)按按八八进进制制形形式式输输出出, ,因因此此输输出出 的数据不带符号的数据不带符号. . 例如例如: : int a=-1; int a=-1; printf(
12、“%d,%o”,a,a); printf(“%d,%o”,a,a); 输出为输出为:-1,177777:-1,1777773 3、x x格格式式符符, ,以以十十六六进进制制形形式式输输出出整整数数. .同同样样不不会会 出现负的十六进制数出现负的十六进制数. . 例如例如: : int a=-1; int a=-1; printf(“%x,%o,%d”,a,a,a); printf(“%x,%o,%d”,a,a,a); 输出结果为输出结果为:ffff,177777,-1:ffff,177777,-1 4 4、u u格格式式符符, ,用用来来输输出出unsinedunsined型型数数据据,
13、,即即无无符符号号数数, ,以以十十进进 制形式输出制形式输出. . 例如例如: : main( ) main( ) unsigned int a=65535; unsigned int a=65535; int b=-2; int b=-2; printf(“a=%d,%o,%x,%un”,a,a,a,a); printf(“a=%d,%o,%x,%un”,a,a,a,a); printf(“b=%d,%o,%x%un”,b,b,b,b); printf(“b=%d,%o,%x%un”,b,b,b,b); 运行结果为运行结果为: : a=-1,177777,ffff,65535 a=-1,1
14、77777,ffff,65535 b=-2,177776,fffe,65534 b=-2,177776,fffe,65534 5 5、c c用来输出一个字符用来输出一个字符 例如例如: : char c=a char c=a printf(“%c”,c); printf(“%c”,c); 也可以指定字数宽度也可以指定字数宽度. .6 6、S S格式符用来输出一个字符串格式符用来输出一个字符串. .有几种用法有几种用法: : %s %s %ms,%ms,输输出出的的字字符符串串占占m m列列, ,如如果果字字符符串串本本身身的的长长 度度大大于于m,m,则则突突破破m m的的限限制制, ,将将字
15、字符符串串全全部部输输出出. .若若 串长度小于串长度小于m,m,则左补空格则左补空格. . %-ms, %-ms,字符串向左靠字符串向左靠, ,右补空格右补空格. . %m.ns,%m.ns,输输出出占占m m列列, ,但但只只取取字字符符串串中中n n个个字字符符, ,输输 出在出在m m列右侧列右侧, ,左补空格左补空格 %-m,ns %-m,ns同上同上, ,输出在输出在m m列左铡,右补空格列左铡,右补空格. .7 7、f f格格式式,用用来来输输出出实实数数(包包括括单单、双双精精度度),以以 小数形式输出。有以下几种用法。小数形式输出。有以下几种用法。 %f %f不指定字段宽度不
16、指定字段宽度, ,由系统自动指定由系统自动指定, ,使整数部使整数部 分全部如数输出分全部如数输出, ,并输出六位小数。应当注意并输出六位小数。应当注意, ,并并 非全部数字都是有效数字非全部数字都是有效数字. . %m.nf%m.nf指指定定输输出出的的数数据据共共占占m m列列,其其中中有有n n位位 小数。如果数值长度小于小数。如果数值长度小于m m,则左端补空格。,则左端补空格。 %-m.nf%-m.nf与与%m.nf%m.nf基基本本相相同同, ,只只是是使使输输出出的的数数值值 向左端靠向左端靠, ,右端补空格右端补空格. .8 8、e e格式符格式符, ,以指数形式输出实数以指数
17、形式输出实数. .可用以下形式可用以下形式: : %e %e 不不指指定定输输出出所所占占的的宽宽度度和和数数字字部部分分的的小小 数数位位数数, ,有有的的C C编编译译系系统统自自动动指指定定给给出出6 6位位小小数数, , 指指数数部部分分占占5 5位位如如:e+002,:e+002,数数字字按按规规范范化化指指数数形形 式输出式输出. . %m.ne%m.ne和和%-m.ne.m%-m.ne.m、n n和和- -字字符符含含义义与与前前相相 同同。此此处处n n指指拟拟输输出出的的数数据据的的小小数数部部分分的的小小数数 位数。位数。 9 9、g g格格式式,用用来来输输出出实实数数,
18、它它根根据据数数值值的的大大小小, 自自动动选选f f格格式式或或e e格格式式(选选择择输输出出时时占占宽宽度度较较小小 的一种),且不输出无意义的零。的一种),且不输出无意义的零。(4)(4) 用用printfprintf函数注意事项函数注意事项 1) 1)除了除了X X,G G,E E外,其它格式符必须用小写字母外,其它格式符必须用小写字母 2) 2)可用转义字符可用转义字符 3)% 3)%用格式符的起始位用格式符的起始位在在程程序序中中给给计计算算机机提提供供数数据据,可可以以用用赋赋值值语语句句,也也可可以以用用输输入入函函数数。在在C语语言言中中,可可使使用用scanf()函函数数
19、,通通过过键键盘盘输输入入,给计算机同时提供多个、任意的数据。给计算机同时提供多个、任意的数据。一、一、scanf()函数的一般格式函数的一般格式scanf(格式字符串格式字符串,输入项首地址表输入项首地址表);(1)格格式式字字符符串串。格格式式字字符符串串可可以以包包含含3种种类类型型的的字字符符:格格式式指指示示符符、空空白白字字符符(空空格格、Tab键键和和回回车车键键)和和非非空空白白字字符(又称普通字符)。符(又称普通字符)。格格式式指指示示符符与与printf()函函数数的的相相似似,空空白白字字符符作作为为相相邻邻2个个输输入入数数据据的的缺缺省省分分隔隔符符,非非空空白白字字
20、符符在在输输入入有有效效数数据据时时,必必须须原样一起输入。原样一起输入。2 2、scanf()scanf()函数的一般格式函数的一般格式(2 2)输入项首地址表)输入项首地址表由若干个输入项首地由若干个输入项首地址组成,相邻址组成,相邻2 2个输入项首地址之间,用逗号分开。个输入项首地址之间,用逗号分开。 输输入入项项首首地地址址表表中中的的地地址址,可可以以是是变变量量的的首首地地址,也可以是字符数组名或指针变量。址,也可以是字符数组名或指针变量。 变量首地址的表示方法:变量首地址的表示方法: & &变量名变量名 其其中中“&”“&”是是地地址址运运算算符符。例例如如,“&radius”“
21、&radius”是指变量是指变量radiusradius在内存中的首地址。在内存中的首地址。 2 2scanf()scanf()函函数数的的功功能能:从从键键盘盘上上接接收收格格式式化化输入。输入。二、二、格式指示符格式指示符格格式式指指示示符符的的一一般般形形式式为为:%*宽宽度度l类型字符类型字符1类型字符类型字符类型字符类型字符scanf()函数中,格式字符串函数中,格式字符串“%f%f”。2 2宽度宽度n n 指定该项输入数据所占列数为指定该项输入数据所占列数为n n。 换句话说,读取输入数据中相应的换句话说,读取输入数据中相应的n n位,但按需位,但按需要的位数要的位数 赋给相应的变
22、量,多余部分被舍弃。赋给相应的变量,多余部分被舍弃。 例如,例如,scanf(%3c%3c,&ch1,&ch2); scanf(%3c%3c,&ch1,&ch2); printf(ch1=%c,ch2=%cn,ch1,ch2); printf(ch1=%c,ch2=%cn,ch1,ch2); 假设输入假设输入“abcdefg”abcdefg”,则系统将读取的,则系统将读取的“abc”abc”中的中的“a a”赋给变量赋给变量ch1ch1;将读取的;将读取的“defdef”中的中的“d d”赋给变量赋给变量ch2ch2,所以,所以printf()printf()函数的输出结果函数的输出结果为:为
23、: ch1=a,ch2=d ch1=a,ch2=d。3 3赋值抑制字符赋值抑制字符* * 表表示示本本输输入入项项对对应应的的数数据据读读入入后后,不不赋赋给给相相应应的的变量(该变量由下一个格式指示符输入)。变量(该变量由下一个格式指示符输入)。 例如,例如,scanf(%2d%*2d%3d,&num1,&num2); scanf(%2d%*2d%3d,&num1,&num2); printf(num1=%d,num2=%dn,num1,num2); printf(num1=%d,num2=%dn,num1,num2); 假假设设输输入入“123456789”“123456789”,则则系系
24、统统将将读读取取“12”“12”并并赋赋值值给给num1num1;读读取取“34”“34”、但但舍舍弃弃掉掉(“*”“*”的的作作用用);读读取取“567”“567”并并赋赋值值给给num2num2。所所以以,printf()printf()函数的输出结果为:函数的输出结果为:num1=12,num2=567num1=12,num2=567。4 4类型修饰符类型修饰符ll。 其含义与其含义与printf()printf()中的一样,短整型和长整型。中的一样,短整型和长整型。三、数据输入操作三、数据输入操作 1 1如如果果相相邻邻2 2个个格格式式指指示示符符之之间间,不不指指定定数数据据分分隔
25、隔符符(如如逗逗号号、冒冒号号等等),则则相相应应的的2 2个个输输入入数数据据之之间间,至至少少用用一一个个空空格格分分开开,或或者者用用TabTab键键分分开开,或或者输入者输入1 1个数据后,按回车,然后再输入下个数据后,按回车,然后再输入下1 1个数据。个数据。 例如,例如,scanf(%d%d,&num1,&num2);scanf(%d%d,&num1,&num2); 假假设设给给num1num1输输入入1212,给给num2num2输输入入3636,则则正正确确的的输入操作为:输入操作为:12361236 或者:或者:1212 3636注注:使使用用“”“”符符号号表表示示按按回回
26、车车键键操操作作,在在输输入入数数据据操作中的作用是,通知系统输入操作结束。操作中的作用是,通知系统输入操作结束。 2 2“格格式式字字符符串串”中中出出现现的的普普通通字字符符(包包括括转转义义字字符符形形式的字符),务必原样输入。式的字符),务必原样输入。 例如,例如,scanf(%d,%d,&num1,&num2); scanf(%d,%d,&num1,&num2); 假假设设给给num1num1输输入入1212,给给num2num2输输入入3636,正正确确的的输输入入操操作作为为:1212,3636 另另外外,scanf()scanf()函函数数中中、格格式式字字符符串串内内的的转转
27、义义字字符符( (如如n)n),系系统统并并不不把把它它当当转转义义字字符符来来解解释释,从从而而产产生生一一个个控控制制操操作作,而是将其视为普通字符,所以也要原样输入。而是将其视为普通字符,所以也要原样输入。 例如:例如:scanf(num1=%d,num2=%dn,&num1,&num2); scanf(num1=%d,num2=%dn,&num1,&num2); 假设给假设给num1num1输入输入1212,给,给num2num2输入输入3636,正确的输入操作为:,正确的输入操作为: num1=12 num1=12,num2=36nnum2=36n 提提高高人人机机交交互互性性建建议
28、议:为为改改善善人人机机交交互互性性,同同时时简简化化输输入入操操作作,在在设设计计输输入入操操作作时时,一一般般先先用用printf()printf()函函数数输输出出一一个提示信息,再用个提示信息,再用scanf()scanf()函数进行数据输入。函数进行数据输入。 例如,将例如,将 scanf(num1=%d,num2=%dn,&num1,&num2); scanf(num1=%d,num2=%dn,&num1,&num2); 改为:改为: printf(num1=); scanf(%d,&num1); printf(num1=); scanf(%d,&num1); printf(num
29、2=); scanf(%d,&num2); printf(num2=); scanf(%d,&num2); 3 3输入数据时,遇到以下情况,系统认为该数据结束:输入数据时,遇到以下情况,系统认为该数据结束: (1 1)遇到空格,或者回车键,或者)遇到空格,或者回车键,或者TabTab键。键。 (2 2)遇到输入域宽度结束。例如)遇到输入域宽度结束。例如“%3d”“%3d”,只取,只取3 3列。列。 (3 3)遇遇到到非非法法输输入入。例例如如,在在输输入入数数值值数数据据时时,遇遇到到字字母母等等非非数数值值符符号号( (数数值值符符号号仅仅由由数数字字字字符符0-90-9、小小数数点点和和正
30、正负负号构成号构成) )。 4 4、使使用用格格式式说说明明符符“%c”“%c”输输入入单单个个字字符符时时,空空格和转义字符均作为有效字符被输入。格和转义字符均作为有效字符被输入。 例如,例如,scanf(%c%c%c,&ch1,&ch2,&ch3); scanf(%c%c%c,&ch1,&ch2,&ch3); printf(ch1=%c,ch2=%c,ch3=%cn,ch1,ch2,ch3);printf(ch1=%c,ch2=%c,ch3=%cn,ch1,ch2,ch3); 假假设设输输入入:ABCABC,则则系系统统将将字字母母AA赋赋值值给给ch1ch1,空格,空格赋值给赋值给ch2
31、ch2,字母,字母BB赋值给赋值给ch3ch3。 4.6 4.6 顺序结构程序设计顺序结构程序设计 在顺序结构程序中,各语句(或命令)是按照位置的先后在顺序结构程序中,各语句(或命令)是按照位置的先后次序,顺序执行的,且每个语句都会被执行到。次序,顺序执行的,且每个语句都会被执行到。 输入任意三个整数,求它们的和及平均值。输入任意三个整数,求它们的和及平均值。 main() main() int num1,num2,num3,sum; int num1,num2,num3,sum; float aver; float aver; printf(Please input three number
32、s:); printf(Please input three numbers:); scanf(%d,%d,%d,&num1,&num2,&num3);/ scanf(%d,%d,%d,&num1,&num2,&num3);/ sum=num1+num2+num3; sum=num1+num2+num3; aver=sum/3.0; aver=sum/3.0; printf(num1=%d,num2=%d,num3=%dn,num1,num2,num3); printf(num1=%d,num2=%d,num3=%dn,num1,num2,num3); printf(sum=%d,aver=%
33、7.2fn,sum,aver); printf(sum=%d,aver=%7.2fn,sum,aver); 求方程求方程axax2 2+bx+c=0+bx+c=0的实数根。的实数根。a a,b b,c c由键盘输入,由键盘输入,a0a0且且b b2 2- -4ac04ac0。#include math.h#include math.hmain()main() float a,b,c,disc,x1,x2; float a,b,c,disc,x1,x2; printf(Input a, b, c: ); printf(Input a, b, c: ); scanf(%f,%f,%f,&a,&b,
34、&c); scanf(%f,%f,%f,&a,&b,&c); disc=b*b-4*a*c; disc=b*b-4*a*c; x1=(-b+sqrt(disc)/(2*a); x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(nx1=%6.2fnx2=%6.2fn,x1,x2); printf(nx1=%6.2fnx2=%6.2fn,x1,x2); 从从键键盘盘输输入入一一个个小小写写字字母母,要要求求用用大大写写字字母母形形式式输输出该字母及对应的出该字母及对应的ASCIIASC
35、II码值。码值。#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 1程序开头的编译预处理命令。程序开头的编译预处理命令。 在在程程序序中中要要使使用用标标准准函函数数(又又称称库库函函数数),除除printfprintf()()和和scanf()scanf()外外,其其它它的的都都必必须须使使用用编编译译预预处处理理命命令令,将将相相应的头文件包含进来。应的头文件包含进来。 2 2顺顺序序结结构构程程序序的的函函数数体体中中,是是完完成成具具体体功功能能的的各各个个语句和运算,主要包括:语句和运算,主要包括: (1 1)变量类型的说明。)变量类型的说明。 (2 2)提供数据语句。)提供数据语句。 (3 3)运算部分。)运算部分。 (4 4)输出部分。)输出部分。