您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 第3章程序的控制结构
C语言程序设计湖北民族学院信息工程学院张帆18671822868fzhang_hbmy@qq.com第3章程序的控制结构3.1算法与语句3.1.1算法及其特征一个程序包括以下两方面的内容:(1)数据的描述和组织形式。在程序中要指定数据的类型和数据的组织形式,即数据结构。(2)对操作的描述,即操作步骤,也就是算法。瑞士计算机科学家N•沃思(NikiklausWirth)教授提出了程序定义的著名公式:程序=数据结构+算法程序设计需解决两个问题:程序按什么顺序或步骤执行——算法使用什么语句实现1.算法的概念计算机解决问题的方法和步骤就是计算机算法,即算法是对某一特定问题的求解步骤的一种描述。2.算法的特性1)有穷性:一个算法必须保证执行有限步之后结束;2)确定性:算法的每一个步骤必须具有确切的定义;3)有效性:算法的每一步都必须是计算机能进行的有效操作;4)输入:一个算法有零个或多个输入;5)输出:一个算法有一个或多个输出。3.1算法与语句3.1算法与语句3.1.2算法和程序结构算法含有两大组成要素:1.操作C语言所描述的操作主要包括算术运算、逻辑运算、关系运算、函数运算、位运算和I/O操作等。2.控制结构控制结构控制算法所描述的各种操作的执行顺序。顺序结构选择结构循环结构算法设计中,由三种基本结构可组成任何复杂结构的算法。3.1.3算法的描述自然语言描述传统流程图描述用N-S图描述伪代码描述3.1算法与语句1.用自然语言描述算法例:用自然语言描述算法求5!(1)原始方法:①:求1×2,得到结果2;②:将①中的结果乘以3,得到新的结果6;③:将②中的结果乘以4,又得到新的结果24;④:将③中的结果乘以5,得到最后的结果120。(2)改进方法①:定义整型变量facto,初始值置为1;②:定义整型变量i,初始值置为2;③:使facto×i,将乘积赋值给变量facto;④:使i+1,将结果赋值给i;⑤:判断i的值是否小于或等于5,如果是,返回③并重复③④,否则输出facto的值。1.用自然语言描述算法2.用传统流程图描述算法流程图是对给定算法的一种图形解法。也称框图,用规定的一系列图形、流程线及文字说明表示算法。具体例子见教材用传统流程图表示求5!的算法FTfac=fac*ii=5?开始结束fac=1;i=2;i=i+13.用N-S图描述算法N-S图也是一种流程图形式,它摒弃了流程线,算法描述在一个矩形框内。例:用N-S图描述求5!的算法fac=1直到i5fac=fac×ii=i+1输出faci=24.用伪代码描述算法Begin(算法开始)fac=1i=2whilei=5{fac=fac*1i=i+1}printfacEnd(算法结束)例:用伪代码描述求5!的算法书本例子错误!语句说明语句表达式语句空语句控制语句复合语句条件控制语句跳转控制语句循环控制语句3.1.4C语言的语句分类1.说明语句说明语句是对变量或被调函数的声明,不产生机器指令,其作用是描述程序中被处理数据(变量或函数)的名称和类型,供编译程序使用。说明语句可以出现在程序中任何块(即函数或复合语句)的外面(称为外部说明)或块中(称为局部说明)。例:inta;/*定义变量a为整型*/floatz;/*定义变量z为浮点型*/floatadd(floatx,floaty);/*函数的声明*/3.1.4C语言的语句分类2.表达式语句一般形式:表达式;例:x=10后面无分号,是赋值表达式,但不是语句x=10;后面有分号,是赋值语句3.1.4C语言的语句分类3.控制语句控制语句用于控制程序的执行流程,实现各种控制结构。C语言提供9种控制语句,可划分为三类。见教材。3.1.4C语言的语句分类4.复合语句把多条语句用一对花括号{}组成的一个语句称为复合语句。例:{intx,a=3,b=5;x=a;a=b;b=x;}注意:“}”后不加分号;复合语句在语法上等价于一个语句。3.1.4C语言的语句分类5.空语句一般形式为:;它在语法上占有一个简单语句的位置,执行该语句不做任何操作。空语句常用于循环语句中,构成空循环。3.1.4C语言的语句分类C语言程序设计湖北民族学院信息工程学院张帆18671822868fzhang_hbmy@qq.com1.数据类型转换:自动转换、赋值转换、强制转换2.算法的概念:对操作的描述,即操作步骤3.算法的描述方法:自然语言、流程图、N-S图以及伪代码4.C语言语句分类:说明、表达式、控制、复合以及空语句习题2中错误修正以及第三大题第四大题讲解上一堂课知识点回顾例a&&b例a||b例a=1;b=2;c=3;d=4;m=1;n=1;(m=ab)&&(n=cd)短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符2.3运算符与表达式//只在a为真时,才判别b的值;//只在a为假时,才判别b的值;//结果m=0,n=12.3.4逻辑运算符和表达式(4)第3章程序的控制结构3.2数据的输入与输出C语言无I/O语句,I/O操作由库函数实现#includestdio.h本节介绍用于键盘输入和显示器输出的库函数一、字符的输入与输出函数1.字符输出函数putchar()调用格式:putchar(参数);功能:在显示器上输出单个字符参数:可以是字符常量、字符型变量或整型变量,即将一个整型数作为ASCII编码输出相应的字符。返回值:输出成功返回输出字符的ASCII码值;出错,为EOF(-1)【例】输出单个字符。#includestdio.hmain(){inti=97;charch='a';putchar(i);putchar('\n');putchar(ch);}程序运行结果为:aa一、字符的输入与输出函数2.字符输入函数getchar()调用格式:getchar();功能:从键盘上读入一个字符。返值:若读入成功,返回读入字符的ASCII码值;出错,返回EOF(-1)通常把读入的字符赋予一个字符变量,构成赋值语句。例:charc;c=getchar();一、字符的输入与输出函数【例3.2】输入单个字符。#includestdio.hmain(){intch;ch=getchar();putchar(ch);}程序运行结果如下:a↙a执行getchar()时输入字符以回车结束输入。一、字符的输入与输出函数二、格式化输入/输出函数1.格式输出函数printf()调用格式:printf(“格式控制字符串”,输出项列表)功能:按格式控制字符串指定格式,向显示器输出所列出的输出项返回值:若输出成功,返回输出字节数;出错,返回EOF(-1)printf(“a=%4d,b=%4d”,a,b);格式控制字符串输出项表列1.格式输出函数printf()格式控制字符串格式说明:用于指定输出格式,由“%”、格式控制字符、附加格式修饰符组成。普通字符或转义序列:原样输出输出项表列:要输出的数据,可以没有,多个时以“,”分隔。输出项的个数必须与格式说明的个数一致,位置一一对应。printf(“a=%4d,b=%4d”,a,b);格式控制字符串输出项表列1.格式输出函数printf()格式说明:%[flags][width][.prec][F|N|H|L]type标志输出最小宽度精度长度类型(1)type类型表示格式控制字符,用来说明对应输出项的输出格式d以带符号的十进制形式输出整数(正数不输出符号)o以8进制无符号形式输出整数(不输出前导符O)x(X)以16进制无符号形式输出整数(不输出前导符Ox)u以无符号10进制形式输出整数c以字符形式输出一个字符s输出字符串f以小数形式输出单、双精度数,默认输出6位小数e(E)以标准指数形式输出单、双精度数,小数位数为6位g(G)选用%f或%e格式中输出宽度较短的一种格式1.格式输出函数printf()格式说明:%[flags][width][.prec][F|N|H|L]type标志输出最小宽度精度长度类型(2)附加格式修饰符:可根据输出格式要求进行取舍。Flags标志字符常用的:-:为左对齐,系统默认右对齐+:正数输出+,负数输出-空格:正数输出空格,负数输出-Width宽度指示符:用十进制数来设置输出值的最少输出个数,少则补空格,多则按实际输出,缺省则按实际输出。.prec精度指示符:用小数点加十进制正整数构成,用来限制输出数的精度,对于实数,指定输出的小数位数(四舍五入)。[F|N|h|L]长度修饰符:见教材例inta=1234;floatf=123.456;charch=‘a’;printf(“%8d,%2d\n”,a,a);printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f);printf(“%3c\n”,ch);运行1234,1234结果:123.456000,123.456000,123.5,123.46,1.23e+2a1.格式输出函数printf()2.格式化输入函数scanf()调用格式:scanf(格式控制字符串,地址表列)功能:按格式控制字符串指定的格式,从键盘读入数据,并存入地址表指定的内存单元。返回值:返回输入数据个数例:scanf(“%d,%d,%f”,&a,&b,&c);地址表列:由一个或多个地址组成,若有多个以逗号隔开。常用取地址运算符&得到变量地址。格式控制字符串:格式说明:说明需输入数据的类型。普通字符:输入数据时要原样输入。二、格式化输入/输出函数格式说明:%[*][width][F|N][h|L]typeType类型:是必须的,表示需输入数据的类型。d(D)十进制整数o(O)八进制整数x(X)十六进制整数i(I)自动根据数头分辨十、八、十六进制u(U)无符号十进制整数c单个字符s字符串f(e,g,G)实数n不输入数据,将已读入的字符输送到对应的地址中%百分号2.格式化输入函数scanf()格式说明:%[*][width][F|N][h|L]type*输入赋值抑制字符:输入数据但不赋给对应变量,跳过该输入。width宽度指示符:表示最多可输入的字符个数。F|N地址大小修饰符:FfarNnearh|L输入数据类型:h短整型,l长整或双精度2.格式化输入函数scanf()例:scanf(%d%*d%d,&a,&b);输入:567时把5赋予a,6被跳过,7赋予b。2.格式化输入函数scanf()说明:(1)scanf()的格式控制字符串中的普通字符必须原样输入。例:scanf(“x=%d”,&x);(2)输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符(3)scanf函数中没有精度控制,如:scanf(“%5.2f”,&a);是非法的。例scanf(“%d,%d,%d”,&a,&b,&c);输入12,24,362.格式化输入函数scanf()例scanf(“%d%d%d”,&a,&b,&c);输入122436例:输入圆的半径,输出圆的周长和面积。分析:1.定义实型变量r、c、s用于存放半径、周长、面积;2.调用输入函数,输入r:3.分别利用周长公式和面积公式求出c、s;4.调用输出函数输出c、s。3.2基本输入/输出函数#includestdio.hvoidmain(){floatr,c,s;scanf(“%f”,&r);/*输入一个浮点数据,存入地址&r*/c=2*3.14159*r;/*计算周长,赋值给c*/s=3.14159*r*r;/*计算面积,赋值给s*/printf(“\nc=%8.4f”,c);/*周长占8个字符宽,4位小数*/printf(“\ns=%8.4f”,s);/*输出面积,数据共占8个字符宽,4位小数*/}3.2基本输入/输出函数C语言程序设计湖北民族学院信息工程学院张帆18671822868fzhang_hbmy@qq.com分析:1.输入小写字母存入变
本文标题:第3章程序的控制结构
链接地址:https://www.777doc.com/doc-599397 .html