C语言程序设计框图.ppt
《C语言程序设计框图.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计框图.ppt(86页珍藏版)》请在咨信网上搜索。
第3章控制结构 返回总目录目录 3.1程序结构框图 3.2二分支结构 3.3多分支结构 3.6习题三 3.4循环结构 3.5break与continue语句 返回总目录基本要求:)熟悉C语言的程序结构框图;)熟悉C语言的二分支结构、多分支结构和循环结构;)熟练掌握结构化程序设计方法。学习重点:)流程图、N-S图、循环结构;)结构化程序设计方法。3.1程序结构框图3.1.13.1.1 自然语言描述 l程序设计的关键是算法。l算法是实际问题求解步骤的描述。有了正确有效的算法,就可以用任何一种计算机语言编写程序,解决各种问题。l算法可采用自然语言、流程图或N-S图等进行描述。自然语言描述:用人们日常所使用的语言(如英语、汉语)进行算法的描述。返回目录3.1程序结构框图3.1.13.1.1 自然语言描述 例3.2求s=1+2+3+100之和。解题思路要将1100累加到s变量上去,如果采用先初始化变量s=0,然后用语句序列s=s+1;s=s+2;则要重复写100个加法赋值语句,很显然,这种算法不可取。改用下述算法。算法步骤:(1)设s=0,n=0;(2)变量n值加1,即n=n+1;(3)将n加到变量s中,即s=s+n;(4)如果n值小于100,返回去执行第2步。否则执行第5步;(5)输出s变量的值。3.1程序结构框图3.1.23.1.2 流程图 流程图是一种传统的算法描述方法,l它用几种不同的几何图来代表不同性质的操作;l用流程线来指示算法的执行方向.用流程图表示的算法简单直观,容易转化成相应的语言程序。3.1程序结构框图3.1.23.1.2 流程图 表示算法的开始或结束;表示数据的输入和输出;在实际中输入输出也常用矩形框表示。用来对给定的条件进行判断,根据条件成立与否来决定其后的操作,它有一个入口和两个出口;用来表示一般的数据处理;表示算法执行流程;用来链接画在不同地点的流程图。常用流程图符号3.1程序结构框图3.1.23.1.2 流程图 例3.4 将例3.2中的算法用流程图表示,如下图所示。3.1程序结构框图3.1.33.1.3 NS图 N-S图是程序算法的另一种图形表示,它是由美国人I.Nassi和B.Shneiderman共同提出来的,其依据是:因为任何算法都是由顺序结构、分支(选择)结构、循环结构这三种结构所组成,所以可以不需要各结构之间的流程线,全部算法写在一个矩形框内,矩形框内由顺序、选择、循环三种结构组成。3.1程序结构框图3.1.33.1.3 NS图 3种基本结构的NS图顺序结构:它是按照语句出现的先后顺序依次执行的。如上图所示,先执行A模块,再执行B模块。分支结构:它是根据给定条件进行判断,选择其中的一个分支执行。如上图所示,P表示条件,当P成立时执行分支A模块,否则执行分支B模块。当型循环:当条件满足时,重复执行某一操作。如上图所示,当条件P为“真”时,反复执行A模块操作,直到P为“假”时才终止循环,继续执行循环后面的语句。直到型循环:它是先执行循环体操作,再判断条件,如果条件满足,则继续执行循环体操作,直到条件不满足时,才退出循环。如上图所示,首先执行A模块操作,然后再判断给定的条件P是否成立,如果成立,反复执行A模块操作,直到条件P不成立。3.1程序结构框图3.1.33.1.3 NS图 例3.6 将例3.2中的算法用N-S图表示,如下图所示。3.1程序结构框图3.1.43.1.4 结构化程序设计 l结构化程序设计的基本思想是:任何程序都由顺序结构、分支结构和循环结构这三种基本结构组成。l结构化程序:由3种基本结构经过反复组合、嵌套构成的程序。l结构化程序设计方法:自顶向下,逐步细化模块化设计结构化编码3.1程序结构框图3.1.43.1.4 结构化程序设计 l结构化程序设计具有以下特点:一个程序单元由顺序、分支、循环这3种基本结构组成。3种基本结构经过反复嵌套,可以表示任何复杂的算法。一个大的程序由若干个不同功能的小模块组成。每个小模块只有一个入口和一个出口。程序中不能有无穷循环(死循环)。程序中不能有在任何条件下都执行不到的语句(死语句)。用结构化思想设计出来的计算机程序,具有清晰的模块界面,因此,在书写程序时,我们应根据逻辑结构和层次深度的不同,采用缩进对齐的方式,将程序模块写在不同的位置,这样可以提高程序的可读性,有助于调试程序,找出程序的逻辑错误。3.1程序结构框图3.1.53.1.5 结构化程序的语句 表达式语句:由“表达式分号”构成。如赋值语句、函数调用语句。空语句:只由一个分号构成。空语句执行不产生任何动作,常用于循环体中。控制语句:完成一定的程序流程控制功能。如if-else,switch-case,for,while,do-while,break,continue,goto,return。复合语句:由一对大括号括起来的一条或多条语句。被括起来的语句可以是这4类的任何一类语句,常用于函数体或循环体。3.2二分支结构3.2.13.2.1 二分支if语句 基本形式:if(表达式)语句1;else 语句2;例如:if(xy)printf(“max=%d”,x);else printf(“max=%d”,y);表达式语句2假(0)真(非0)语句1 返回目录3.2二分支结构3.2.13.2.1 二分支if语句 例3.7求两个整数x、y中较大的数,并赋给变量max。解题思路x、y值由输入函数输入,根据其大小判断,大的赋给max变量。其N-S图如图3.8所示,可以编写如下程序。#includemain()int x,y,max;printf(Input x,y=);scanf(%d,%d,&x,&y);if(xy)max=x;elsemax=y;printf(Max=%dn,max);3.2二分支结构3.2.23.2.2 不平衡if语句 基本形式:if(表达式)语句;例如:if(xy)printf(“max=%d”,x);表达式语句假(0)真(非0)3.2二分支结构3.2.23.2.2 不平衡if语句 例3.8设计一个程序,从键盘输入3个整数,按由小到大的顺序输出。解题思路三个整数x、y、z,两两比较,始终保持x的值最小,z的值最大,不满足此条件,则其值进行交换。基N-S图如图3.10所示,可以编写出程序如下:#includemain()int x,y,z,temp;printf(Input x,y,z=);scanf(%d,%d,%d,&x,&y,&z);if(xy)temp=x;x=y;y=temp;if(xz)temp=x;x=z;z=temp;if(yz)temp=y;y=z;z=temp;printf(%d,%d,%dn,x,y,z);3.2二分支结构3.2.33.2.3 if语句的嵌套 if(expr1)if(expr2)statement1 else statement2else if(expr3)statement3 else statement4内嵌if内嵌ifif(expr1)if(expr2)statement1 else statement2内嵌ifif(expr1)if(expr2)statement1else statement3 内嵌ifif(expr1)statement1else if(expr3)statement3 else statement4内嵌if 嵌套的一般形式3.2二分支结构3.2.33.2.3 if语句的嵌套 例3.11计算分段函数的值:3.2二分支结构3.2.33.2.3 if语句的嵌套#include#include main()float x,y;scanf(%f,&x);if(x0)y=x;else if(x=1)y=exp(x);else if(x10)y=log10(x);else y=sin(x);printf(Y=%6.2fn,y);例3.11计算分段函数的值:lif else 配对原则:缺省 时,else总是和它上面离它最近的未配对的if配对if()if()if()else.else.else.3.2二分支结构3.2.33.2.3 if语句的嵌套 通过“if语句的嵌套”可实现“多分支结构”3.2二分支结构3.2.33.2.3 if语句的嵌套 示例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);实现if else 正确配对方法:加 3.3多分支结构3.3.13.3.1 多分支switch语句 lif 语句的嵌套实现多分支:如果分支较多,则嵌套的if语句层数就越多,程序不但冗长而且理解也比较困难。因此,C语言又提供了一种专门用于处理多分支结构的条件选择语句,称为switch语句,又称开关语句。返回目录3.3多分支结构3.3.13.3.1 多分支switch语句 lswitch语句(开关语句)一般形式:switch(表达式)case 常量表达式1:语句组 1;break;case常量表达式2:语句组 2;break;.case常量表达式n:语句组 n;break;default:语句组n+1;break;3.3多分支结构3.3.13.3.1 多分支switch语句 lswitch语句(开关语句)执行过程:switch表达式语句组1语句组2语句组n语句组n+1.defaultcase常量表达式1 case常量表达式2 case常量表达式n l说明:switch后面的表达式的值类型可以是整型、字符型或枚举型。当表达式的值与某个case中的常量表达式的值相等时,就执行相应的case后的语句序列,直到遇到break语句或到达switch结构末尾。多个连续的case语句可以共用一个语句序列。case 后的不同常量表达式的值不能相等。break的作用是改变程序在switch结构中的执行流程,将程序流程跳出switch语句,转到switch语句后的下一条语句去执行。switch语句中允许嵌套switch语句。3.3多分支结构3.3.13.3.1 多分支switch语句 例3.14从键盘输入一学生成绩,判断学生成绩等级。如果成绩在90100分,等级为“A”,成绩在8089分,等级为“B”,成绩在7079分,等级为“C”,成绩在6069分,等级为“D”,成绩小于60分,等级为“E”。main()int score;char grade;printf(“Input students score:”);scanf(“%d”,&score);switch (score/10)case 10:case 9:grade=A;break;case 8:grade=B;break;case 7:grade=C;break;case 6:grade=D;break;default:grade=E;printf(“The students grade is%cn”,grade);3.3多分支结构3.3.13.3.1 多分支switch语句 表达式score/10的值为10和9时共用相同的语句序列。3.3多分支结构3.3.23.3.2 多分支结构综合举例 例3.15计算分段函数的值:下面使用4种不同的方法实现该程序,以展现C语言多分支结构的风格。3.3多分支结构3.3.23.3.2 多分支结构综合举例 (1)使用不嵌套的if语句编程:#include main()float x,y;scanf(“%f”,&x);if(x0)y=0;if(0=x&x10)y=x;if(10=x&x20)y=10;if(20=x&x=40)y=40+x;printf(“y=%5.2fn”,y);3.3多分支结构3.3.23.3.2 多分支结构综合举例 (2)使用嵌套的if语句编程:#include main()float x,y;scanf(“%f”,&x);if(x=0)if(x=10)if(x=20)if(x=40)y=40+x;else y=0.5*x+20;else y=10;elsey=x;else y=0;printf(“y=%5.2fn”,y);3.3多分支结构3.3.23.3.2 多分支结构综合举例 (3)使用ifelse形式编程:#include main()float x,y;scanf(“%f”,&x);if(x0)y=0;else if(x10)y=x;else if(x20)y=10;else if(x40)y=0.5*x+20;else y=40+x;printf(“y=%5.2fn”,y);3.3多分支结构3.3.23.3.2 多分支结构综合举例 (4)使用switch语句编程:#include main()float x,y;int z;scanf(“%f”,&x);z=(int)(x/10);if(x0)z=-1;switch(z)case 1:y=0;break;case 0:y=x;break;case 1:y=10;break;case 2:case 3:y=0.5*x+20;break;default:y=40+x;printf(“y=%5.2fn”,y);返回目录3.4循环结构3.4.03.4.0 引例 例3.16求s=1+2+3+100之和。解题思路设变量s存储累加和,其初值为0,变量n作为循环变量,其值由1变化到100,将n的每一个值累加到s变量,则可以实现上述算法。(利用目前所学知识能编写如下程序)#include main()int s=0,n=0;n=n+1;s=s+n;n=n+1;s=s+n;printf(“s=%dn”,s);在上例中,n=n+1;和s=s+n;两语句会在程序中反复出现100次,使程序变得很长。为解决这一问题,C语言引入了循环结构。C语言中实现循环结构的语句有for语句、while语句和dowhile语句。3.4循环结构3.4.13.4.1 for语句 lfor语句的一般形式for(表达式1;表达式2;表达式3)循环体;例如:for(s=0,n=1;n=100;n+)s=s+n;lfor语句的执行过程(1)计算表达式1;(2)计算表达式2,若其值为非0,则执行第3步;若为0,则转向第6步执行;(3)执行循环体;(4)计算表达式3;(5)跳转到第2步继续执行;(6)终止循环,执行for语句后的下一条语句。3.4循环结构3.4.13.4.1 for语句 例3.17例3.16用for语句实现,程序如下:#include main()int s,n;for(s=0,n=1;n=100;n+)s=s+n;printf(“s=%dn”,s);3.4循环结构3.4.13.4.1 for语句 lfor语句的说明3.4循环结构(1)在for语句中,若表达式1缺省,则必须将表达式1作为语句安排在for语句之前。例3.17例3.16用for语句实现,可以编写如下程序:#include main()int s,n;s=0;n=1;for(;n=100;n+)s=s+n;printf(“s=%dn”,s);3.4.13.4.1 for语句 lfor语句的说明3.4循环结构(2)在for语句中,若表达式2缺省,则系统默认循环控制条件为真(非0值),此时,如果不在循环体中加其它语句进行控制,循环将无限制进行下去,即出现死循环。例3.17例3.16用for语句实现,可以编写如下程序:#include main()int s,n;for(s=0,n=1;;n+)if(n100)break;s=s+n;printf(“s=%dn”,s);3.4.13.4.1 for语句 lfor语句的说明3.4循环结构(3)在for语句中,若表达式3缺省,可将它的语句放在循环体的最后。例3.17例3.16用for语句实现,可以编写如下程序:#include main()int s,n;for(s=0,n=1;n=100;)s=s+n;n+;printf(“s=%dn”,s);3.4.13.4.1 for语句 lfor语句的说明3.4循环结构(4)在for语句中三个表达式都可以缺省,但其中的两个分号不可省。例3.17例3.16用for语句实现,可以编写如下程序:#include main()int s=0,n=1;for(;)s=s+n;n=n+1;if(n100)break;printf(“s=%dn”,s);3.4.13.4.1 for语句 lfor语句的说明3.4循环结构(5)循环体可以为空语句,但必须有分号(即循环为空语句)例3.17例3.16用for语句实现,可以编写如下程序:#include main()int s,n;for(s=0,n=1;n=100;s=s+n,n+);printf(“s=%dn”,s);3.4.13.4.1 for语句 l思考与练习:例3.16用for语句实现,相应的程序在前面已经例举了多种方法,请同学们试用其他可能的方法编写程序。另外,例3.16还可以用while语句、do-while语句、if+goto等方法实现。这说明,对于某个实际的编程问题,可以编写出很多种程序来解决同一问题。所以,对我们初学者来说,关键是要多学习、勤练习,熟则能生巧,到时,编写起程序来就游刃有余了!加油吧!3.4循环结构3.4.13.4.1 for语句 3.4循环结构3.4.23.4.2 while语句 l while语句的一般形式while(表达式)循环体;例如:int n,s;n=1;s=0;while(n=100)s=s+n;n+;3.4循环结构3.4.23.4.2 while语句 l while语句的执行过程首先计算和判断表达式的值,如果表达式的值为“真”(非0),则执行循环体,然后程序转回去再计算和判断表达式的值,直到表达式的值为“假”(0),终止while循环,继续执行while语句后的下一语句。3.4循环结构3.4.23.4.2 while语句 示例例3.16用while语句实现,可以编写如下程序:#include main()int s,n;s=0;n=1;while(n=100)s=s+n;n+;printf(“s=%dn”,s);3.4循环结构3.4.33.4.3 dodowhile语句 l dowhile语句的一般形式do循环体;while(表达式)例如:int n=1,s=0;dos=s+n;n+;while(n=100);3.4循环结构3.4.33.4.3 dodowhile语句 l dowhile语句的执行过程dowhile语句的作用是无条件地先执行循环体一次(无论表达式的值是否为0或非0),所以又称为“直到型循环”。循环体执行一次后,计算和判断表达式的值,若表达式的值为“真”(非0),则程序转回去反复执行循环体,直到表达式的值为“假”(0),终止dowhile语句,继续执行dowhile语句后的下一条语句。3.4循环结构3.4.33.4.3 dodowhile语句 示例例3.16用do-while语句实现,可以编写如下程序:#include main()int s,n;s=0;n=1;dos=s+n;n+;while(n=100);printf(“s=%dn”,s);3.4循环结构3.4.43.4.4 循环嵌套循环嵌套 l循环嵌套:指一个循环完全包含在另一个循环的循环体中。lwhile循环、dowhile循环和for循环都可以互相嵌套。l二重循环的执行过程是外循环执行一次,内循环执行一遍,直至内循环结束后,才能再进行一次外循环,如此反复,直到外循环结束。l内、外循环控制变量一般不能相同.示例下面是for语句的二重循环嵌套程序,试分析其功能:#include main()int i,j;for(i=1;i=9;i+)for(j=1;j=i;j+)printf(“%d*%d=%dt”,i,j,i*j);printf(“n”);3.4循环结构3.4.43.4.4 循环嵌套循环嵌套 3.4循环结构3.4.43.4.4 循环嵌套循环嵌套 上例二重循环嵌套程序的执行结果如下:3.5.13.5.1 breakbreak语句语句 l break语句的一般形式 break;break语句经常放在循环语句的循环体中,且通常和if语句一起使用。作用:在满足一定条件时,提前退出本层循环(不管循环控制条件是否成立),使程序流程转向该循环结构后的下一条语句执行。3.5break、continue及goto语句 返回目录3.5.13.5.1 breakbreak语句语句 l break语句的示例例3.28求s=1+2+3+100之和。程序如下:#include main()int s=0,n=1;while(1)s=s+n;n+;if(n100)break;printf(“s=%dn”,s);在程序中,while循环的循环条件为1,是一死循环,退出该循环的办法是在循环体中加一条件和break语句,满足n100时,即退出循环。3.5break、continue及goto语句3.5.23.5.2 continuecontinue语句语句 l continue语句的一般形式 continue;continue语句经常放在循环语句的循环体中。作用:是结束本次循环,即跳过循环体中某些还没有被执行的语句,开始新的一次循环。与break比较:continue仅结束本次循环,而break是结束整个循环语句的执行。3.5break、continue及goto语句3.5.23.5.2 continuecontinue语句语句 l continue语句的示例例3.30从键盘输入10个不为0的整数,统计其中负数的个数,并求所有正数的平均值。解题思路程序中count用于统计负数个数,avg在循环结构中用于统计正数和,循环结束后用于计算平均值.#include main()int n,count=0,x;float avg=0;for(n=0;n0)avg=avg+x;continue;count+;if(count!=10)avg/=10-count;printf(“Count=%d,average=%fn”,count,avg);3.5break、continue及goto语句3.5break、continue及goto语句3.5.33.5.3 gotogoto语句语句 l goto语句的一般形式 goto 语句标号;作用:使程序的流程无条件转移到相应语句标号处。goto语句一般和if语句一起使用,构成循环。语句标号是对语句的标识,应是合法的标识符,即只能由字母、数字和下划线组成,且第一字符必须是字母或下划线。注意:不能用一个整数作为语句标号。goto语句是非结构化语句,大量使用会造成程序流向混乱,可读性差,因此结构化程序设计一般不用goto语句.3.5break、continue及goto语句3.5.33.5.3 gotogoto语句语句 l goto语句的示例构造当型循环(先判断循环控制条件),程序如下:#include main()int n=1,s=0;loop:if(n=100)s=s+n;n+;goto loop;printf(“s=%dn”,s);例3.31求s=1+2+3+100之和。构造直到型循环(先执行循环体1次,后判断循环体控制条件),程序如下:#include main()int n=1,s=0;loop:s=s+n;n+;if(nb)m=a;B)if(a=0)m=a;D)if(a=b;)=0)m=a;BCD 返回目录3.6习题三 单项选择题单项选择题 4)若i,j均为整型变量,则以下循环.for(i=0,j=2;j=1;i+,j-)printf(%5d,%dn,i,j);A)循环体只执行一次B)循环体执行二次 C)是无限循环D)循环条件不合法5)以下程序段,执行结果为.a=1;do a=a*a;while(!a);A)循环体只执行一次B)循环体执行二次 C)是无限循环D)循环条件不合法CA3.6习题三 单项选择题单项选择题 6)C语言中while与dowhile语句的主要区别是.A)dowhile的循环体至少无条件执行一次 B)dowhile允许从外部跳到循环体内 C)while的循环体至少无条件执行一次 D)while的循环控制条件比dowhile的严格7)语句while(!a);中条件等价于.A)a!=0 B)a C)a=1 D)a=0AD3.6习题三 单项选择题单项选择题 8)以下程序的运行结果为.#include main()int i=1,sum=0;while(i=100)sum+=i;i+;printf(1+2+3+.+99+100=%d,sum);A)5050B)1 C)0D)程序陷入死循环 D3.6习题三 单项选择题单项选择题 9)以下程序的运行结果为.#include main()int sum,pad;sum=pad=5;pad=sum+;pad+;+pad;printf(%dn,pad);A)7 B)6 C)5 D)4A3.6习题三 单项选择题单项选择题 10)以下程序的运行结果为.#include main()int a=2,b=10;printf(a=%d,b=%dn,a,b);A)a=%2,b=%10B)a=2,b=10 C)a=%d,b=%dD)a=%d,b=%dD3.6习题三 单项选择题单项选择题 11)为了避免嵌套的if-else语句的二义性,C语言规定else总是.A)与缩排位置相同的if组成配对关系B)与在其之前未配对的if组成配对关系C)与在其之前未配对的最近的if组成配对关系D)与同一行上的if组成配对关系12)对于for(表达式1;表达式3)可理解为.A)for(表达式1;0;表达式3)B)for(表达式1;1;表达式3)C)for(表达式1;表达式1;表达式3)D)for(表达式1;表达式3;表达式3)CB3.6习题三 程序填空题程序填空题 1下面程序的功能是计算n!。#include main()int i,n;long p;printf(Please input a number:n);scanf(%d,&n);p=_;for(i=2;i=n;i+)_;printf(n!=%ld,p);1p=p*i;或p*=i;3.6习题三 程序填空题程序填空题 2下面程序的功能是:从键盘上输入若干学生的成绩,统计并输出最高和最低成绩,当输入负数时结束输入。#include main()float score,max,min;printf(Please input one score:n);scanf(%d,&score);max=min=score;while(_ )if(scoremax)max=score;if(_ )min=score;printf(Please input another score:n);scanf(%d,&score);printf(nThe max score is%fnThe min score is%f,max,min);score=0scoremin3.6习题三 程序填空题程序填空题 3下面程序的功能是:计算y=的值。要求从键盘上输入x的值,精度控制在0.00001内。#include#include main()float x,y=0,fz=-1,fm=-1,temp=1;printf(Please input the value of x:n);scanf(%f,&x);while(_ )fz=_ ;fm=fm+2;temp=fz/fm;y+=temp;printf(ny=%f,y);abs(temp)0.00001-fz*x3.6习题三 程序填空题程序填空题 4下面的程序完成两个数的四则运算。用户输入一个实现两个数的四则运算的表达式,程序采用switch语句对其运算进行判定后执行相应的运算并给出结果。#include main()float x,y;char op;printf(Please input Expression:);scanf(%f%c%f,&x,&op,&y);_case+:printf(%g%c%g=%gn,_ );_;switch(op)x,op,y,x+ybreak3.6习题三 程序填空题程序填空题 case-:printf(%g%c%g=%gn,x,op,y,x-y);break;case*:printf(%g%c%g=%gn,x,op,y,x*y);break;case/:if(_)printf(Division Error!n);elseprintf(%g%c%g=%gn,x,op,y,x/y);break;default:printf(Expression Error!n);(y=-1e-6)&(y=-1e-6)&(y=”或“=-EPSINON)&(y=EPSINON)其中EPSINON是允许的误差(即精度)。3.6习题三 编程题编程题 1给出三角形的三边a、b、c,求三角形的面积。(应先判断a、b、c三边是否能构成一个三角形)。#include#include main()float a,b,c,area,p;scanf(%f,%f,%f,&a,&b,&c);p=(a+b+c)/2;if(a+bc&a+cb&b+ca)area=sqrt(p*(p-a)*(p-b)*(p-c);printf(Area=%6.2fn,area);else printf(Errorn);3.6习题三 编程题编程题 2输入四个整数,要求将它们按由小到大的顺序输出。#include main()int a,b,c,d,t;scanf(%d,%d,%d,%d,&a,&b,&c,&d);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(ad)t=a;a=d;d=t;if(bc)t=b;b=c;c=t;if(bd)t=b;b=d;d=t;if(cd)t=c;c=d;d=t;printf(%d,%d,%d,%dn,a,b,c,d);3某幼儿园只收2至6岁的小孩,23岁编入小班,4岁编入中班,56岁编入大班,编制程序实现每输入一个年龄,输出该编入什么班。3.6习题三 编程题编程题#include main()int age;scanf(%d,&age);switch(age)case 2:case 3:printf(Small class n);break;case 4:printf(Middle classn);break;case 5:case 6:printf(Large classn);break;default:printf(Errorn);3.6习题三 编程题编程题 4输入一元二次方程的三个系数a、b、c,求出该方程所有可能的根。#include#include main()float a,b,c,d,x1,x2;scanf(%f,%f,%f,&a,&b,&c);d=b*b-4*a*c;if(fabs(a)=1e-6)if(fabs(b)=1e-6)if(fabs(c)=1e-6)printf(The equations root is innumerablen.);else printf(Nonen);else printf(The equations root is%fn,-c/b);elseif(fabs(d)1e-6)x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(The equations root is);printf(x1=%f,x2=%fn,x1,x2);else x1=-b/(2*a);x2=sqrt(-d)/(2*a);printf(The equations root is%f+Ifn,x1,x2);printf(The equations root is%f-I%fn,x1,x2);3.6习题三 编程题编程题 4输入一元二次方程的三个系数a、b、c,求出该方程所有可能的根。3.6习题三 编程题编程题 5编程求s=1-1/2+1/3-1/4+-1/100。#include main()int n,flag=1;float s=0;for(n=1;n=100;n+)s=s+1.0*flag/n;flag=-flag;printf(fn,s);3.6习题三 编程题编程题 6编程求1!+2!+3!+10!之和。#include main()long int s=0,p=1;int n;for(n=1;n=10;n+)p=p*n;s=s+p;printf(%ldn,s);3.6习题三 编程题编程题 7一个灯塔有8层,共有765盏灯,其中每一层的灯数都是其相邻上层的两倍,求最底层的灯数。#include main()int s=1,n,p=1;for(n=1;n=7;n+)p=p*2;s=s+p;printf(%dn,765/s*p);3.6习题三 编程题编程题 8一张10元票面的纸钞兑换成1元、2元或5元的票面,问共有多少种不同的兑换方法?#include main()int a,b,c,sum=0;for(a=0;a=10;a+)for(b=0;b=5;b+)for(c=0;c=2;c+)if(a+2*b+5*c=10)printf(%d,%d,%dn,a,b,c);sum+;printf(%dn,sum);3.6习题三 编程题编程题 9编程打印出所有的“水仙花数”。所谓水仙花数:是指一个三位数,其各位数字的立方之和等于该数。#include main()int n,a,b,c;for(n=100;n1000;n+)a=n/100;b=n/10%10;c=n%10;if(a*a*a+b*b*b+c*c*c=n)printf(水仙花数有:%5dn,n);10如果一个数等于其所有真因子(不包括其本身)之和,则该数为完数,例如6的因子有1、2、3,且6=1+2+3,故6为完数,求21000中的完数。3.6习题三 编程题编程题#include main()int s,n,k;for(n=2;n=1000;n+)s=0;for(k=1;kn;k+)if(n%k=0)s=s+k;if(s=n)printf(%5d,n);printf(n);11输出71000中个数位为7的所有素数,统计其个数并求出它们的和。3.6习题三 编程题编程题#include main()int n,count=0,total=0,m,temp,y;for(n=7;n1000;n+)for(m=2;mn;m+)if(n%m=0)break;if(n=m)temp=n%10;if(temp=7)printf(%6d,n);if(count%5=4)printf(n);count+;total=total+n;printf(ncount=%d,total=%dn,count,total);12将4100中的偶数分解成两个素数之和,每个数只取一种分解结果。如100可分解为3和97、或为11和89、或为17和83等,但我们只取第一种分解即可。3.6习题三 编程题编程题#include main()int x,n,k,a,b,count=0;for(x=4;x=100;x=x+2)for(a=2;a=(x/2);a+)for(k=2;ka;k+)if(a%k=0)break;if(a=k)b=x-a;for(k=2;kb;k+)if(b%k=0)break;if(b=k)printf(%3d=%3d+%3dt,x,a,b);count+;break;if(count%3=0)printf(n);3.6习题三 编程题编程题 13一个自然数平方的末几位与该数相同时,称该数为同构数。例如252=625,则25为同构数。编程求出11000中所有的同构数。#include main()int x;for(x=1;x=1000;x+)if(x*x%10=x|x*x%100=x|x*x%1- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 框图
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【胜****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【胜****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【胜****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【胜****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文