C语言程序设计 - 课件 第3、4章 顺序结构程序设计、分支结构程序设计_第1页
C语言程序设计 - 课件 第3、4章 顺序结构程序设计、分支结构程序设计_第2页
C语言程序设计 - 课件 第3、4章 顺序结构程序设计、分支结构程序设计_第3页
C语言程序设计 - 课件 第3、4章 顺序结构程序设计、分支结构程序设计_第4页
C语言程序设计 - 课件 第3、4章 顺序结构程序设计、分支结构程序设计_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

必与你同行—顺序结构程序设计C语言程序设计第三章本章目录01.程序设计概述02.简单编程的好助手03.数据输出语句04.数据输入语句05.复合语句和空语句06.顺序结构程序设计07.趣味实例3.1程序设计概述了解程序设计的基本步骤、算法的概念和结构化程序设计思想程序设计的基本步骤需求分析明确需求、输入与输出,这是设计的第一步,也是最关键的一步。算法设计构思解决问题的具体方法和步骤,形成指令的有限序列。编码实现使用编程语言(如C语言)将设计好的算法转换为计算机可执行的代码。测试与调试运行并检查语法与逻辑错误,反复修改直到得到预期结果。整理文档(补充内容)编写说明文档,记录功能、使用方法及设计思路,方便维护。核心流程总结:需求分析→算法设计→编码实现→测试与调试→整理文档算法程序公式数据结构+算法=程序算法vs程序算法抽象的逻辑思想,解决问题的步骤。程序具体的代码实现,算法的物理载体。算法算法是对特定问题求解步骤的一种描述,是指令的有限序列。简单来说,算法就是解决问题的方法和步骤。结构化程序设计和模块化结构结构化设计原则自顶向下逐步细化模块化设计结构化编码三大基本结构顺序结构选择结构(分支)循环结构设计优势逻辑清晰待开发软件划分为若干独立模块易于维护模块工作单纯明确。可靠性高为较大软件打好基础。实例体验:最原始方法:步骤1:先求1×2,得到结果2。步骤2:将步骤1得到的乘积2乘以3,得到结果6。步骤3:将6再乘以4,得24。步骤4:将24再乘以5,得120。例3-1求1×2×3×4×5。改进的算法:步骤1:使t=1。步骤2:使i=2。步骤3:使t×i,乘积仍然放在变量t中,可表示为t×i→t。步骤4:使i的值+1,即i+1→i。步骤5:如果i≤5,返回重新执行步骤3以及其后的步骤4和步骤5;否则,算法结束。实例体验:如果n表示第i个学生学号,n〔i〕表示第i个学生学号,g表示第i个学生成绩,g〔i〕表示第i个学生成绩,则算法可表示如下:步骤1:1→i。步骤2:如果g〔i〕≥80,则打印n〔i〕和g〔i〕,否则不打印。步骤3:i+1→i。步骤4:若i≤50,返回步骤2,否则,结束。例3-2有50个学生,要求将成绩在80分以上的学号和成绩打印出来。实例体验:闰年的条件:①能被4整除,但不能被100整除的年份;②能被100整除,又能被400整除的年份。设y为被检测的年份,则算法可表示如下:步骤1:2000→y。步骤2:若y不能被4整除,则输出“y年不是闰年”,然后转到步骤6。步骤3:若y能被4整除,不能被100整除,则输出“y年是闰年”,然后转到步骤6。步骤4:若y能被100整除,又能被400整除,输出“y年是闰年”,否则输出“y年不是闰年”,然后转到步骤6。步骤5:输出“y年不是闰年”。步骤6:y+1→y。步骤7:当y≤2500时,返回步骤2继续执行,否则结束。例3-3判定2000~2500年中的每一年是否是闰年,将结果输出。3.2简单编程的好助手—流程图学习如何用流程图来描述算法流程图的基本组成元素流程图是用规定的图形、连线和文字说明来表示算法步骤的工具,能够直观展示逻辑流程。起止框(椭圆)表示算法的开始或结束,位于流程的首尾。输入输出框(平行四边形)表示数据的输入或运算结果的输出。处理框(矩形)表示对数据进行的具体处理或运算步骤。判断框(菱形)根据给定条件进行判断,并决定执行路径。流程线与连接点箭头表示执行方向,圆圈用于连接不同位置的流程线。三种基本结构的流程图表示顺序结构特点:各操作步骤按顺序依次执行,流程线单向连接,无分支。选择结构(分支)特点:根据条件P是否成立,选择执行路径A或B,形成逻辑分支。循环结构特点:包括当型(While)和直到型(Do-While),在条件满足时重复执行循环体。实例体验:例3-4有50个学生,要求将成绩在80分以上的学号和成绩输出。流程图如图3-7所示。实例体验:例3-5判断2000—2500年中的每一年是否为闰年并将结果输出。流程图如图3-8所示。3.3数据输出语句掌握putchar和printf函数的使用,实现数据的格式化输出字符输出函数putchar书写形式putchar(c);功能与参数功能:向标准输出设备(显示器)输出一个字符。参数c:可以是字符常量、变量或ASCII码值。代码示例与运行结果#include<stdio.h>main(){charch='A';putchar(ch);//输出'A'putchar('B');//输出'B'putchar(67);//输出ASCII67->'C'putchar('\n');//换行putchar('D');//输出'D'}运行结果:ABCD格式化输出函数printf(一)——常用格式控制书写形式printf(“输出格式串”,表达式列表);常用格式说明符%d:十进制整数%f:浮点数%c:单个字符%s:字符串%x:十六进制%o:八进制代码实战演示#include<stdio.h>main(){inta=100;floatb=3.14;charc='A';printf("整数:%d\n",a);printf("浮点数:%f\n",b);printf("字符:%c\n",c);printf("十六进制:%x\n",a);}功能与参数功能:向标准输出设备输出任意类型数据。参数:输出格式串为格式控制字符串,表达式列表为指定输出的数据。格式化输出函数printf(二)——进阶格式控制宽度与对齐

