计算机基础程序结构课件

上传人:s9****2 文档编号:590567526 上传时间:2024-09-14 格式:PPT 页数:77 大小:452KB
返回 下载 相关 举报
计算机基础程序结构课件_第1页
第1页 / 共77页
计算机基础程序结构课件_第2页
第2页 / 共77页
计算机基础程序结构课件_第3页
第3页 / 共77页
计算机基础程序结构课件_第4页
第4页 / 共77页
计算机基础程序结构课件_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《计算机基础程序结构课件》由会员分享,可在线阅读,更多相关《计算机基础程序结构课件(77页珍藏版)》请在金锄头文库上搜索。

1、第四章第四章结构化程序设计结构化程序设计和控制结构和控制结构结构化程序设计结构化程序设计上个世纪六十年代末,结构化程序设计,软件发上个世纪六十年代末,结构化程序设计,软件发展的一个重要的里程碑。展的一个重要的里程碑。结构化程序设计的思路结构化程序设计的思路将一个描述复杂的问题,系统地分解成足够小的和可管理将一个描述复杂的问题,系统地分解成足够小的和可管理的单元的单元/模块,从而最终可以编写成可以正确执行的程序。模块,从而最终可以编写成可以正确执行的程序。因为该机制是将一个大规模的工作,系统地分解因为该机制是将一个大规模的工作,系统地分解为更小的单元为更小的单元/模块,因此也被称为模块,因此也被

2、称为“系统分解系统分解”。2系统分解系统分解系统分解实际上是执行任务的过程,即:对于一系统分解实际上是执行任务的过程,即:对于一个工作单元,将它分解成一组更小的单元,而这个工作单元,将它分解成一组更小的单元,而这组单元可以执行与大单元相同的任务。组单元可以执行与大单元相同的任务。这种思想实际就是:从一个大的、复杂的任务开这种思想实际就是:从一个大的、复杂的任务开始,逐步将之分解到非常小的单元,对于这些小始,逐步将之分解到非常小的单元,对于这些小单元来说,是很容易编写出程序来执行的。单元来说,是很容易编写出程序来执行的。既然该过程是一步一步被应用,而每一步都是将既然该过程是一步一步被应用,而每一

3、步都是将一个相对复杂的任务精炼成一组更简单的子任务,一个相对复杂的任务精炼成一组更简单的子任务,那么这种过程也可以称为那么这种过程也可以称为“逐步求精逐步求精”。3三种结构:顺序,条件,重复三种结构:顺序,条件,重复系统分解思想使用三种基本的控制结构来分解一系统分解思想使用三种基本的控制结构来分解一个大规模的任务,这三种基本结构是:顺序,条个大规模的任务,这三种基本结构是:顺序,条件和重复。件和重复。4顺序结构顺序结构顺序结构,就是将一个指定的任务分解成两个子顺序结构,就是将一个指定的任务分解成两个子任务,一个接着一个。也就是说,当执行完第一任务,一个接着一个。也就是说,当执行完第一个子任务之

4、后再继续执行下一个子任务个子任务之后再继续执行下一个子任务而从而从第二个子任务返回第一个子任务的情况永远不会第二个子任务返回第一个子任务的情况永远不会发生。发生。长度单位换算的问题长度单位换算的问题执 行 第 1部分(b) 顺序执 行 第 2部分5条件结构条件结构条件结构,又称判定结构,根据条件的不同每次条件结构,又称判定结构,根据条件的不同每次只执行两个子任务中的其中一个。只执行两个子任务中的其中一个。当条件为真时,执行某一个子任务,若为假则执行另一个。当条件为真时,执行某一个子任务,若为假则执行另一个。任何一个子任务都可以为空,也就是说,它可以任何一个子任务都可以为空,也就是说,它可以“什

5、么都什么都不做不做”。但不管结果如何,当正确的子任务执行完后,程但不管结果如何,当正确的子任务执行完后,程序始终向前行进,永远不会回头去再次测试条件。序始终向前行进,永远不会回头去再次测试条件。子任务1(c) 条件子任务2测试条件真假6重复结构重复结构重复结构,又称循环结构,只要条件为真就需要重复结构,又称循环结构,只要条件为真就需要将某一个子任务多次执行时就将使用这种程序结将某一个子任务多次执行时就将使用这种程序结构。构。当条件为真,执行这一子任务;子任务执行结束当条件为真,执行这一子任务;子任务执行结束后,回头再次检测条件是否为真。后,回头再次检测条件是否为真。只要被测试的条件为真,程序就

