中国石油大学c语言课件第3章顺序程序设计.ppt_第1页
中国石油大学c语言课件第3章顺序程序设计.ppt_第2页
中国石油大学c语言课件第3章顺序程序设计.ppt_第3页
中国石油大学c语言课件第3章顺序程序设计.ppt_第4页
中国石油大学c语言课件第3章顺序程序设计.ppt_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章 顺序程序设计,2,回顾,常量是在程序中不能被更改的值;而变量在程序中可以被更改的,通过变量可以引用存储在内存中的数据 C语言中的基本数据类型包括整型、单精度浮点型、双精度浮点型和字符型 整型分为短整型、整型、长整型,每种整型又可分为有符号型和无符号型 单精度浮点型和双精度浮点型变量可以存储实数,但双精度型取值范围要比单精度型大的多 字符型变量可以存储单个字符,其值是该字符的ASCII 码 表达式是操作数和运算符的集合 赋值运算符的语法如下:variable = expression sizeof运算符用于在程序中测试某一数据类型占用多少字节 算术运算符提供运算功能,包括+、-、*、/、%、+和-,3,教学目标,了解语句的基本概念 了解语句的分类 掌握字符输入输出函数getchar和putchar 掌握格式输入输出函数scanf和printf 算法及其表示 掌握顺序程序设计,4,C语言中的语句,控制语句 if()else return 变量声明语句 int a=1; 函数调用语句 printf(“hello world!“); 表达式语句 k+; k = k+ 1; 空语句 ; 复合语句 t = x; x = y; y = t;,5,复合语句,在什么情况下使用复合语句? 条件语句和循环语句在语法上只允许带一条语句 当分支和循环中需要进行多项操作时, t=x; x=y; y=t; ,被当作一条语句来处理,6,复合语句,对于复合语句,需要注意: 在程序中应把复合语句看成是单条语句,而不是多条语句; 复合语句内的各条语句必须是以“;”结尾,最后一条语句的结尾也必须有分号“;”; 复合语句还可以包含复合语句,即复合语句允许嵌套,但必须保证嵌套是完整的,不允许交叉嵌套。 例如: x=1; y=x*x; x+; y=x; ,7,空语句,空语句有什么作用? 什么也不做,只表示语句的存在 自顶向下程序设计时用在那些未完成的模块中 延时用的空循环,int main(void) DataInitialze(); DataProcess(); DataOutput(); return 0; ,DataInitialze() ; ,8,输入输出的概念及在C语言中的实现,根据结构化程序设计思想,任何程序都可以简化为3个模块:数据输入、数据处理、数据输出。 数据输入模块模块负责接受用户输入的数据并转化为程序能够识别、处理的形式,通常与输入设备有关。 数据处理模块负责对输入数据按指定的算法进行加工和处理,计算结果,它是程序的核心,但并不是程序的全部。 数据输出模块负责将内存中的计算结果转化为可以在输出设备上呈现出来的形式,并送往输出设备。 因此,在任何程序前,都要首先规划数据的输入、输出方法。 本章将介绍getchar、putchar、scanf、printf等函数的语法规则和使用方法。,9,字符输入输出函数,getchar(),字符型数据,字符型数据,putchar(),10,putchar函数,putchar(整型表达式),putchar(),语法:,例如: char c; c=n; putchar(c); putchar(n);,其中,“整型表达式”的值是要输出字符的编码。通常,该表达式直接用字符型表达式代替。,该函数的功能是在标准输出设备(显示器)上输出单个字符。,11,getchar函数,char variablename; variablename = functionname;,getchar(),语法:,例如: char c; c=getchar();,注意:getchar函数无参数,在使用前必须要用包含命令 #include ,该函数的功能是从键盘上输入一个字符,12,putchar函数,#include int main(void) char ch; printf(“Press a key and then press Enter:“); ch = getchar(); printf(“You pressed “); putchar(ch); putchar(n); return 0; ,运行程序,Press a key and then press Enter:,A,You pressed,A,该语句的作用是什么?,注意:该函数只能接受单个字符,当输入多于一个字符时,只接受第一个字符。 这是因为该函数是从键盘缓冲区读取字符数据的,用户输入的字符暂时存在缓冲区中,形成了一个序列。每次调用,顺序读取一个字符,其他的还是保留在里面。,13,举例,#include int main(void) char c; printf(“please input some characters:n“); c=getchar(); putchar(c); c=getchar(); putchar(c); c=getchar(); putchar(c); putchar(n); ,14,getchar和putchar函数使用,#include int main(void) char a,b; printf(“ 请输入两个字符:n“); a=getchar(); fflush(stdin); b=getchar(); fflush(stdin); putchar(a); putchar(b); putchar(n); return 0; ,O,K,输出: 请输入两个字符: O K OK Press any key to continue_,15,格式输入输出函数,输入/输出函数 (scanf/printf) 用于接受和显示数据或信息,#include int main(void) int num; printf(“请输入一个数:“); scanf(“%d“, ,格式说明,转义序列,printf()函数的一般形式为: printf(“格式控制“,输出列表); 说明: 第一个参数说明采用什么样的格式输出内容。 格式控制串中可以包含格式控制字符串(以“%“开始),也可以包含转义序列(以“标识)。 第二个参数是要显示其值的参数列表。 如果格式描述串中没有特殊字符“%“,那么该输出语句里就不能有输出列表,也不需要表示分隔的逗号这是使用printf()函数的最简单的形式。,16,printf函数,int visitor_count = 150; printf (“ %d“ , visitor_count);,printf,将一些信息按照指定的格式送到标准输出(显示器),“ %d“,visitor_count,将按指定的格式显示该变量的值,其他格式见课本P43.。,17,附加格式说明字符,18,printf函数,#include int main(void) int a; char c; c=x; a=99; printf(“c=%d, c=%c n“, c, c); printf(“a=%d, a=%c n“, a, a); return 0; ,19,输出类型不一致,#include int main(void) float x=2.345; printf(“%dn“,x); return 0; ,#include int main(void) float x=2.345; printf(“%dn”,(int)x); return 0;,20,其他情况,#include int main(void) int a,b; a=22; b=55; printf(“a=%d, b=%d n“, ,21,printf函数,int salary = 5500; printf (“ %10d“ , salary);,输出结果: 5500,输出结果的左边显示了 6 个空格,“ %10d“,%md、%mo、%mx、%mu: m为指定的输出宽度。如果实际数据的位数小于m,则左边补足空格;如果大于m,则按照实际位数输出,m将不起作用。,22,printf函数,float circumference = 78.53; printf (“ %f“ , circumference);,输出结果:78.530000,默认情况下精确到六位小数,9.4786789;,9.478679,23,printf函数,double mercury_level = 168.2251074; printf (“%7.2f“ , mercury_level);,输出结果: 168.23,宽度,表示所有的数字和小数点所占的位数。不够7位右对齐。,“ %7.2f“,精度(精确到小数点后多少位),%m.nf(m,n为正整数): 指定输出的数据共占m列,其中有n位小数。如果数值长度小于m, 则左端补空格;如果超过m,则忽略m的限制。 如果为%-m.nf则是向左对齐,右端补空格。,24,%e格式,%e:按标准化指数形式输出(小数部分的小数点前必有且只有1位非0数字),默认输出宽度共占13列,其中,小数点占1列,小数点前的非0数字占1列,小数点后的小数部分有系统自动指定6位,指数部分占5位(字母“e”占1位,指数符号1位,指数占3位),printf(“%15.1en“,311.34);,printf(“%en“,311.34);,25,%c格式,%c格式符用来输出一个字符,主要有两种用法:%c和%mc。其中,m指定输出列宽(通常m1),输出的字符输出在指定的最后一列,即第m列,前面补m-1个空格。 例如: char c=c printf(“%c%3cn”,c,c); 输出结果为: c_ _c 字符型输出与整型输出的关系见P46。,26,%s格式输出,s格式用来输出一个字符串,主要有下面几种用法: %s,直接输出全部字符。例如: printf(“%s”,”china”) %ms(m是一个正整数):输出的字符串占m列。如果字符本身长度大于m,则忽略m的限制,将字符串全部输出。如果小于m列,则左边补空格。 %m.ns(m,n是一个正整数):从字符串中截取左边的n个字符(不足则忽略m的限制),输出到m列上。若不足m列,在左边补空格。 %-m.ns(m,n是一个正整数):基本同%m.ns,只是输出的字符串是左对齐的。,27,printf函数使用,#include int main(void) float radius=1.5, high=2.0; float pi=3.14159, vol; /*计算体积*/ vol=pi*radius*radius*high; /*输出体积的值*/ printf(“vol=%7.2fn“,vol); return 0; ,1.5,2.0,14.14,输出: vol= 14.14,3.14159,28,printf函数使用,#include int main(void) float f1 = 100.15799, f2 = 12.55, f3 = 1.7; int n1 = 123, n2 = 45, n3 = 6; printf(“printf WITHOUT width or precision specifications:n“); printf(“%fn%fn%fn“, f1, f2, f3); printf(“%dn%dn%dn“, n1, n2, n3); printf(“printf WITH width and precision specifications:n“); printf(“%5.2fn%6.1fn%3.0fn“, f1, f2, f3); printf(“%5dn%6dn%3dnn“, n1, n2, n3); return 0; ,29,关于printf的其他说明,格式字符要区分大小写。 不同的运行环境在实现格式输出时,输出结果可能会有一些小的差别。例如%e格式符输出实数时,有些系统输出的指数部分为4位(如e+02)而不是5位(如e+002); 可以在”格式控制字符串”中使用”转义字符”,他们将被看做普通字符。 如果想输出字符“%”时,则应该在“格式控制”字符串中用连续的两个%表示,例如printf(“%f%”,1.0/3);,30,scanf函数,scanf(“%d“,scanf 函数从缓冲区读取信息,按照格式描述把读入的信息转换为指定数据类型的数据,并把这些数据赋给指定的程序变量。,转换字符串,&符号(附在读取的每个变量上)用于指明变量在内存中的位置,变量的名称,31,scanf函数,内存,float tax_rate; scanf (“ %f“ , ,tax_rate,在内存中分配一块 32 位存储空间 存储空间使用名称“tax_rate”标识,提示用户输入一个值 输入的值存储在缓冲区中 按顺序取出数值存放到存储单元中(因为 scanf 提供此变量的地址),12.234,32,scanf函数使用,#include int main(void) double radius,high,vol; printf(“请输入圆柱体底面积的半径和圆柱体的高: “); scanf(“%lf%lf“, ,5,10,785,请输入圆柱体底面积的半径和圆柱体的高: 5 10,radius= 5.00, high= 10.00, vol= 785.00,33,C语言中,要连续输入2个以上的数据一般用空白(即空格、tab键或回车键)做为分隔符。但有的人习惯使用逗号: scanf(“%d,%d”,34,用“%c”输入字符时,空格、Tab、回车及其他控制字符都可以做为有效字符输入。因此,对于: scanf(“%c%c%c”, 如果输入: a b c(回车) 由于c格式符的特殊性,使用scanf时,最好不要将c格式符与其他格式符混用,以免造成错误。,35,在输入数据时,遇到以下情况则认为该数据结束 遇到空格、回车、Tab键 以满足宽度限制,比如对于“%5d”,只取5位整数。 遇到非法输入,比如“a”不是合法的十进制数,但是合法的十六进制数。 scanf(“%d%c%f”,&x,&y,&z) 如果输入: 56t8o.34 结果:x=56, y=t, z=8,36,标准C在scanf函数中不使用%u说明符,对unsigned型数据,以%d或%o、%x格式输入。 输入数据不能规定精度,例如“%8.2”的格式说明是错误的。 可以指定输入数据所占的列数,系统自动按此列数截取数据。 例如:scanf(“%3d%3d”,&a,&b) 如果输入:12345(回车) 则 a=123 b=45,37,“%”后的“*”附加说明符,用来表示跳过相应的数据。在利用现成的一批数据时,如果不需要其中的某些数据,可以利用此方法。 例如:scanf(“%2d%*3d%2d”, 如果输入以下信息: 12 34567(回车) 则 a=12 b=67 第二个数据345跳过,38,scanf函数使用,#include int main(void) int a, b; printf(“Please input a and b:“); scanf(“%d%d“, ,以空格或TAB 键作为分隔符,39,scanf函数使用,#include int main(void) int a, b; printf(“Please input a and b:“); scanf(“%d%d“, ,Please input a and b:,a=12, b=34, a+b = 46,12,以回车键作为分隔符,34,40,scanf函数使用,#include int main(void) int a, b; printf(“Please input a and b:“); scanf(“%2d%2d“, ,Please input a and b:,a=12, b=34, a+b = 46,1234,遇宽度时结束,41,scanf函数使用,#include int main(void) int a, b; printf(“Please input a and b:“); scanf(“%2d%2d“, ,Please input a and b:,a=12, b=3, a+b = 15,123a,遇非法输入时结束,42,scanf函数使用,#include int main(void) int a, b; printf(“Please input a and b:“); scanf(“%d,%d“, ,Please input a and b:,a=12, b=34, a+b = 46,12,34,这里逗号需要原样输入,43,scanf函数使用,#include int main(void) int a, b; printf(“Please input a and b:“); scanf(“%2d%*2d%2d“, ,Please input a and b:,a=12, b=56, a+b = 68,123456,跳过一个输入项,44,输入数据的格式控制,#include int main(void) int a, b; scanf(“%d %d“, ,问题1:当要求程序输出结果为 a = 12, b = 34 时,用户应该如何输入数据?,12 34,45,输入数据的格式控制,#include int main(void) int a, b; scanf(“%d %d“, ,问题2:当限定用户输入数据以逗号为分隔符,即输入数据格式为: 12,34 时,应修改程序中的哪条语句?怎样修改?,scanf(“%d,%d“, ,46,输入数据的格式控制,#include int main(void) int a, b; scanf(“%d %d“, ,问题3:语句scanf(“%d %d“, 时,用户应该如何输入数据?,a = 12, b = 34,47,输入数据的格式控制,#include int main(void) int a, b; scanf(“%d %d“, ,问题4:限定用户输入数据为以下格式为 1234 同时要求程序输出结果为a = 12, b = 34,scanf(“%2d%2d“, ,48,输入数据的格式控制,#include int main(void) int a, b; scanf(“%d %d“, ,问题5:限定用户输入数据为以下格式为 12 34 同时要求程序输出结果为a = “12“, b = “34“,scanf(“%d%d“, ,49,输入数据的格式控制,#include int main(void) int a, b; scanf(“%d %d“, ,问题6:设计程序使得用户可以以任意字符(回车、空格、制表符、逗号、其它)作为分隔符进行数据的输入,scanf(“%d%*c%d“, ,50,C格式符存在的问题及其解决,#include int main(void) int data1, data2; char op; printf(“Please enter the expression data1 + data2n“); scanf(“%d%c%d“, ,Please enter the expression data1 + data2,第1次测试,12 + 3,12 3129 = 3141,51,C格式符存在的问题及其解决,Please enter the expression data1 + data2,第2次测试,12 3,12 3 = 15,#include int main(void) int data1, data2; char op; printf(“Please enter the expression data1 + data2n“); scanf(“%d%c%d“, ,52,C格式符存在的问题及其解决,#include int main(void) int data1, data2; char op; printf(“Please enter the expression data1 + data2n“); scanf(“%d%c%d“, ,Please enter the expression data1 + data2,第3次测试,12+3,12+3 = 15,53,C格式符存在的问题及其解决,#include int main(void) int a; char b; float c; printf(“Please input an integer:“); scanf(“%d“, ,Please input an integer:,希望得到的运行结果,12,Please input an character :,a,Please input a float number:,3.5,integer:12,character :a,float number:3.500000,54,C格式符存在的问题及其解决,#include int main(void) int a; char b; float c; printf(“Please input an integer:“); scanf(“%d“, ,Please input an integer:,结果好像很奇怪嘛!,12,Please input an character :,Please input a float number:,3.5,integer:12,float number:3.500000,55,C格式符存在的问题及其解决,#include int main(void) int a; char b; float c; printf(“Please input an integer:“); scanf(“%d“, ,56,C格式符存在的问题及其解决,#include int main(void) int a; char b; float c; printf(“Please input an integer:“); scanf(“%d“, ,Please input an integer:,程序修改后得到的运行结果,12,Please input an character :,a,Please input a float number:,3.5,integer:12,character :a,float number:3.500000,57,C格式符存在的问题及其解决,#include int main(void) int a; char b; float c; printf(“Please input an integer:“); scanf(“%d“, ,58,以任意分隔符输入加法算式,可能吗?,#include int main(void) int data1, data2, sum; char op; printf(“Please enter the expression data1 + data2n“); scanf(“%d%1s%d“, ,12+3,12 + 3,12 + 3,59,顺序程序设计,由计算机向屏幕上输出一个数 #include /包含伪随机数生成函数 #include /包含取系统时间的函数 #include int main(void) srand(time(NULL); /随机数种子初始化 printf(“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论