•宽度:%5d表示占5字符宽度,不足补空格•左对齐:%-5d(默认右对齐,使用'-'号改为左对齐)精度控制•浮点数:%.2f表示保留2位小数(如3.14)•组合使用:%8.2f表示总宽8字符,保留2位小数特殊标志

•+:强制显示正负号(如%+d输出+123)•0:用0填充宽度(如%05d输出00123)代码实战演示#include<stdio.h>main(){inta=123;//整数示例floatb=3.1415926f;//浮点数示例printf("默认输出:%d,%f\n",a,b);printf("宽度5右对齐:%5d\n",a);printf("宽度5左对齐:%-5d\n",a);printf("保留2位小数:%.2f\n",b);printf("显示正负号:%+d,%+f\n",a,b);}实例体验:#include<stdio.h>main(){chara='B',b='o',c='k';

putchar(a);

putchar(b);

putchar(b);

putchar(c);

putchar('\t');

putchar(a);

putchar(b);

putchar('\n');

putchar(b);

putchar(c);}例3-6输出单个字符。例3-7格式输出。#include<stdio.h>main(){inta=88,b=89;floatd=2.7;printf("%d%d\n",a,b);//输出的a、b值之间有一个空格printf("%d,%d\n",a,b); //输出的a、b值之间有一个逗号printf("%c,%c\n",a,b); //按字符型输出a、b值printf("a=%d,b=%d\n",a,b);//增加了非格式字符串a=、b=printf("d=%6.2f\n",d); //输出数据宽度为6,保留两位小数//点,右对齐,不足6位左边补空格printf("d=%e\n",d); //按科学记数法输出} 3.4数据输入语句掌握getchar和scanf函数的使用,实现从键盘获取数据字符输入函数getchar书写形式getchar();常用形式:变量=getchar();功能与参数从标准输入设备(键盘)读取一个字符。无参数。注意事项会读取输入缓冲区中的回车符(\n),混合使用时需注意清空缓冲区。代码示例与运行结果#include<stdio.h>main(){charc;printf("Inputacharacter:");c=getchar();//读取字符putchar(c);}运行结果:Inputacharacter:AA格式化输入函数scanf(一)书写形式与功能形式:scanf(“输入格式串”,地址列表);功能:从标准输入读取数据,按格式存储到指定的变量中。关键参数解析输入格式串:格式控制字符串(%d,%f,%c,%s)地址列表:变量的地址0(必须使用取地址符&)避坑指南(补充)变量前必须加&(取地址符),否则程序崩溃。输入多数据时,用空格/回车/Tab分隔。代码实战:多类型输入演示#include<stdio.h>main(){inta;floatb;charc;printf("请输入整数:");scanf("%d",&a);//注意&符号printf("请输入浮点数:");scanf("%f",&b);printf("请输入字符:");scanf("%c",&c);//空格跳过换行printf("整数:%d,浮点数:%f,字符:%c\n",a,b,c);}格式化输入函数scanf(二)普通字符必须原样输入若格式串含普通字符,输入时需严格匹配,否则读取失败。示例:scanf("a=%d,b=%f",&a,&b)输入:a=10,b=3.14输入缓冲区与%c的陷阱(补充)%d会跳过空白符,但%c不会,可能读取到残留的换行符'\n'。解决方案:在%c前加空格,主动跳过空白符。正确写法:scanf("%c",&ch);代码示例:缓冲区处理#include<stdio.h>main(){inta;charch;printf("请输入整数:");scanf("%d",&a);//输入10后按回车,//残留\nprintf("请输入字符:");//scanf("%c",&ch);//错误:读取到\nscanf("%c",&ch);//正确:跳过空白符printf("a=%d,ch='%c'\n",a,ch);}实例体验:#include<stdio.h>main(){charc;printf("inputacharacter\n");c=getchar();putchar(c);}例3-8输入单个字符。例3-9scanf()函数一般形式示例。#include<stdio.h>main(){inta,b,c;printf("inputa,b,c\n");scanf("%d%d%d",&a,&b,&c);printf("a=%d,b=%d,c=%d",a,b,c);}实例体验:例3-10输入三个小写字母,输出其ASCII码和对应的大写字母。#include<stdio.h>main(){chara,b,c;printf("inputcharactera,b,c\n");scanf("%c%c%c",&a,&b,&c);printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);}3.5复合语句与空语句理解复合语句和空语句的概念及用法复合语句定义与语法用一对花括号{}将若干个语句括起来形成的整体,也称为“语句块”或分程序。{语句1;语句2;...;语句n;}特点复合语句内,可以有定义部分,定义部分出现在可执行语句的前面。语法等价于单一语句,支持多层嵌套。(补充)定义了局部作用域:内部变量仅在块内有效。代码示例:作用域演示(补充)#include<stdio.h>main(){inta=10;//外部变量printf("外部a=%d\n",a);{//复合语句开始,新的作用域inta=20;//覆盖外部aintb=30;//局部变量bprintf("内部a=%d\n",a);}//复合语句结束,内部a和b销毁printf("外部a=%d\n",a);//恢复外部a的值}空语句定义与语法仅由一个分号“;”构成的语句,不执行任何操作,仅作为“占位符”。核心用途满足语法结构要求但逻辑无需操作时使用。在循环体内对程序起“延时”(消耗CPU时间或等待事件)作用。避坑指南警惕“if”/“for”后多余的分号,这会导致逻辑分离。例如:if(a>0);{...}//此处的花括号代码块将独立执行代码示例:循环延时与条件占位#include<stdio.h>main(){inti;printf("开始计数...\n");for(i=0;i<1000000;i++);//空循环体:消耗时间printf("结束!\n");if(5>0);//空语句占位,不做任何事}复合语句和空语句的使用。实例体验:例3-11复合语句和空语句的使用。#include<stdio.h>main(){inta=1;while(1){;//此语句为空语句,程序执行到此语句时不产生任何动作a++;//此行为空行if(a==10)break;}}3.6顺序结构程序设计通过具体实例,学习如何编写顺序结构的C语言程序实例:计算圆的周长和面积(补充)算法分析与思路问题描述:从键盘输入圆的半径,利用数学公式计算并输出圆的周长和面积。定义变量:半径(radius)、周长、面积及常量PI输入数据:通过scanf获取用户输入的半径值计算处理:周长=2πr,面积=πr²输出结果:格式化打印计算后的周长和面积C语言代码实现#include<stdio.h>#definePI3.14159main(){floatradius,perimeter,area;printf("请输入圆的半径:");scanf("%f",&radius);perimeter=2*PI*radius;area=PI*radius*radius;printf("周长:%.2f面积:%.2f\n",perimeter,area);}实例3-12:x=20.5,y=10.2,如何交换两个变量的值?问题描述已知x和y的值,求Z的值。核心算法定义变量x,y,zz=3x+5y-8进阶方法(无中间变量)(补充)算术运算:a=a+b;b=a-b;a=a-b;位运算:a^=b;b^=a;a^=b;(效率高)数学分析实例3-12:x=20.5,y=10.2,如何交换两个变量的值?流程图C语言代码实现#include<stdio.h>main(){intx,y,t;printf("请输入两个整数:");scanf("%f%f",&x,&y);printf("交换前:x=%f,y=%f\n",x,y);t=x;//第一步x=y;//第二步y=t;//第三步printf("交换后:x=%f,y=%f\n",x,y);}实例3-13:计算表达式:z=3x+5y-8。问题描述已知x和y的值,求Z的值。核心算法定义变量x,y,zz=3x+5y-8C语言代码实现#include<stdio.h>main(){intx,y,z;scanf("%d,%d",&x,&y);z=3*x+5*y-8;printf("%d",z);}流程图实例3-14:求ax2+bx+c=0方程的根,a、b、c由键盘输入,设b2-4ac>0。问题描述已知a,b,c的值,求方程的根。核心算法定义变量a,b,c,disc,p,q,x1,x2一元二次方程的求根公式C语言代码实现#include<math.h>#include<stdio.h>main(){floata,b,c,disc,x1,x2,p,q;scanf("a=%f,b=%f,c=%f",&a,&b,&c);disc=b*b-4*a*c;p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf("\nx1=%5.2f\nx2=%5.2f\n",x1,x2);}3.7趣味实例:数据的输入和输出通过趣味实例正确掌握顺序结构的编程趣味实例实训目的1.熟练掌握scanf()、printf()函数的语法格式,正确使用各种输入/输出格式符,掌握各种类型数据的输入/输出方式。2.掌握getchar()、putchar()函数的语法格式,以及使用它们进行字符型数据输入/输出的方法。实训内容1.画算法流程图。2.数据输入及输出函数的使用。。实例一:输入、输出练习代码实现(C语言)#include<stdio.h>main(){inta,b,c;scanf("%d%d",&a,&b);c=a/b;printf("%d\n",c);}要求与步骤要求画出流程图,分析程序的功能步骤1.启动软件2.输入程序段3.画出算法流程图4.编译运行,查看结果分析功能。练习意义感受顺序结构设计流程。实例二:简单的字符画(补充)代码实现(C语言)#include<stdio.h>main(){printf("******\n");printf("****\n");printf("**++**\n");printf("**+**\n");printf("******\n");}实现思路与解析顺序结构应用程序按顺序执行多条printf语句,利用\n换行符控制输出位置,构建图案轮廓。字符组合技巧通过空格、星号(*)和加号(+)的巧妙排列,组合出笑脸的五官和脸型,精准控制输出格式。练习意义这不仅是一个有趣的练习,更是掌握printf格式化输出和提升代码逻辑控制能力的好方法。实例三:反向输出数字问题提出从键盘上输出一个3位数,然后将它反向输出。例如输入123,则输出321。操作步骤:1.画出算法流程图2.根据流程图编写程序段3.输入编辑4.编译运行。实现思路与解析顺序结构本题解决思路为无分枝或循环,所以确定为顺序结构。关键算法主要算法是:利用商除10求余运算,分别求出个位数、十位数和百位数;然后再依次输出。练习意义1.体会算法的应用。2.体验顺序结构的编程设计。本章小结学会去选择—分支结构程序设计C语言程序设计第四章本章目录01.关系运算和逻辑运算02.条件语句——if语句03.多分支语句——switch04.趣味实例4.1关系运算和逻辑运算用于构成条件的关系表达式和逻辑表达式关系运算