6、会继续执行这一只要被测试的条件为真,程序就会继续执行这一相同子任务。一旦条件不为真,程序就向前行进。相同子任务。一旦条件不为真,程序就向前行进。子任务(d) 重复测试条件真假7控制结构控制结构条件条件ifif-elseswitch重复重复whilefordo-while8ifif (condition) action;conditionactionTFCondition ,一个C表达式,TRUE (non-zero) 或 FALSE (zero).Action ,一条C语句,简单语句或复合语句.9示例示例if (x = 10) y = x * x + 5;if (x = 10) y = x *

7、 x + 5; z = (2 * y) / 3;if (x = 10) y = x * x + 5; z = (2 * y) / 3;复合语句;如果 x = 10,都执行如果x = 10,执行第一条;第二条语句总会执行10换行和缩进风格换行和缩进风格if语句通行的换行和缩进风格。语句通行的换行和缩进风格。这样的编程风格使得阅读该段代码的人能够很快这样的编程风格使得阅读该段代码的人能够很快的识别出如果条件成立将被执行的部分。请记住,的识别出如果条件成立将被执行的部分。请记住,风格只是增强了代码的可读性,并不影响程序的风格只是增强了代码的可读性,并不影响程序的执行。执行。11更多示例更多示例if(

8、temperature=0)printf(Atorbelowfreezingpoint.n);if(key=K)numK+;if(month=4|month=6|month=9|month=11)printf(Themonthhas30daysn);12常见错误常见错误if(18=age=25)/*此条件总是为真此条件总是为真*/num+;if(x=2)/*此条件总是为真此条件总是为真*/y=3;/*变量变量y总会被赋值为总会被赋值为3*/13if嵌套嵌套if (x = 3) if (y != 6) z = z + 1; w = w + 2; if (x = 3) & (y != 6) z =

9、 z + 1; w = w + 2;等价于等价于14if-elseif (condition) action_if;else action_else;conditionaction_ifaction_elseTF15示例示例if(temperature=0)printf(Atorbelowfreeingpoint.n);elseprintf(Abovefreezing.n);等价于等价于if(temperature0)printf(Abovefreeing.n);16示例示例if(x)y+;z-;elsey-;z+;17成绩等级换算成绩等级换算级联的级联的if-else#includeintm

10、ain()chargrade;/*成绩等级成绩等级*/*获得输入值获得输入值*/printf(“Enterthegrade:”);scanf(%c,&grade);/*执行换算执行换算*/if(grade=A)printf(90100n);elseif(grade=B)printf(8089n);elseif(grade=C)printf(7079n);elseif(grade=D)printf(6069n);elseif(grade=E)printf( 3) z = z / 2; else z = z * 2;if (x != 10) if (y 3) z = z / 2; else z =

11、 z * 2;等价于if (x != 10) if (y 3) z = z / 2;else z = z * 2;不同于19使用使用大括号结合语句大括号结合语句条件表达式:条件表达式:x?y:z20if-else:错误检查错误检查#includeintmain()intdividend;intdivisor;intresult;printf(Enterthedividend:);scanf(%d,÷nd);printf(Enterthedivisor:);scanf(%d,&divisor);if(divisor!=0)result=dividend/divisor;printf(

12、Theresultofthedivisionis%d.n,result);elseprintf(Adivisorofzeroisnotallowed.n);21whilewhile (test) loop_body;testloop_bodyTF在条件为真的情况下重复执行一个语句。在在条件为真的情况下重复执行一个语句。在每次重复执行这个语句之前,都要先检查条每次重复执行这个语句之前,都要先检查条件。如果条件的值为逻辑真(非零),语句件。如果条件的值为逻辑真(非零),语句将被再次执行。将被再次执行。22示例示例#includeintmain()inti=0;while(i10)printf(%d

