分享
分享赚钱 收藏 举报 版权申诉 / 100

类型第3章_结构化程序设计.ppt

  • 上传人:dzzj200808
  • 文档编号:3198724
  • 上传时间:2018-10-07
  • 格式:PPT
  • 页数:100
  • 大小:953KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第3章_结构化程序设计.ppt
    资源描述:

    1、1,第3章 结构化程序设计,3.1 基本语句 3.2 顺序结构 3.3 选择结构 3.4 循环结构 3.5 简单程序设计实例,2,3.1 基本语句表达式语句,基本语句主要有表达式语句、空语句、goto语句、break语句、continue语句、return语句等。基本语句都以分号为结束符。 1表达式语句 格式:表达式; 例如:k+; k = k+2;,3,3.1 基本语句空语句,2空语句 格式:; 功能:什么也不做的语句。 例如:for( , , ) ; /* 无循环体 */if(条件1)if(条件2)语句1;else ;else语句2;,4,3.1 基本语句break语句,3break语句

    2、格式:break; 功能:强制结束它所在的控制结构 (switch或循环结构)。 例如:for( , , ) /* 大括号内是循环体 */语句1;break; /* 跳出循环,转做语句2 */语句2;,5,3.1 基本语句continue语句,4continue语句 格式:continue; 功能:提早结束当前轮次循环体的执行,进入下一轮循环。 例如: for( , , ) /* 大括号内是循环体 */语句1;continue; /* 不执行语句2 */语句2;语句3;,6,3.1 基本语句return语句,5return语句 格式:return;或 return 表达式; 功能:结束函数的这

    3、次执行,将控制返回到函数调用处。 说明:return; 只能用于函数不返回结果的函数体中;return 表达式; 用于函数有返回结果的函数体中。 例如:void swap(int a, int b) /* 大括号内是函数体 */语句1;return; /* 不执行语句2,返回到调用函数 */语句2;,7,3.1 基本语句goto语句,6goto语句 格式:goto 语句标号; 功能:控制立即转移到goto后标号所指定的语句处继续执行。 例如: start: i = 0;.goto start;,8,3.2 顺序结构,目前,结构化程序设计提供三种基本结构:顺序结构、选择结构和循环结构 顺序结构:

    4、描述一个计算步骤序列,表示从步骤序列的第一个计算步骤开始,顺序执行每个计算步骤,直至最后一个计算步骤。 在C程序中,顺序执行的语句序列,用花括号括住,就构成C语言的复合语句。 复合语句中的每个计算步骤可以是单个语句,也可以是一个控制结构。,9,顺序结构 例,【例】交换变量x、y的值。 可分解为以下顺序执行的三个计算:temp = x; /* 将x的值保存到变量temp */x = y; /* 变量x置y值 */y = temp; /* 变量y置temp的值 */若把交换变量x、y的值作为一个不可分割的整体来考虑,应把它们写成复合语句: /* 本复合语句要求外面为它定义temp变量 */temp

    5、 = x;x = y;y = temp;,10,顺序结构 说明,在构造复合语句时,为完成指定的工作,可能需要临时工作变量,例如,以上述中的temp变量。在语句序列中插入变量定义,引入只有复合语句内的语句可使用的临时变量。例如,将前面的例子改写成以下形式: int temp; /* 定义自己专用的临时变量 */temp = x;x = y;y = temp;,11,3.3 选择结构,选择结构可分为两路条件选择结构和多路按值选择结构两种。 3.3.1 两路条件选择结构 (if 语句)由一个条件和两个供选择的分支语句组成,用于按条件成立与不成立两种情况,作两种选一的控制。,12,两路条件选择结构 (

    6、if 语句),if 语句的一般形式为:if (表达式)语句1else语句2,例如:if (a b) printf(“MAX = %fn“, a);else printf(“MAX = %fn“, b); 说明:当ab成立时,输出a,否则,输出b。,13,if 语句无else,当 if 语句中的语句2为空语句时, if 语句的形式为:if (表达式)语句,例如:max=a;if (max b) max=b;printf(“MAX = %fn“, max); 说明:将a、b中大的数存于max,最后输出max。,14,if 语句例3.1和3.2,【例3.1】求m = max(a, b)。 if (

    7、a c /* 不能构成三角形 */,15,if 语句例3.3和3.4 ( if 嵌套),【例3.3】若ch中的字符为大写字母,则改为对应的小写字母。 if (ch=A ,16,if 语句的嵌套,if (表达式1)if (表达式2)语句1else语句2,执行语句2的条件是:(表达式1) & !(表达式2) 还是 !(表达式1),else 总是与它前面最接近的 if 对应,if (表达式1)if (表达式2)语句1 else语句2,17,if 语句的嵌套说明,上例中若要执行语句2的条件为: !(表达式1),可用以下两种方法实现: 方法一:if (表达式1) /* 将分支语句变成一个复合语句 */i

    8、f (表达式2) 语句1 else 语句2 方法二:if (表达式1)if (表达式2) 语句1else; /* 这里有1个空语句 */else 语句2,18,3.3.1 if 语句的说明,如果if语句中的语句、语句1、语句2是一个简单语句,在这些简单语句之后会有一个分号。 如果if语句中的语句、语句1、语句2是由多个语句组成的顺序结构时,则必须将它们写成复合语句。 【例】 if ( a b ) /* 按小到大排列 */ temp = a; a = b; b = temp;,19,3.3.1 if 语句的说明,如果if语句中的语句、语句1、语句2是一个简单语句,在这些简单语句之后会有一个分号。

    9、 如果if语句中的语句、语句1、语句2是由多个语句组成的顺序结构时,则必须将它们写成复合语句。 【例】 if ( a b ) /* 按小到大排列 */ temp = a; a = b; b = temp;,20,3.3.1 if 语句的说明,3. 在if语句中,每个else总要与它前面的if对应,不可能出现没有对应if 的else。 【例】 if ( a b ) max = b;else max = a;else max = c; /* 错误 */,21,【例3.5】输入3个整数,输出它们中的最大数,为求三个数中的最大者,最简洁的办法是先将其中某一个预作最大者,然后逐一与其它两个数比较,当发现

    10、有更大者时,就以它重置最大者。 #include void main() int a, b, c, max;printf(“输入3个整数. n“);scanf(“%d%d%d“, ,22,【例3.6】输入三个整数,按值大到小的顺序输出,要求:有x、y、z三个变量,使满足关系 x = y = z。 方法:先调整x和y,使 x = y;再调整x和z,使 x = z;至此,x为最大值。最后再调整y和z,使 y = z。 #include void main() int x, y, z, temp;printf(“Enter x, y, z.n“);scanf(“%d%d%d“, ,23,【例3.7】

    11、求一元二次方程的根,设一元二次方程为ax2+bx+c=0,对输入的系数a、b、c,有以下几种情况需要考虑: (1) a0: 方程有两个根。 (2) a=0, b0: 方程退化为bx+c=0,方程根为:-c/b。 (3) a=0, b=0: 方程为同义反复(c=0),或 矛盾(c0)。 由以上分析得到以下程序结构: (1) 输入方程系数 a, b, c;if ( a != 0.0 ) (2)求两个根;else if ( b != 0.0 ) (3) 输出方程根 -c/b;else if ( c = 0 ) (4) 输出方程同义反复字样;else (5) 输出方程矛盾字样; ,24,【例3.7】求

    12、一元二次方程的根分析,分析1:对步骤、,用C语言描述非常简单。 分析2:对步骤,根椐判别式: =b2-4ac0,有两个实根=b2-4ac0,有两个复根对于两个复根情况,可分别计算它们的实部和虚部。对于实根,也可根据上面给出的公式计算两个根。但是考虑到 b2 4ac 时,有一个根就非常接近零。数值计算中,两个非常接近的数执行减法求出的值的精度很低。为此先求出一个绝对值大的根root1。然后,利用根与系数的关系: root1*root2 = c/a即 root2 = c/(a*root1) 求出 root2。,25,【例3.7】求一元二次方程的根程序,#include #include /* 使用

    13、数学库函数 */ void main() double a, b, c, delta, re, im, root1, root2;printf(“输入方程系数 a, b, cn“);scanf(“%lf%lf%lf“,26,【例3.7】求一元二次方程的根程序续,elseprintf(“两复根分别是: %7.5f+%7.5fI, %7.5f-%7.5fIn“,re, fabs(im), re, fabs(im);else /* a = 0.0 */if (b != 0.0) printf(“单根 %7.5fn“, -c/b);else if (!c) printf(“方程同义反复.n“);els

    14、e printf(“方程矛盾.n“); ,27,说明: if后面的表达式类型任意,语句可以是复合语句if(x) if(x!=0)if(!x) if(x=0),例 考虑下面程序的输出结果: #include void main() int x,y; scanf(“%d,%d”, ,Compile Error!,28,一般形式:,29,if 语句中的“表达式”一定要用()括起来, 如:if ab ; ()表达式后面只控制一条语句,但可以是一条 复合语句if else 配对原则:缺省 时,else总是和它上面离它最近的需配对的if配对,实现if else 正确配对方法:加 ,30,例: if (a=

    15、 =b)if(b= =c)printf(“a= =b= =c”);elseprintf(“a!=b”);,修改: if (a= =b) if(b= =c)printf(“a= =b= =c”);elseprintf(“a!=b”);,按照配对原则,else与最近的未 配对的if配对如果需要如红箭头 所示配对的话则应修改如下:,31,看下面程序,写输出结果: #include void main()/注意程序的缩进规则 int x=100,a=10,b=20;int v1=5,v2=0;if(ab)if(b!=15)if(!v1)x=1;elseif(v2) x=10;x=-1;printf(“

    16、x=%d”,x);,答案:x=-1,32,读程序写结果:第1题 #include void main( ) int a,b,c;int x=35;a=b=c=0;if(!a)x-;else if(b) if(c)x=3;else x=4;printf(“x=%d“,x); ,第2题 #include void main( ) int a,b,c;int x=35;a=b=c=0;if(!a)x-;else if(b) ;if(c)x=3;else x=4;printf(“x=%d“,x); ,答案:x= 34,答案:x= 4,33,第三题 #include void main() int m=

    17、5;if(m+5)printf(“%dn”,m);else printf(“%dn”,m-); ,答案:6,34,if 语句的练习(填空),当a=1,b=3,c=5,d=4时,执行下面一段程序后,x的值是() /注意程序的缩进规则 if(ab) if(cd)x=1; else if(ac) if(bd)x=2; else x=3;else x=6; else x=7;,答案:2,35,3.3.2 多路按值选择结构,switch语句描述多路按值选择结构。 switch语句的一般形式为:switch (表达式) case 常量表达式1: 语句序列1case 常量表达式2: 语句序列2.case 常

    18、量表达式n: 语句序列ndefault : 语句序列n+1,36,switch 语句执行过程,说明:若遇到break语句,则直接转向switch出口,37,switch 语句说明,1. switch后面括号内的表达式只限于是整型表达式、字符型表达式或枚举型表达式。 当表达式的值与某一个“case 常量表达式”的值相等时,就执行case后面的语句,只要未遇到break语句或goto语句就一直向下执行,直至switch语句出口。 只有当所有条件都不匹配时,才执行default后面的语句序列。 每一个case的常量表达式的值必须互不相同,并与switch后面括号内的表达式值的类型相一致。 语句序列由

    19、任意条合法的语句构成,也可以没有语句。,38,void main() char choice;printf(“Enter choice !(A, B, C, .n“);scanf(“%c“, 如输入字符B ,则程序的执行将输出:B chosen!C chosen!default chosen!,【例3.8】输入选择,输出相应的选择名称,39,switch 语句break语句,break作用:控制转向switch语句的后继语句,即跳 出Switch语句。 【例3.9】根据天气情况,安排活动。 int w_con; /* 天气情况变量定义 */ printf(“天气如何? 1:晴天, 2:多云,

    20、3:下雨 “); scanf(“%d“, ,40,【例3.10】计算,switch (int) (x+0.5) case 1: y = sin(x); break;case 2:case 3:case 4: y = log(x); break;case 5:case 6:case 7: y = exp(x); break;default : printf(“自变量x值超出范围n “); break; ,41,例 #includevoid main() / switch 语句的嵌套 int x=1,y=0,a=0,b=0;switch(x) case 1:switch(y) case 0: a+

    21、; break;case 1: b+; break;case 2: a+;b+; break;case 3: a+;b+;printf(“na=%d,b=%d”,a,b);,运行结果: a=2,b=1,42,#include void main( ) int a=1,b=2;int y;switch(pow(a,2)+pow(b,2)case 1: case 3:y=a+b;break;case 0:case 5:y=a-b;printf(“%5d%d“,y,a); ,分析:错 因为switch后面括号内表达式不能为double,43,void main() int x=0,y=2,z=1;

    22、switch(x) case 0: switch(y=2) case 1:printf(“*“);break;case 2:printf(“%“);break;case 1: switch(z) case 1:printf(“$“);case 2:printf(“*“);break;default:printf(“#“); ,运行结果: *$*,44,为什么需要循环?,编程计算10的阶乘现需要把十个同学的成绩输入计算机,并进行统计计算平均值,请用前面学过的知识编程来解决,45,3.4 循环结构,C语言提供描述三种不同的循环结构的语句: while语句、do_while语句、for语句 3.4.

    23、1 while语句 一般形式:while (表达式)语句 执行过程: (1) 计算循环条件表达式的值 (2) 当表达式的值为非0时,转步骤(3);当表达式的值为0时,结束循环 (3) 执行循环体,并转步骤 (1) 说明:若循环体由两个以上语句组成,循环体应写成复合语句,循环体,46,执行流程:,expr,循环体,假(0),真(非0),while,while 循环语句 下面的语句,47,例 用while循环求,#include void main() int i,sum=0;i=1;while(i=100) sum=sum+i;i+;printf(“%d“,sum); ,循环变量增值,循环体,s

    24、um=0+1 sum=1+2=3 sum=3+3=6 sum=4950+100=5050,48,while语句说明,循环体如果包含一个以上的语句,应该用花括号括起来,以复合语句形式出现;如果不加花括号,则while语句的范围只到while后面第一个分号处。 在循环体中,应有使循环趋向于结束的语句。如上例中循环结束的条件是i100,用i+语句达到此目的;如果无i+语句,将导致循环条件永远成立,永不结束。 当循环体为空时,可用空语句代替。 例:跳过输入的空白类字符:while( (c=getchar() ) = | c = t );,无循环体, 用空语句表示,49,while语句说明(续),4.

    25、有时很难写出循环条件,可用 1 代之 (表示条件为真), 但在循环体中必须有 break 语句(用于跳出循环)。while (1) .if (表达式) break;.,50,#include void main() int i=1;while(i=10) printf(“%d*%d=%dn“,i,i,i*i);i+; ,运行结果: 1*1=1 2*2=4 3*3=9 4*4=16 5*5=25 6*6=36 7*7=49 8*8=64 9*9=81 10*10=100,51,1、设有如下程序: #include void main() int n=9;while(n6) printf(“%d“

    26、,n); printf(“%d“,n); 该程序段的输出结果是_A) 987 B)876 C) 8765 D)9876,答案:C,解答:不管是否满足循环条件,n=n-1都要进行,52,【例3.12】求学生平均成绩,当输入负数时结束,#include void main() int sum, count, mark;sum = 0; count = 0;while (1) /* 循环条件永远为真 */printf(“输入成绩(小于0 结束)n“); scanf(“%d“, ,53,#include void main() int c, nwhite, nother, ndigit;nwhite=

    27、nother=ndigit=0;printf(“Enter string linen“);while (c=getchar() != n) switch(c) case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: ndigit+; break;case : case t: nwhite+; break;default: nother+; break;printf(“digit=%dtwhite space=%dtother=%dn“, ndigit, nwhite, nother); ,【

    28、例3.13】统计输入字符行中,空白类字符、数字符和其它字符的个数,54,3.3.2 do-while语句,执行过程: (1) 执行循环体 (2) 求循环条件表达式的值 (3) 当表达式的值为非0时,转步骤 (1);当表达式的值为0时,结束循环。 注意:分号是do-while语句的结束符,不能省略。,循环体,一般形式:,do 循环体语句;while(表达式);,55,执行流程:,do,循环体,expr,假(0),真(非0),while,do while循环 下面的语句,56,特点:先执行循环体,后判断条件表达式 说明: 至少执行一次循环体 dowhile可转化成while结构,57,58,do-

    29、while语句说明,与while语句一样,当循环体由多个语句组成时,必须把它们书写成复合语句。 while与do-while区别 while:先判别表达式,后执行循环体,当 while 表达式第一次为假时,循环体一次也不执行。 do-while:先执行循环体,后判别表达式。因此,使用do-while至少执行一次循环体。,59,选择题:假定a和b为int型变量,则执行以下语句后b的值为_a1; b10;do ba; a; while (b0);A) 4 B)5 C) 1 D)6,答案:A,解答:不管是否满足循环条件,b=b-1都要进行,60,do-while语句 例,【例3.16】查找一个最小整

    30、数,要求满足以下条件:被3除余2,被5除余3,被7除余4。 #include void main() int i = 2;do i+;while (!(i%3 = 2 ,结果为:53,61,3.4.3 for语句,执行过程: (1) 计算表达式1 (2) 当表达式2的值为非0,转步骤(3);当表达式2的值为0,结束循环 (3) 执行循环体语句 (4) 计算表达式3 (5) 转向步骤(2)。,循环体,一般形式: for(expr1 ; expr2 ; expr3)循环体语句;,62,执行流程:,expr2,循环体,假(0),真(非0),for,expr1,expr3,63,for语句一般应用形式

    31、:,for(循环变量赋初值;循环条件;循环变量增值) 循环体语句; ,说明:for语句中expr1, expr2 ,expr3 类型任意且都可省略,但分号;不可省无限循环: for( ;),64,for 语句说明,1. for语句的一般形式中,表达式1、表达式2 和表达式3都可以省略。 表达式1省略:表示没有赋初值部分,或在for语句前已为有关变量赋了初值。 例: 求 s = 1 + 2 + + 100s = 0;i = 1;for( ; i = 100; i+)s += i;,65,表达式2省略:表示循环条件永远为真,可能循环体内有控制转移语句转出for语句。 例: for(s = 0, i

    32、 = 1; ; i+) s += i;if(i = 100) break; 表达式3省略:表示没有修正部分,对变量的修正已在循环体内一起完成。for(s = 0, i = 1; i = 100;) s += i+;,for 语句说明(续),66,不管表达式1、表达式2和表达式3省略情况如何,其中两个分号都不能省略。 如果三个表达式都省略,用以下形式表示:for( ; ; )语句 表达式1、表达式2和表达式3都可包含逗号运算符,由多个子表达式组成。 例: for(s=0,i=1;i=100;i+)s +=i;,for 语句说明(续),67,对于 s = 1 + 2 + + 100 的计算 下面都

    33、是合理的for语句描述。 for(s=0,i=1; i=100; s+=i, i+); for(s=0,i=1; s+=i,i100; i+); for(s=0,i=0; i100; +i, s+=i); for(s=0,i=1; i=100; s+=i+);,for 语句说明(续),68,while 、dowhile和for循环结构中的“循环 体” 都只能是一条语句!如果需要使用多条 语句来完成的循环体的功能,则应使这些语 句组成一条复合语句!,69,写出程序结果 #include void main() int v1=0,v2=0;char ch;while(ch=getchar()!=#

    34、)switch (ch) case a:case h:case o:v2+;default:v1+;printf(“v1=%d,v2=%d“,v1,v2); 如从键盘输入china#,答案: v1=5,v2=2,70,习 题,求下列循环体 的执行次数for (int i=0,j=3;i=j+1;i+=2,j-)printf(“%d”,i);,答案:两次,71,填空题:共1题 1、设i,j,k均为int型变量,则执行完for循环 for(i=0,j=10;i=j;i+,j-) k=i+j; ,k的值为【1】.,答案:10,72,选择题:共两题 1、若有int x;且有下面程序片段,则输出结果是

    35、_。 for (x=3;x6;x+)printf(x%2)? “*%d“:“#%dn“,x); A.*3 B. #3 C. #3 D. *3#4#4 *4 *4#5 *5 *5 #5,答案:D,73,2、有以下程序: void main( ) int x,I;for(I=1;I=50;I+) x=I;if(+x%2=0)if(x%3=0)if(x%7=0) printf(“%d”,I); 输出结果是_ A. 28 B. 27 C. 42 D. 41,答案:D,74,1、break语句 功能:在循环语句和switch语句中,终止并跳出循环体或开关体 说明: break只能终止并跳出最近一层的结构

    36、 break不能用于循环语句和switch语句之外的任何其它语句之中,75,expr, break; ,假(0),真(非0),while,76,77,功能:结束本次循环,跳过循环体中尚未执行 的语句,进行下一次是否执行循环体的判断仅用于循环语句中,78,expr2, continue; .,假(0),真(非0),for,expr1,expr3,79,80,81,C+语言的跳转语句中,对于break和continue说法正确的是( ). A) break语句只使用于循环体中 B) continue语句只应用于循环体中 C) break是无条件跳转语句,continue不是 D) break和co

    37、ntinue的跳转范围不够明确,容易产生问题,答案:B,82,循环的嵌套:一个循环体内又包含另一个完整的循环结构三种循环可互相嵌套,层数不限外层循环可包含两个以上内循环,但不能相互交叉嵌套循环的几种常见形式:,(1) while( ) while( ) .,(2) do do while( );.while( );,83,(4) for( ; ;) do while();while() .,(3) while() do while( );.,84,禁止: 从外层跳入内层 跳入同层的另一循环中 向上跳转,85,选择题:共三题 1、有以下程序 # include void main() /循环的嵌

    38、套 int I,j; for(j=10;jj) printf(“%d“,j); 输出结果为_ A. 91011 B. 9910 C. 1011 D. 101011,答案:B,86,2、有以下程序 # include void main() int a,b; for(a=1, b=1; a10) break;if (b%3=1) b+=3; continue; printf(“%d“,b); printf(“%dn“,a); 输出结果为_ 4710135 B) 4710136 C) 5 D) 4,答案:C,87,3、有以下程序 main() int n;for(n=1;n=10;n+)if(n%

    39、3=0) continue;printf(“%d“,n); 输出结果为_ A:12457810 B:369 C:12 D:1234567890,答案:A,88,编程求:sum=d+dd+ddd+ +dd.d(n个d), 其中d为19的数字。例如4+44+444+4444+44444(此时d=4,n=5),d和n通过scanf函数输入。,89,#include void main() int n,d;int i=1,sum=0,t;scanf(“%d,%d“, ,90,1.猴子吃桃问题有一只猴子第一天摘了若干个桃子,当天吃了一半,可后来嘴馋,又多吃了一个;第二天早上又吃掉剩下桃子的一半后,又多吃

    40、了一个;以后每天都按照相同的规律吃掉前一天剩下桃子的一半再多一个,到第10天早上来吃时,发现只剩下一个桃子,请编程求出第一天摘了多少个桃子,分析:设第十天早上剩下的桃子数为num,则第九天早上剩下的桃子数为多少?第九天早上剩下的桃子数为 :2*(num1)第八天早上剩下的桃子数为 :2*(2*(num1)1)依次类推,可以编程求出第一天摘了多少个桃子,91,#include void main( ) int num=1;int i;for(i=9;i=1;i-)num=2*(num+1);printf(“num=%d“,num); ,92,写出程序结果 #include void main()

    41、 int i,j,sum,m,n=4;sum=0;for(i=1;i=n;i+)m=1;for(j=1;j=i;j+)m=m*j;sum=sum+m;printf(“sum=%dn“,sum); ,答案:sum=33,93,写出程序结果 #include void main() int a,b;for(a=1,b=0;a=20) break;if(b%3=1) b+=3;continue;b+=5;printf(“a=%dt“,a); ,答案: a=7,94,课堂练习,1.编写程序求任意一个正整数的各位数字 之和,并逆序输出.例如:输入25483,则各位数字 之和为22,逆序输出38452 2

    42、. 编程求1!+2!+3!+10!,95,#include void main() int x,copy,sum=0,y=0;scanf(“%d“, ,第一题参考答案,96,3.4.4 三种循环语句比较,【例3.19】p = 1 - 1/3 + 1/5 - 1/7 + 要求:当某项的绝对值小于0.000001时程序结束。 一、使用while循环语句对当前项t的绝对值不小于0.000001时循环求和,并修正变量d(作为分母)和t,其代码为:p=0.0; d=1; t=1.0; while(fabs(t) = 1.0e-6) p += t;d += 2; /* 后一项的分母递增2 */t = (d

    43、-1)%4 ? - 1.0/d : 1.0/d; /* (d-1)能除尽4则当前项为正,否则为负 */,97,二、使用 do-while 循环语句,循环求和,并修正变量d(作为分母)和t(作为当前项),直至新的t的绝对值小于0.000001时结束,其代码为: 【例3.19】p = 1 - 1/3 + 1/5 - 1/7 + p=0.0; d=1; t=1.0; do p += t;d += 2; /* 后一项的分母递增2 */t = (d-1)%4 ? - 1.0/d : 1.0/d; while (fabs(t) = 1.0e-6);,98,三、使用 for 循环语句,从变量d(作为分母)初

    44、值为1.0、t (作为当前项)初值为1.0开始,当t的绝对值不小于0.000001时循环求和,每次循环后相应地修正变量d和t,其代码为: 【例3.19】p = 1 - 1/3 + 1/5 - 1/7 + for(p=0.0, d=1, t=1.0; fabs(t) = 1.0e-6; d += 2, t = (d-1)%4 ? - 1.0/d : 1.0/d)p += t;,99,3.5 简单程序设计实例,【例3.22】输入整数n,输出由2*n+1行、2*n+1列组成的以下形式(n = 2)的图案。* * * * * * * * * 分析:图案上面由n+1行,下面有n行。同一行上的两个星号字符之间有一个空格符。对于上半部分,设第一行的星号字符位于屏幕的中间,则后行图案的起始位置比前行起始位置提前两个位置。而对于下半部,第一行的起始位置比上半部最后一行起始位置前进两个字符位置,以后各行也相继进两个位置。,上半部分,下半部分,100,【例3.22】程序,#include void main() int n, j, k, space;printf(“Enter n!n“); scanf(“%d“, ,

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第3章_结构化程序设计.ppt
    链接地址:https://www.docduoduo.com/p-3198724.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开