关系运算就是对两个数据值的大小进行比较的运算,也称为比较运算。对表达式进行比较,结果为0,即为假。C语言为我们提供了6种关系运算符,见表注意:>=、<=、==、!=这种符号之间不能存在空格。关系运算符1)关系运算符都是双目运算符,其结合性均为自左至右。例如:a>b>7相当于(a>b)>72)关系运算符的优先级低于算术运算符,高于赋值运算符。例如:a>b+7相当于a>(b+7)

a=b>7相当于a=(b>7)3)在6个关系运算符中,<、<=、>、>=的优先级相同,高于==和!=,==和!=的优先级相同。若运算符优先级相同,根据其结合性进行运算,否则按照优先级运算。例如:a!=b>7相当于a!=(b>7)

a!=b==7相当于(a!=b)==7C语言中的关系运算符优先级1)用关系运算符连接的表达式称为关系表达式,以下是合法的关系表达式:2>33>2>1a>ba+b>c-d(a=7)<=(b=5)2)若a=2,b=7,c=4,d=1,1)中关系表达式的值为:

关系表达式和关系表达式的值表达式相当于值2>303>2>1(3>2)>10a>b2>70a+b>c-d2+7>4-11(a=7)<=(b=5)(2=7)<=(7=5)0逻辑运算C语言中的逻辑运算符有三种,见表1)逻辑非!的优先级最高,逻辑与&&次之,逻辑或||优先级最低。2)逻辑运算符和其他运算符优先级从低到高依次为:赋值运算符、逻辑或、逻辑与、关系运算符、算术运算符、逻辑非例如:a>b&&c>d等价于(a>b)&&(c>d)