13、,i);i=i+1;while语句适用于使用语句适用于使用标志控制标志控制的循环。的循环。事先并不知道重复的次数,只知道循环需要继续直到某个事先并不知道重复的次数,只知道循环需要继续直到某个事件(即标志)发生。事件(即标志)发生。23无限循环无限循环#includeintmain()inti=0;while(i10)printf(%d,i);24forfor (init; end-test; re-init) statementinittestloop_bodyre-initFT25forfor循环循环,适用于适用于记数器控制记数器控制的循环。的循环。for循环是循环是while循环的一种特殊

14、情况,它适用于事循环的一种特殊情况,它适用于事先知道重复次数的情况。先知道重复次数的情况。for循环可以使用循环可以使用while循环来构造(反之亦然)循环来构造(反之亦然)#includeintmain()inti;for(i=0;i10;i+)printf(%d,i);26示例示例/*-这个循环会输出什么?这个循环会输出什么?-*/for(i=0;i=10;i+)printf(“%d”,i);27计算计算9的阶乘的阶乘#includeintmain()inti;intresult=1;for(i=9;i1;i-)result=result*i;28常见错误常见错误result=1;for(

15、i=9;i1;i-);result=result*i;printf(result=%dn,result);printf(i=%dn,i);29循环嵌套循环嵌套#includeintmain()intmultiplicand;/*被乘数被乘数*/intmultiplier;/*乘数乘数*/*外层循环外层循环*/for(multiplier=1;multiplier10;multiplier+)/*内部循环内部循环*/for(multiplicand=1;multiplicand=multiplier;multiplicand+)printf(%d*%d=%dt,multiplicand,mult

16、iplier,multiplicand*multiplier);printf(n);“t”,制表符,制表符30do-whiledo loop_body;while (test);loop_bodytestTF在循环体被执行一次之后再计算在循环体被执行一次之后再计算条件表达式的值条件表达式的值31示例示例i=0;doprintf(%dn,i);i=i+1;while(i10);32编程风格编程风格对于以上三种类型的重复结构,哪些情况下采用对于以上三种类型的重复结构,哪些情况下采用while,哪些情况采用,哪些情况采用for,哪些情况采用,哪些情况采用do-while?在大部分情况下,这三种结构可

17、以互换使用。在大部分情况下,这三种结构可以互换使用。区别在于编程风格:为了提高代码的可读性,更区别在于编程风格:为了提高代码的可读性,更好的将循环的目的传达给阅读代码的人,而选择好的将循环的目的传达给阅读代码的人,而选择恰当的结构。恰当的结构。33switchswitch (expression) case const1: action1; break;case const2: action2; break;default: action3;evaluateexpression= const1?= const2?action1action2action3TTFF34switch给编译器提供一个

18、可以通过跳过一些测试以优化给编译器提供一个可以通过跳过一些测试以优化这些代码的机会。这些代码的机会。使用使用switch语句代替级联的语句代替级联的if-else语句语句35switch语句的一般形式语句的一般形式switch(表达式表达式)case常量表达式常量表达式1:/*语句语句1*/break;/*可选可选*/case常量表达式常量表达式2:/*语句语句2*/break;/*可选可选*/case常量表达式常量表达式n:/*语句语句n*/break;/*可选可选*/default:/*语句语句n+1*/36计算过程计算过程首先计算首先计算switch后面的表达式的值,然后判定表后面的表达

19、式的值,然后判定表达式的值与下面的哪个达式的值与下面的哪个case后面的常量表达式的后面的常量表达式的值相同。如果与某个值相同,那么执行该值相同。如果与某个值相同,那么执行该case后后面的语句。面的语句。37注意事项注意事项switch后面的表达式必须是整型(后面的表达式必须是整型(int或或char)。)。每一个每一个case都由都由0条或多条语句组成,不需要用大条或多条语句组成,不需要用大括号分隔。括号分隔。每一个每一个case后面的常量表达式都必须是唯一的,后面的常量表达式都必须是唯一的,不允许有重复。它还必须是一个常量表达式,不不允许有重复。它还必须是一个常量表达式,不能是基于程序执

