C语言顺序结构及分支结构编程案例(详解)教学提纲
- 格式:docx
- 大小:36.09 KB
- 文档页数:17
1.1.3 第1课时顺序结构与条件分支结构教学目标:1.掌握程序框图的概念;会用通用的图形符号表示算法,掌握算法的三个基本逻辑结构;掌握画程序框图的基本规则,能正确画出程序框图.2.通过模仿、操作、探索,经历通过设计程序框图表达解决问题的过程;学会灵活、正确地画程序框图.3.通过本节的学习,使我们对程序框图有一个基本的了解;掌握算法语言的两种基本逻辑结构,明确程序框图的基本要求;认识到学习程序框图是我们学习计算机的一个基本步骤,也是我们学习计算机语言的必经之路.教学重难点:教学重点:程序框图的基本概念、基本图形符号和两种基本逻辑结构.教学难点:能综合运用这些知识正确地画出程序框图.教学过程:一、创设情境:如果你向全班同学介绍一下你心中偶像的形象,你认为用语言描述好还是拿出偶像的照片给同学们看好?说明一下你的理由算法除了用自然语言表示外,还可用程序框图表示.二、基本概念:(1)起止框图:起止框是任何流程图都不可缺少的,它表明程序的开始和结束,所以一个完整的流程图的首末两端必须是起止框.(2)输入、输出框:表示数据的输入或结果的输出,它可用在算法中的任何需要输入、输出的位置.(3)处理框:它是采用来赋值、执行计算语句、传送运算结果的图形符号.(4)判断框:判断框一般有一个入口和两个出口,有时也有多个出口,它是惟一的具有两个或两个以上出口的符号,在只有两个出口的情形中,通常都分成“是”与“否”(也可用“Y”与“N”)两个分支.三、算法的基本逻辑结构(1)顺序结构:顺序结构描述的是是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的.例1.已知一个三角形的三边分别为2、3、4,利用海伦公式设计一个算法,求出它的面积,并画出算法的程序框图.算法分析:这是一个简单的问题,只需先算出p的值,再将它代入公式,最后输出结果,只用顺序结构就能够表达出算法.解:程序框图:点评:顺序结构是由若干个依次执行的步骤组成的,是任何一个算法都离不开的基本结构. 变式训练1.输入矩形的边长求它的面积,画出程序框图.(2)条件结构:根据条件选择执行不同指令的控制结构.例2.任意给定3个正实数,设计一个算法,判断分别以这3个数为三边边长的三角形是否存在,画出这个算法的程序框图.算法分析:判断分别以这3个数为三边边长的三角形是否存在,只需要验收这3个数当中任意两个数的和是否大于第3个数,这就需要用到条件结构.程序框图:点评:条件结构的显著特点是根据不同的选择有不同的流向.变式训练2.求x的绝对值,画出程序框图.四、当堂检测1.条件分支结构不同于顺序结构的特征是含有()A.处理框B.判断框C.输入、输出框D.起、止框【解析】条件分支结构必须有判断框.【答案】B2.程序框图中条件分支结构的判断框有________个入口和________个出口.() A.1,2B.2,3C.1,3 D.都不确定【答案】A3.阅读下面的程序框图,若输入a,b,c分别是21、32、75,则输出的值是()A.96 B.53C.107 D.128【解析】∵21<32,∴m=21+75=96,即输出96.【答案】A4.根据如图程序框图,若输入m的值是3,则输出的y的值是________.【解析】若输入m的值是3.则p=8,y=8+5=13,故输出y的值为13.【答案】135.下面程序框图表示的算法功能是________.【解析】其功能是比较a 、b 、c 的大小,输出最大值. 【答案】输出a ,b ,c 中最大者6.以下给出了一个程序框图,其作用是输入x 的值,输出相应的y 的值.若要使输入的x 的值与输出的y 的值相等,求x 的值.解:该程序框图描述的算法是求分段函数y =⎩⎪⎨⎪⎧x 2,x ≤2,2x -3,2<x ≤5,1x ,x >5.因为输入的x 值与输出的y 值相等,所以y =x .(1)∵⎩⎪⎨⎪⎧x 2=x ,x ≤2,∴x =0或x =1.(2)∵⎩⎪⎨⎪⎧2x -3=x ,2<x ≤5,∴x =3.(3)∵⎩⎪⎨⎪⎧1x =x ,x >5,∴x 无解.综上所述,x 的值为0,1,3. 五、课堂小结:本节课主要讲述了程序框图的基本知识,包括常用的图形符号、算法的基本逻辑结构,算法的基本逻辑结有三种,本节讲了顺序结构、条件结构.其中顺序结构是最简单的结构,也是最基本的结构,循环结构必然包含条件结构,所以这三种基本逻辑结构是相互支撑的,它们共同构成了算法的基本结构,无论怎样复杂的逻辑结构,都可以通过这三种结构来表达 六、布置作业:1.输入3个实数按从大到小的次序排序. 解:程序框图:2.给出50个数,1,2,4,7,11,…,其规律是:第1个数是1,第2个数比第1个数大1,第3个数比第2个数大2,第4个数比第3个数大3,…,以此类推. 要求计算这50个数的和. 将上面给出的程序框图补充完整. (1)i < = 50 (2) p = p + i。
第3章 分支结构程序设计(选择结构)1、掌握if 、if-else 、if 的嵌套语句的语法结构及编程语句的语法结构及编程 123.2.1 单分支if 语句的使用学习目标:1、理解选择结构的概念和特点;2、掌握单分支if 语句的语法结构、执行过程和基本用法,学会正确书写if 语句; 4、能正确阅读if 语句程序,会使用if 语句编写、调试并运行程序。
课前准备:预习P30-32(预习后,将学案上知识点在课本上做记号,并完成相应预习题) 课时分配:2课时 活动课堂活动一、发现问题(目标——了解分支结构的意义)实例:从键盘上输入一个数,求这个数的平方根。
算法:发现问题:活动二、解决问题(目标——掌握分支结构) 思考:从键盘输入一个数,若为正数和0则 求其平方根,否则不予处理。
算法:活动三、预习交流(1 ·语句中a>b ·if 每行的结尾,分支中各语句结尾均有 (符号),但 后没有。
·在(2)(3)两语句段中的不同处画上横线,语句(2)中的c=a+b; (属于/不属于)if 分支。
活动五:观察思考(目标——掌握if 的执行流程)1、观察下列程序的执行,口述程序的执行过程,画出程序的流程图: 例1:#include <math.h>#include <stdio.h>main(){float x,y;clrscr();scanf("%f",&x);if (x>=0){y=sqrt(x);printf("%.2f",y);}}流程图:4、说明:例:表达式 -3+‘d’为________表达式,值为______,作条件判断结果为___________ 表达式 a=0 为__________表达式,值为_______,作条件判断结果为__________ 表达式 a=5 为__________表达式,值为________,作条件判断结果为_________ 表达式a>4为____________表达式,若a=5 则结果为_________表达式(a>0)&&(a%2==0)为________表达式,若结果为5 则结果为__________活动六、尝试学习(目标—if语句的初步应用)编程:输入一个学生成绩score,如果成绩大于60,则显示pass,否则不显示程序:流程图:活动七、合作探究、拓展应用(目标—if语句的应用)1、阅读下列程序,写出运行结果,画出程序的流程图:main() Array {int a,b;scanf("%d%d",&a,&b);if (a<b) a=b;printf("%d",a);}执行:·若输入4 5,则输出:________________若输入5 4,则输出:________________·程序的功能是:______________________。
《C语言程序设计基本结构》教案第3章C语言程序设计的3种基本结构所谓“程序结构”,即指程序中语句的执行顺序。
1.程序设计的三种基本结构程序一般由三种基本结构组成,即顺序结构、选择结构和循环结构。
(1)顺序结构是最基本、最简单的结构,它由若干部分组成,按照各部分的排列次序依次执行,如图4.1所示。
(2)选择结构又称分支结构,是根据给定的条件,从两条或者多条路径中选择下一步要执行的操作路径,如图4.2所示。
图中菱形中的“表达式”表示给定的条件,当条件成立(即表达式的值非0)时,选择语句组1操作,否则选择语句组2操作。
(3)循环结构是根据一定的条件,重复执行给定的一组操作,如图4.3所示。
图中菱形中的“表达式”表示给定的条件,当条件成立(即表达式的值非0)时,重复执行语句组操作,一旦条件不成立时,即离开该结构。
由这三种基本结构或三种基本结构的复合嵌套构成的程序称为结构化程序。
结构化程序的特点是结构清晰、层次分明、具有良好的可读性。
2.程序设计的基本过程在实际应用中,程序设计的过程可分为三个步骤:分析问题、设计算法、实现程序。
(1)分析问题明确要解决的问题是什么,需要输入哪些数据,需要进行什么处理,最终要得到哪些处理结果。
对要输入、输出的数据进行分析,确定数据类型。
(2)设计算法在对输入、输出的数据分析之后,要设计数据的组织方式,设计解决问题的操作步骤,并将操作步骤不断完善,最终得到一个完整的算法。
(3)实现程序选择一种程序设计语言,将算法设计后得到的数据组织方式、算法具体步骤转化成用具体的程序设计语言来描述,实现整个算法。
3.1顺序结构3.1.1赋值语句、复合语句、空语句顺序结构是程序中最简单的一种结构。
在C 语言程序中,这类结构主要使用的是赋值语句以及由输入、输出函数构成的语句。
【例3.1】交换两个变量的值,并输出结果。
程序如下:#include<stdio.h> void main() { int a,b,t;scanf("%d%d",&a,&b); printf("a=%d, b=%d\n",a,b); t=a; a=b; b=t;printf("a=%d, b=%d\n",a,b); }程序运行情况: 5 9↙ a=5, b=9 a=9, b=5 程序说明:交换两个变量的值,需要第三个变量的帮助,上面程序中的t 就是这种变量,这个道理就像交换两杯水一样,需要第三个杯子的帮助。
C语言的四种程序结构C语言具有以下四种程序结构:1.顺序结构:顺序结构是指按照程序的顺序依次执行语句的结构。
C语言程序中,语句是按照它们在源代码中出现的顺序被执行的。
例如,以下是一个简单的顺序结构的示例:```c#include <stdio.h>int maiint num1 = 5;int num2 = 10;int sum = num1 + num2;printf("The sum of %d and %d is %d", num1, num2, sum);return 0;```上述例子中,程序按照从上到下的顺序依次执行,首先定义了两个整数变量`num1`和`num2`,然后计算它们的和,并将结果存储在变量`sum`中,最后通过`printf`函数打印出结果。
2.分支结构:分支结构是通过条件来决定程序执行路径的结构。
根据条件表达式的真假,程序将决定执行哪个分支。
C语言中的分支结构通常使用if-else和switch语句来实现。
以下是一个使用if-else语句的分支结构的示例:```c#include <stdio.h>int maiint num = 10;if (num > 0)printf("Number is positive");} elseprintf("Number is negative");}return 0;```上述例子中,程序根据变量`num`的值决定执行哪个分支。
如果`num`大于0,将打印"Number is positive";否则,将打印"Number is negative"。
3.循环结构:循环结构是一个重复执行其中一段代码的结构。
在C语言中,循环结构可以使用for、while和do-while语句来实现。
以下是一个使用for循环的示例:```c#include <stdio.h>int maiint i;for (i = 0; i < 5; i++)printf("%d\n", i);}return 0;```上述例子中,循环执行了5次,每次循环打印变量`i`的值。
C语言程序设计教案第四章顺序程序设计(5篇模版)第一篇:C语言程序设计教案第四章顺序程序设计第四章顺序程序设计课题:第四章顺序程序设计教学目的:1、掌握赋值语句、输入输出语句2、学会简单的顺序程序设计教学重点:输入、输出语句教学难点:格式输入输出语句步骤一复习引导上一章介绍的常量、变量、运算符、表达式等都是构成程序的基本成分。
本章将介绍为编写简单程序所必需的一些内容。
步骤二讲授新课一、C语句概述1、控制语句ν二个分支语句(if-else、switch)ν三个循环语句(for、while、do-while)ν四个转移语句(continue、break、goto、return)2、函数调用语句ν如:printf(“Hello, world!”);3、表达式语句ν x+y;i++;a=2;a=3*5, 40;4、空语句(;)5、复合语句{ 语句序列}一、赋值语句赋值语句是由赋值表达式加上一个分号构成,如:b=3;if((a=b)>0)t=a;三、数据输入输出的概念及在C语言中的实现1、输入、输出2、输入输出操作是由函数来实现的Ξ C语言函数库中有“标准输入输出函数” Ξ字符的输入与输出:getchar()、putchar()Ξ字符串的输入与输出:gets()、puts()Ξ格式输入与输出: scanf()、printf()3、在使用C语言库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。
例如:使用标准输入输出库函数时,要用到“stdio.h”文件,在源文件开头应有: #include 或#include “stdio.h”(一)字符数据的输入输出1、字符输出函数——putchar 语法:putchar(c)语义:(向stdout终端)输出一个字符;如:#include main(){ putchar(…141‟);putchar(…a‟);putchar(…A‟+32);putchar(…n‟);}输出:aaa2、字符输入函数——getchar语法:getchar(),是一个无参函数;语义:(从stdin终端上)输入一个字符;getchar 包含在stdio.h中,是stdio.h中定义的宏;如:#include main(){putchar(getchar());}如:#include main(){ int c;while((c=getchar())!=…#‟)if(c>=…a‟&&c<=…z‟)putchar(c-‟a‟+‟A‟);else putchar(c);}从键盘上输入一串字符遇‘#’结束,若字符在a~z之间时,则输出字符的大写;否则直接输出字符。
顺序结构入门——及熟悉环境1、输出Good Morining答案:#include<stdio.h>int main(){printf("Good Morining\n");return 0;}2、已知某种铅密度为11340kg/m3 ,求9.8厘米铅球有多少kg这里要求:pi的取值为3.141592657,小数用double表示,printf("%lf"输出)输入格式:仅仅一个小数输出格式:无输出样例:5.588431答案:#include <stdio.h>#define midu 11340int main(){double r = 0.049;double v ;double weigh;v = 4.0/3*3.141592657*r*r*r;weigh = v * midu;printf("%lf", weigh);}3、两个数相加输入两个整数输出两个整数的和比如输入:1 4输出:5答案:#include <stdio.h>void main(){int a,b;int sum;scanf("%d%d",&a,&b);sum = a+b;printf("%d\n",sum);}4、输入两个整数a,b,计算(a-b)*(a+b)比如输入: 1 4输出:-15答案:#include <stdio.h>void main(){int a,b;int sum;scanf("%d%d",&a,&b);sum = (a-b)*(a+b);printf("%d\n",sum);}5、两个数相加后乘以5输入:两个整数输出:两个整数的和乘以5比如输入: 1 4输出:25答案:#include <stdio.h>void main(){int a,b;int sum;scanf("%d%d",&a,&b);sum = (a+b)*5;printf("%d\n",sum);}6、已知某种铅密度为11340kg/m3 ,求输入球的直径(厘米数),求铅球有多少kg。
输入格式:仅仅一个小数输出格式:仅仅一个小数输入样例:9.8输出样例:5.588431答案:#include <stdio.h>#define midu 11340void main (){double r;scanf("%lf",&r);double v ,m;v=4.0/3*3.141592657*(r/200)*(r/200)*(r/200);m=v*midu;printf("%lf",m);}7、铅密度为11340kg/m3 ,输入外直径(cm),内径(cm),求空心球有多kg?输入格式:两个小数(空格分隔)输出格式:一个小数输入样例;9.8 5.1输出样例:4.800801答案:#include <stdio.h>#define pi 3.141592657int main(){double R,r;int p;p=11340;scanf("%lf %lf",&R,&r);double M,m;M=p*4.0/3*pi*R/2*0.01*R/2*0.01*R/2*0.01;m=p*4.0/3*pi*r/2*0.01*r/2*0.01*r/2*0.01;printf("%lf\n",M-m);return 0;}8、输入一个华氏温度,要求输出摄氏温度。
公式为 c=5(F-32)/9 输出要求有文字说明,取位2小数。
输入:一个华氏温度,浮点数输出:c=摄氏温度,(保留两位小数)输入样例:-40输出样例:c=-40.00答案:#include <stdio.h>void main(){double c,f;scanf("%lf",&f);c = 5*(f-32)/9;printf("c=%0.2lf\n",c);}9、从1到9任选一个你喜欢的数字,先乘以3,再加上3,再乘以3,最后把个位数和十位数相加,得到结果是什么?输入: 3结果:9答案:#include <stdio.h>void main(){int a,b,c,d,e;scanf("%d",&a);b=((a*3)+3)*3;c=b/10;d=b%10;e=c+d;printf("%d",e);}10、输入三个数a,b,c,表示三角形的三个边长输出三角形面积的平方值,结果保留2位小数p(p-a)(p-b)(p-c), 其中p=( a + b + c)/2;例如,输入:3.1 4.1 5.1输出:40.38注意:printf("%.2lf",double) 保留2位小数答案:#include <stdio.h>void main(){double a,b,c,p,s;scanf("%lf %lf %lf",&a,&b,&c);p=( a + b + c)/2;s=p*(p-a)*(p-b)*(p-c);printf("%.2lf",s);}11、求一元二次方程ax2+bx+c=0的解。
a,b,c为任意实数。
输入:输入数据有一行,包括a b c的值输出:(保留2位小数)x1 x2实根,且要求x1>=x2输出提示:计算平方根用sqrt()函数,例如 y=sqrt(x) 则y就得到x的平方根例如输入: 1.0 4.0 1.0输出:-0.27 -3.73答案:#include <stdio.h>#include <math.h>void main(){double a,b,c,x,d;double x1,x2;scanf("%lf %lf %lf",&a,&b,&c);d=sqrt(b*b-4*a*c);x1=(-b+d)/(2*a);x2=(-b-d)/(2*a);if(x1>=x2)printf("%.2lf %.2lf",x1,x2);elseprintf("%.2lf %.2lf",x2,x1);}12、输出一个三位数,将它反向输出。
如输入:127输出: 721提示:需要求出这个数的个、十、百位上的数字用到的技巧就是,整数相除还是整数的办法,比如235/100就等于2答案:#include<stdio.h>int main(){int a,b,c,d,e;scanf("%d",&a);b=a/100;c=(a/10)-b*10;d=a%10;e=d*100+c*10+b;printf("%d\n",e);}分支结构13、输入3个整数,判断第一个数是不是最大的数?例如,输入:3 4 5输出:0输入:6 1 2输出:1答案一:#include<stdio.h>void main(){int a,b,c;scanf("%d %d %d",&a,&b,&c);if(a>b&&a>c)printf("1");elseprintf("0");}答案二:#include<stdio.h>void main(){int a,b,c;scanf("%d %d %d",&a,&b,&c);if(a<b)printf("0\n");else{if(a<c)printf("0\n");elseprintf("1\n");}}14、输入两个实数,按由小到大的次序输出两数输入两个单精度的实数,例如:3.2 2.8输出结果为从大到小排序,例如:2.803.20输出结果保留小数点后两位答案:#include <stdio.h>int main(){double a,b;scanf("%lf %lf",&a,&b);if (a<b)printf("%0.2lf %0.2lf\n",a,b);elseprintf("%0.2lf %0.2lf\n",b,a);return 0;}15、输入两个整数,判断其是否相等。
例如:1)输入:3 5输出:a!=b2)输入:4 4输出:a==b答案:#include<stdio.h>void main(){int a,b;scanf("%d %d",&a,&b);if(a==b)printf("a==b");elseprintf("a!=b");}16、编写一个程序,输入a、b两个,输出其中最大值。
输入:两个小数输出:a b 其中最大的数保留2位小数输入样例:10.2 20.3输出样例:20.30答案:#include <stdio.h>void main(){double a,b;scanf("%lf %lf",&a,&b);if(a>b)printf("%.2lf",a);elseprintf("%.2lf",b);}17、编写一个程序,输入a、b、c三个值,输出其中最大值。
输入:一行数组,分别为a b c输出:a b c其中最大的数保留2位小数输入样例:10 20 30输出样例:30.00答案一:#include <stdio.h>void main(){double a,b,c;scanf("%lf %lf %lf",&a,&b,&c);if(a>b&&a>c)printf("%.2lf\n",a);else if(b>a&&b>c)printf("%.2lf\n",b);elseprintf("%.2lf\n",c);}答案二:#include <stdio.h>void main(){int a,b,c;double d,e;scanf("%d %d %d",&a,&b,&c);d=a*1.0>b*1.0?a*1.0:b*1.0;e=d*1.0>c*1.0?d*1.0:c*1.0;printf("%.2lf",e);}18、输入一个年份,判断一个年份是否为闰年输入:一个正整数,比如 2008输出:一个字母“y”或者“n”(引号不输出)输入样例:2008输出样例:y答案一:#include <stdio.h>void main(){int a;scanf("%d",&a);if (a%4==0&&a%100!=0||a%400==0)printf("y");elseprintf("n");}答案二:#include <stdio.h>void main(){int n;scanf("%d",&n);if(n%100==0){if(n%400==0)printf("y\n");elseprintf("n\n");}else{if (n%4==0)printf("y\n");elseprintf("n\n");}}19、简单的计算器计算:输入a+b能计算出其和,输入a-b能计算其差,同理乘除。