a+!b||c<a等价于(a+(!b))||(d<a)

C语言中逻辑运算符的优先级逻辑运算

用逻辑运算符连接的表达式叫逻辑表达式,逻辑表达式运算的结果也只有“真”和“假”,“真”对应的值为1,“假”对应的值为0。需要说明的是,在逻辑表达式中非0即为真。1)逻辑与运算(&&),参与运算的两个表达式均为真时,结果才为真,否则为假。例如:3&&0,3为真,0为假,运算的结果为假,值为0。(7>0)&&(4>3),7>0的结果为真,4>3结果也为真,故运算的结果为真,值为1。2)逻辑或运算(||),参与运算的两个表达式均为假时,结果才为假,否则为真。例如:7||0,7为真,0为假,运算的结果为真,值为1。(5>0)||(5>7),5>0的结果为真,5>7的结果为假,故运算的结果为真,值为1。3)非运算(!),参与运算的表达式为真时,结果为假;参与运算的表达式为假时,结果为真。例如:!0,0为假,非运算的结果为真,也就是1。!(7>0),7>0的结果是1,为真,非运算的结果为假,也就是0。

C语言中的逻辑表达式和逻辑表达式的值逻辑运算小贴士:逻辑运算中存在的“短路”现象:1)在使用“&&”运算符时,如果“&&”运算符左边的值为假,则右边的表达式就不再进行运算,整个表达式的结果为假。2)在使用“||”运算符时,如果“||”运算符左边的值为真,则右边的表达式就不再进行运算,整个表达式的结果为真。实例体验:首先,判断表达式中各优先级的先后次序:逻辑非(!)>算术运算符>关系运算符>逻辑与(&&),由逻辑与优先级最低得出:(a+b>c)&&(x+y<!b)。其次,根据算术运算符优先于关系运算符得出:((a+b)>c)&&((x+y)<!b)。最后,由于逻辑非(!)在该表达式的优先级最后,可以得出:((a+b)>c)&&((x+y)<(!b))。因此,a+b>c&&x+y<!b等价于((a+b)>c)&&((x+y)<(!b))。例4-1