20、行而变化的变量。能是基于程序执行而变化的变量。break语句是可选的。语句是可选的。break语句用于跳出语句用于跳出switch结构,将控制流直接改变至结构,将控制流直接改变至switch的右括号之后。的右括号之后。如果不使用如果不使用break语句,那么控制流则从当前的语句,那么控制流则从当前的case到达下一个。到达下一个。还可以包括一个还可以包括一个default语句。如果语句。如果switch表达式表达式与任何一个与任何一个case都不匹配的话,将会选择这种情都不匹配的话,将会选择这种情况。如果没有给出况。如果没有给出default,并且表达式与任何一,并且表达式与任何一个常量都不匹

21、配,那么不执行任何个常量都不匹配,那么不执行任何case。38编程风格编程风格如果不包括如果不包括default语句,最后一个语句,最后一个case就不需要就不需要使用使用break。然而,在最后一个然而,在最后一个case的后面包括的后面包括break是一种好是一种好的编程习惯。如果在的编程习惯。如果在switch的末尾再添加一个的末尾再添加一个case的话,就不需要给前面的一个的话,就不需要给前面的一个case加加break了。这是一种好的、具有保护性的编程风格。了。这是一种好的、具有保护性的编程风格。39示例示例switch代替级联的代替级联的if-else#includeintmain

22、()chargrade;/*成绩等级成绩等级*/printf(“Enterthegrade:”);scanf(“%c”,&grade);switch(grade)caseA:printf(90100n);break;caseB:printf(8089n);break;caseC:printf(“7079n”);break;caseD:printf(“6069n”);break;caseE:printf(“60n”);break;default:printf(errorn);40breakswitch (a) case 1: printf(“A”);case 2: printf(“B”);def

23、ault: printf(“C”);Ifais1,prints“ABC”.Ifais2,prints“BC”.Otherwise,prints“C”.41breakbreak语句也可以用于循环结构中。语句也可以用于循环结构中。break语句使编译器生成提前跳出循环或者语句使编译器生成提前跳出循环或者switch语句的代码。语句的代码。当用于循环结构时,当用于循环结构时,break通过将控制跳出包含它通过将控制跳出包含它的那层循环,使该层循环终止。的那层循环,使该层循环终止。/*这段代码产生输出为:这段代码产生输出为:12*/for(i=1;i10;i+)if(i%3=0)break;print

24、f(%d,i);42continue用于循环结构中用于循环结构中的的continue语句语句使编译器生成结束当前的循环,开始下一次重复使编译器生成结束当前的循环,开始下一次重复的代码。的代码。/*这段代码产生输出为:这段代码产生输出为:13579*/for(i=1;i10;i+)if(i%2=0)continue;printf(%d,i);43使用控制结构解决使用控制结构解决问题问题应用应用“自顶向下自顶向下”方法方法,解决需要使用控制结构的问解决需要使用控制结构的问题。题。44问题问题1:计算自然对数之底:计算自然对数之底e的近似值的近似值级数展开式来计算的级数展开式来计算的e的值。的值。4

25、5步骤步骤0为计算中要包括的数据选择一个恰当的表示方法。为计算中要包括的数据选择一个恰当的表示方法。既然级数处理的是小数,需要采用既然级数处理的是小数,需要采用double型浮点型浮点数来表示在级数计算中调用的变量。数来表示在级数计算中调用的变量。46步骤步骤1问题的最初设计。问题的最初设计。包含四个阶段:初始化,获取输入,计算,输出包含四个阶段:初始化,获取输入,计算,输出结果。结果。首先把所有需要初始化的数据初始化(一个程序必须要有首先把所有需要初始化的数据初始化(一个程序必须要有正确的初始值才能真正解决问题。因此,每个算法的第一正确的初始值才能真正解决问题。因此,每个算法的第一步是:初始

26、化变量。)步是:初始化变量。)然后要求用户输入要计算的级数的项数然后要求用户输入要计算的级数的项数之后计算出给定项数的级数之后计算出给定项数的级数最后,打印出结果。最后,打印出结果。分解为包含多项子任务的分解为包含多项子任务的顺序结构顺序结构。开始初始化结束获得输入n计算级数输出结果47步骤步骤2分解分解“计算级数计算级数”:对级数逐项进行计算,直到:对级数逐项进行计算,直到计算出用户指定的项数。计算出用户指定的项数。注意:注意:与与for循环的流程图一致。循环的流程图一致。开始初始化结束获得输入n计算级数输出结果初始化循环计数器ii= n?再计算一项i递增真假计算级数48步骤步骤3分解分解“

27、再计算一项再计算一项”一个重要的子任务一个重要的子任务:计计算一个数的阶乘,取阶乘结果的倒数,再加到当算一个数的阶乘,取阶乘结果的倒数,再加到当前的近似值上。前的近似值上。再计算一项再计算一项初始化阶乘结果result、循环计数器jj=i?result=result*jj递增假真加上1/result49C程序程序#includeintmain()doublee=1;/*e的近似值的近似值*/intresult;/*阶乘计算结果阶乘计算结果*/inti,j;/*重复变量重复变量*/intnumOfTerms;/*计算的项数计算的项数*/printf(Numberofterms(mustbe1or

28、larger):);scanf(%d,&numOfTerms);for(i=1;i=numOfTerms;i+)result=1;for(j=1;j=i;j+)result=result*j;e=e+1.0/result;printf(Theapproximatevalueofeis%fn,e);50可以一次声明多个相同类型的变量,变量之间以可以一次声明多个相同类型的变量,变量之间以逗号隔开逗号隔开例如,例如,inti,j;51问题问题2:找出:找出100200之间的素数之间的素数步骤步骤0选择一个合适的数据类型来表示和这个问题有关选择一个合适的数据类型来表示和这个问题有关的各种数据。的各种数

29、据。因为素数的特点只适用于整数,因此在计算中选因为素数的特点只适用于整数,因此在计算中选择整数数据类型。择整数数据类型。52步骤步骤1问题的最初设计。问题的最初设计。包含包含一个任务一个任务:显示显示100200之间的素数。之间的素数。开始结束显示位于100200之间的素数53步骤步骤2分解子任务:分解子任务:检查每个位于检查每个位于100到到200之间的整数,之间的整数,如果是素数则显示出来。如果是素数则显示出来。计数器控制的循环计数器控制的循环开始结束显示位于100200之间的素数初始化num=100num=200?显示素数num=num+1真假54步骤步骤3分解分解“显示素数显示素数”子

30、任务子任务:判定当前的数字是否判定当前的数字是否是素数,如果是素数就显示出来。是素数,如果是素数就显示出来。任何位于任何位于100到到200之间不是素数的数,至少有一个从之间不是素数的数,至少有一个从2到到14之间的除数。之间的除数。显示素数没有除数?num是素数,将其显示真假显示素数用2到14之间的整数去除num步骤355步骤步骤4精炼精炼“用用2到到14之间的整数去除一个数之间的整数去除一个数”子任务:子任务:用用2到到14之间的所有整数去除当前的数,并且判断之间的所有整数去除当前的数,并且判断是否可以整除。是否可以整除。计数器控制的循环结构。计数器控制的循环结构。divisor=14?计

31、算num/divisor真假初始化除数divisor=2divisor= divisor+1用2到14之间的整数去除num56标志变量标志变量如何记录某个数可以被如何记录某个数可以被2到到14之间的整数整除?之间的整数整除?在内部循环开始之前,设标志变量在内部循环开始之前,设标志变量prime为为TRUE。如果在。如果在2到到14之间找到了一个除数,设标志为之间找到了一个除数,设标志为FALSE,并跳出内部循环。,并跳出内部循环。内部循环结束后,如果内部循环结束后,如果prime保持为保持为TRUE,就说,就说明由外部循环产生的数没有除数,是素数。明由外部循环产生的数没有除数,是素数。利用宏替

32、换,定义两个符号名利用宏替换,定义两个符号名TRUE和和FALSE,分,分别映射为别映射为1和和0。57C程序程序#include#defineFALSE0#defineTRUE1intmain()intnum;intdivisor;intprime;/*从从100开始直到开始直到200*/for(num=100;num=200;num+)prime=TRUE;/*假设该数是素数假设该数是素数*/*测试测试num是否是素数是否是素数*/for(divisor=2;divisor=14;divisor+)if(num%divisor)=0)prime=FALSE;break;if(prime)p