根据运算符的优先级写出表达式a+b>c&&x+y<!b

的等价式。实例体验:#include<stdio.h>main(){inta=0,b=10,c=-6;intm=a&&b,n=c||0;printf("%d,%d\n",m,!c);printf("%d,%d\n",9&&0,n);}例4-2

分析以下程序,输出逻辑运算的结果:运行结果:实例体验:问题描述:台儿庄古城作为枣庄市台儿庄区的知名旅游景点,为保障游客游览体验与安全,需对古城内游客流量实施管控。具体流量控制标准如下:当游客数量≤3000人时,判定为流量正常,无需采取干预措施。当游客数量>3000人且≤5000人时,判定为流量较大,需启动疏导广播,提醒游客注意安全并合理规划游览路线。当游客数量>5000人时,判定为流量过载,需立即执行限流措施,暂停游客进入古城,并增派安保人员开展现场疏导工作。例4-3编程解决台儿庄古城游客流量控制与安全疏导问题。实例体验:分析:本例使用关系运算符和逻辑运算符对当前游客数量进行判断,然后根据判断的结果输出不同的内容。用图4-1所示流程图表示该题设计思路。实例体验:#include<stdio.h>main(){inttourist_count;//提示用户输入游客数量printf("请输入当前台儿庄古城内的游客数量:");scanf("%d",&tourist_count);//判断游客流量状态if(tourist_count<=3000){printf("游客流量正常,无需采取措施。请继续关注游客流量变化,保障游客在台儿庄古城的安全与舒适。");}elseif(tourist_count>3000&&tourist_count<=5000){printf("游客流量较大,已开启疏导广播。提醒游客注意安全并合理安排游览路线,共同维护台儿庄古城的秩序与环境。");}else{printf("游客流量过载,已采取限流措施,暂停游客入城。同时增加安保人员进行现场疏导,确保游客在台儿庄古城的安全与秩序。");}}4.2条件语句——if语句学习单分支、双分支和多分支if语句的使用if语句基本形式if(表达式)

语句块;执行过程if语句的执行过程如图

所示。首先对“表达式”进行求值,如果表达式的值为真,则执行其后的语句块,否则直接跳过。核心特点只有一个分支,满足条件执行,不满足跳过,逻辑简单直接。

分支结构也称为选择结构,是程序根据所列条件是否满足来选择执行路径,C语言中有三种分支结构形式,分别是:单分支、双分支、多分支。而if语句是C语言中用来实现分支结构的最基本的语句,if语句的基本形式有单分支结构的if语句和双分支结构的if…else语句,if语句还可以嵌套使用。if语句

1)

表达式可以为任何类型的表达式,常用的是关系表达式和逻辑表达式。例如:

算术表达式3+7,值为10,结果为真。关系表达式a>7,对a的值进行判定。赋值表达式a=0,值为0,结果为假。赋值表达式a=7,值为7,结果为真。2)

语句块可以是一条简单的语句,也可以是用花括号括起来的几条语句(即复合语句)。例如:if(a>0) a=a+1;if(a>b){ a=a+1;

b=b+1;}注意事项:if-else语句基本形式if(表达式)

语句块1//条件为真时执行else

语句块2//条件为假时执行核心特点包含两个分支,根据表达式值的真假,选择执行其中一个分支。两者必选其一,且只选其一,实现“二选一”的逻辑控制。执行流程:计算表达式->真(执行语句块1)/假(执行语句块2)->结束注意:对表达式和语句块的说明与if语句的相同。if语句嵌套一般形式if(表达式1)语句块1elseif(表达式2)语句块2elseif(表达式3)

语句块2else

语句块4

执行流程关键注意事项依次判断表达式的值,当出现某个值为真时,则执行其对应的语句块,然后跳到整个if