33、rintf(Thenumber%disprimen,num);58问题问题3:计算字符串:计算字符串“int”出现的次数出现的次数由键盘键入一行字符,计算这行字符包含多少个由键盘键入一行字符,计算这行字符包含多少个字符组合字符组合“int”。步骤步骤0:需要处理由用户输入的字符数据。最适合需要处理由用户输入的字符数据。最适合的类型是字符类型,即的类型是字符类型,即char。实际上,对于输入一行字符,最好的表示方法是字符数组,实际上,对于输入一行字符,最好的表示方法是字符数组,或字符串。或字符串。59步骤步骤1包括两个子任务:处理输入和输出结果包括两个子任务:处理输入和输出结果开始处理输入结束输

34、出结果60步骤步骤2分解分解“处理输入处理输入”子任务中子任务中由于由于一次只能读入用户输入的一个字符,并进行处理。一次只能读入用户输入的一个字符,并进行处理。该子任务需要一个字符接一个字符处理,直到到达一行字该子任务需要一个字符接一个字符处理,直到到达一行字符的末尾符的末尾采用标志控制的采用标志控制的循环循环。末尾是换新行字符,即。末尾是换新行字符,即“n”。处理输入处理下一个字符更多字符?假真处理输入61步骤步骤3细化细化“处理处理下一个字符下一个字符”。检查输入的字符,记录下是否连续出现了检查输入的字符,记录下是否连续出现了“int”字符组字符组合。合。处理下一个字符获得下一个字符遇到i

35、?假遇到n?假遇到t?假GotI=0, GotIN=0.真GotI=1.GotIN=0.真if GotIN, GotIN=0.if GotI, GotIN=1.GotI=0.真if GotIN,count+.GotI=0.GotIN=0.62GotI和和GotIN:记录可能出现的记录可能出现的3种状态种状态在遇到字符在遇到字符i后,状态为后,状态为GotI=1,GotIN=0;在遇到字符组合在遇到字符组合in后,状态为后,状态为GotI=0,GotIN=1;在遇到字符组合在遇到字符组合int后,计数器后,计数器count加加1,且状态为,且状态为GotI=0,GotIN=0;遇到其他字符组合,

36、状态为;遇到其他字符组合,状态为GotI=0,GotIN=0。63C程序程序#include#defineFALSE0#defineTRUE1intmain()charnextChar;/*字符串中的下一个字符字符串中的下一个字符*/intgotI=FALSE;/*表明表明i是否被找到是否被找到*/intgotIN=FALSE;/*表明表明in是否被找到是否被找到*/intcount=0;/*记录次数记录次数*/printf(Enteryourstring:);doscanf(%c,&nextChar);64switch(nextChar)casei:gotI=TRUE;gotIN=FALSE

37、;break;casen:if(gotIN)gotIN=FALSE;if(gotI)gotIN=TRUE;gotI=FALSE;break;caset:if(gotIN)count+;gotI=FALSE;gotIN=FALSE;break;default:gotI=FALSE;gotIN=FALSE;while(nextChar!=n);printf(count=%dn,count);65小结小结一般不可能从一开始就知道所有的情况。一般不可能从一开始就知道所有的情况。当发现有困难的时候,不要轻易放弃。当发现有困难的时候,不要轻易放弃。在碰到问题时(实际上这是大部分问题都会遇到在碰到问题时(实

38、际上这是大部分问题都会遇到的情况),应该看看是否能够理解问题中的某一的情况),应该看看是否能够理解问题中的某一部分,然后从这一点扩展出去。问题就像一道谜部分,然后从这一点扩展出去。问题就像一道谜题,起初含糊,但是研究得越多,问题越容易被题,起初含糊,但是研究得越多,问题越容易被“击破击破”。一旦明白了这个问题提供了什么条件,。一旦明白了这个问题提供了什么条件,要求做什么,以及如何运行,就可以回到第一步要求做什么,以及如何运行,就可以回到第一步重新开始系统的分解过程。重新开始系统的分解过程。66【一个小【一个小题题目】目】下面是一个下面是一个C程序,其想要程序,其想要输输出出20个减号,不个减号

39、,不过过,粗心的程序粗心的程序员员把代把代码码写写错错了,你需要把下面的代了,你需要把下面的代码码修改正确,不修改正确,不过过,你只能增加或是修改其中的,你只能增加或是修改其中的一个字符,一个字符,请请你你给给出三种答案。出三种答案。intn=20;for(inti=0;in;i-)printf(-);67【1】intn=20;for(inti=0;-in;i-)printf(-);【2】intn=20;for(inti=0;i=x=0)printf(“True.”);elseprintf(False.);2)if(1=x&x=0)printf(“True.”);elseprintf(Fals

40、e.);3)if(x=0)printf(xequals0n);elseif(x=1)printf(xequals1n);elseprintf(xdoesnotequal0or1n);694)if(x=0)printf(xequals0n);elseif(x=1)printf(xequals1n);elseprintf(xdoesnotequal0or1n);5)switch(x)case0:printf(xequals0n);case1:printf(xequals1n);break;default:printf(xdoesnotequal0or1n);break;704.2下列代码片段的输出

41、是什么?下列代码片段的输出是什么?1)inti;intsum=0;for(i=1;i=50;i+)if(i%7=0)sum=sum+i;printf(%dn,sum);2)inti;intsum=0;for(i=1;i0)i-;printf(%d,i);4)inti=1;intsum=0;doif(i%7=0)sum=sum+i;i+;while(sum0);printf(%d,i);714.3如下代码的输出是什么?如下代码的输出是什么?intinput;inti;intj;intsum=0;scanf(%d,&input);for(i=1;i=input;i+)for(j=0;j=1;i-)

42、for(j=1;j=i;j+)printf(#);for(j=1;j=4-i;j+)printf(*);printf(n);2)inti;for(i=1;i=5;i+)switch(i%5)case0:printf(“*”);break;case1:printf(“#”);break;default:printf(“n”);case2:printf(“&”);734.5改写如下代码片段,要求不使用改写如下代码片段,要求不使用continue语句,仍然实现这段代码的功能。语句,仍然实现这段代码的功能。for(i=1;i10;i+)if(i%2=0)continue;printf(%d,i);74

43、习题习题上机作业上机作业4.6使用使用if-else语句,完成第三章习题:判断某个语句,完成第三章习题:判断某个整数是否可以被整数是否可以被7整除。整除。4.7改写第三章图改写第三章图3.2中的程序,将条件表达式改中的程序,将条件表达式改为为if-else语句:从键盘读入两个整数,将两个整数语句:从键盘读入两个整数,将两个整数中较大的数输出。中较大的数输出。4.8使用使用if-else语句,编写一个语句,编写一个C程序:根据输入程序:根据输入的月份数,输出该月份的天数。注意,的月份数,输出该月份的天数。注意,2月的天数月的天数问题。问题。4.9编写一个编写一个C程序,计算如下函数:程序,计算如

44、下函数:f (n)=f (n-1)+f (n-2)初始条件为:初始条件为:f (0)=1,f (1)=14.10编写一个编写一个C程序,计算计算程序,计算计算9的阶乘。要求使的阶乘。要求使用用while循环。循环。754.11编写一个编写一个C程序:根据键盘输入的整数程序:根据键盘输入的整数n,在,在第一行输出一个第一行输出一个1,第二行输出,第二行输出2个个2,第三行输出,第三行输出3个个3,直到第,直到第n行输出行输出n个个n结束。结束。例如,如果输入为例如,如果输入为4,则输出如下:,则输出如下:12 23 334 444764.12编写编写C程序:计算程序:计算 的近似值。可以使用如下的近似值。可以使用如下级数展开式来计算级数展开式来计算 的值。的值。(要求项数要求项数n从键盘输从键盘输入。入。)4.13选做题选做题编写编写C程序:从键盘输入一行字符,程序:从键盘输入一行字符,判断这行字符是否是合法的判断这行字符是否是合法的e-mail地址。合法的地址。合法的e-mail地址为:在地址为:在前至少需要出现一个字母,在前至少需要出现一个字母,在和句点之间至少一个字母,在句点后至少一个字和句点之间至少一个字母,在句点后至少一个字母。母。77

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号