语句之外继续执行程序。如果所有的表达式均为假,则执行语句块4,然后继续执行后续程序。自上而下依次判断,一旦条件为真,执行对应语句块并跳出结构。所有条件均为假时,才会执行最后的else块。核心特点配对规则:else总是与最近的未配对if结合。代码可读性:务必使用缩进明确层级,避免逻辑错误。if语句的嵌套执行流程可视化实战:成绩等级判断intscore=85;//假设输入85分if(score>=90){printf("A");}elseif(score>=80){printf("B");}elseif(score>=70){printf("C");}elseif(score>=60){printf("D");}else{printf("E");}//输出结果:B条件表达式(三目运算符)核心语法与执行逻辑表达式1?表达式2:表达式3;计算“表达式1”,若为真(非0),执行“表达式2”若为假(0),则执行“表达式3”特点:简洁紧凑,适合简单的二选一赋值等价的if-else语句if(表达式1){表达式2;}else{表达式3;}实战:求两个数的最大值#include<stdio.h>intmain(){inta=10,b=20,max;//三目运算符写法(简洁)max=(a>b)?a:b;printf("最大值:%d\n",max);//输出20//等价的if-else写法if(a>b){max=a;}else{max=b;}return0;}实例体验:if语句书写的程序如下:#include<stdio.h>main(){inta,b,max;printf("输入两个整数:");scanf("%d%d",&a,&b);max=b;if(a>b)max=a;printf("%d和%d的较大值是:%d\n",a,b,max);}例4-4输入两个整数,输出其中的大数,用if语句和if…else语句书写程序。if…else语句书写的程序如下:#include<stdio.h>main(){inta,b,max;printf("输入两个整数:");scanf("%d%d",&a,&b);if(a>b)max=a;elsemax=b;printf("%d和%d的较大值是:%d\n",a,b,max);}实例体验:例4-5有一个函数编写程序,输入x,输出y值。程序代码:#include<stdio.h>main(){intx,y;printf("请输入一个x的值:");scanf("%d",&x);if(x==1)y=2*x;elseif(x>1)y=x+1;elsey=3*x-4;printf("x=%d,y=%d",x,y);}实例体验:问题描述:台儿庄古城是枣庄市台儿庄区的一处著名旅游景点,根据游客的年龄、门票类型等不同因素,门票价格会有所不同。台儿庄古城门票定价方案如下:1.儿童(年龄<12岁):30元/人。2.学生(12岁≤年龄≤18岁):60元/人。3.成人(年龄>18岁):90元/人。4.台儿庄区本地居民(身份证号以370405开头)凭有效证件享受半价优惠。请编写程序实现:接收用户输入的年龄和本地居民标识(y/n),按上述规则计算并输出应付门票价格。例4-6台儿庄古城门票价格计算。实例体验:分析:本题先提示用户输入年龄和是否为本地居民,然后使用if语句根据年龄判断门票类型,并设置对应的初始价格,再使用if语句判断是否为本地居民,如果是,则将门票价格减半,最后输出计算后的门票价格即可。用图4-6所示流程图表示该题设计思路。实例体验:程序代码:#include<stdio.h>main(){intage;charlocal;intticket_price=0;printf("请输入您的年龄:");//提示用户输入年龄scanf("%d",&age);printf("您是台儿庄区本地居民吗?(y/n):");//提示用户是否为本地居民scanf("%c",&local);//前面加空格是为了跳过可能的换行符或空格//判断年龄并计算门票价格if(age<12){

ticket_price=30;}elseif(age>=12&&age<=18){ticket_price=60;}else{ticket_price=90;}//判断是否为本地居民并应用优惠if(local=='y'){ticket_price/=2;}//输出最终门票价格printf("您的门票价格为:%d元\n",ticket_price);}4.3多分支语句——switch学习switch语句的语法和使用场景switch语句的语法一般形式switch(表达式){

case常量表达式1:语句块1;[break;]

case常量表达式2:语句块2;[break;]

case常量表达式n:语句块n;[break;]

[default:语句(n+1)]

[break;]}switch

关键字定义分支结构的开始,其后括号内为待判断的表达式。case关键字标记分支入口,后接常量表达式。若匹配则执行后续语句。break关键字跳出switch结构。若无此语句,程序会继续执行后续case。default关键字可选的默认分支,当所有case都不匹配时执行此部分。

在C语言中,if语句只有两个分支,而实际问题中常需要用到多分支选择,可以用if语句进行嵌套,但往往嵌套的层数多,会导致程序冗长且可读性降低。所以,C语言还提供了一种多分支结构—switch语句,它可以根据控制表达式的值,把程序跳转到多个语句中的一个去执行。switch语句的语法一般形式switch(表达式){

case常量表达式1:语句块1;[break;]

case常量表达式2:语句块2;[break;]

case常量表达式n:语句块n;[break;]

[default:语句(n+1)]

[break;]}switch

关键字定义分支结构的开始,其后括号内为待判断的表达式。case关键字标记分支入口,后接常量表达式。若匹配则执行后续语句。break关键字跳出switch结构。若无此语句,程序会继续执行后续case。default关键字可选的默认分支,当所有case都不匹配时执行此部分。

在C语言中,if语句只有两个分支,而实际问题中常需要用到多分支选择,可以用if语句进行嵌套,但往往嵌套的层数多,会导致程序冗长且可读性降低。所以,C语言还提供了一种多分支结构—switch语句,它可以根据控制表达式的值,把程序跳转到多个语句中的一个去执行。switch语句的语法switch后面括号内的“表达式”,其值可以是整型、字符型、枚举型数据;case后面的常量表达式值只能是常量,相当于一个语句标号,并不是在该处进行条件判断,表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch语句,继续执行所有后面case语句的情况。语句部分允许有多个语句,可以不用{}括起来。首先计算表达式的值,并逐个与case后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如表达式的值与所有case后的常量

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论