C语言分支结构程序设计

合集下载

C语言程序设计基础教程 4.7、多分支结构的应用

C语言程序设计基础教程 4.7、多分支结构的应用

缺省{ }时,else总是和它上面离它最近的未配对的if配对
注意if与else 的配对关系。
多分支结构的应用—相关知识
C语言
多分支结构
自然语言
如果(条件1) { 语句1; } 否则 如果(条件2) { 语句2; } 否则 如果(条件3) { 语句3; } 否则 { 语句4; }
C语言的多分支 if (表达式1) 语句 1
划分等级
内容
CONTENT S
01
任务分析
02
相关知识
任务完成与总结
03
多分支结构的应用—任务分析
C语言
任务分析
百分变等级
—输入1个学生成绩,为其划分等级。
A
大于等于90分 大于等于80分小于90分 大于等于60分小于80分
A B C
C
C
D D B
小于60分
D
多分支结构的应用—相关知识
C语言
分支语句的嵌套
else if(表达式2) 语句2
else if(表达式3) 语句3 else 语句4
多分支结构的应用—相关知识
C语言
多分支流程结构
T 语句1
表达式1
F
表达式2
T 语句2
F
表达式3
T
F
语句3
语句4
多分支结构的应用—任务实现
C语言
任务实现
90--100 80—89 60—79
0—59
多分支结构的应用—任务实现
自然语言的分支
如果(条件) { 语句1; } 否则 { 语句2; }
自然语言的分支嵌套
如果(条件) { 如果(条件) 则 语句4; }
多分支结构的应用—相关知识

湖南省C语言(上)教案:第四章分支结构程序设计(高教版).doc

湖南省C语言(上)教案:第四章分支结构程序设计(高教版).doc

第四章分支结构程序设计分支程序设计章节练习题四、选择题1.若x=0,y=3,z=3,以下表达式值为0的是A. !xB.x<y? 1:0C. x%2&&y==zD. y=x||z/32.以下运算符中优先级最低的运算符为 ,优先级最高的为。

A. &&B. !C. !=D. ||E. ?:F. ==3.若w=1,x=2,y=3,z=4,则条件表达式w<x?w:y<z?y:z的结果为。

A. 4B. 3C. 2D. 14.若w,x,z均为int型变量,则执行以下语句后的输出为。

w=3;z=7;x=10;printf("%d\n",x>10?x+100:x-10);printf("%d\n",w++||z++);printf("%d\n",!w>z);printf("%d\n",w&&z);A. 0B. 1C. 0D. 01 1 1 11 1 0 01 1 1 05.分析以下程序, 下列说法正确的是。

main(){ int x=5,a=0,b=3;if(x=a+b) printf("* * * *\n");else printf("# # # #\n");}A. 有语法错,不能通过编译B. 通过编译,但不能连接C. 输出* * * *D. 输出# # # #6.分析以下程序, 下列说法正确的是。

main(){ int x=0,a=0,b=0;if(x=a+b) printf("* * * *\n");else printf("# # # #\n");}A. 有语法错,不能通过编译B. 通过编译,但不能连接C. 输出* * * *D. 输出# # # #7.分析以下程序, 下列说法正确的是。

实验三---分支结构程序设计实验报告-

实验三---分支结构程序设计实验报告-

XXX大学软件类实验报告
课程名称:C语言程序设计学号:
姓名:
班级:
指导教师:
开课学期:
学院:
XXX大学教务处
4.switch语句。

四、实验过程及内容:(运行结果请抓图到对应题目的下方)
1. 先分析以下程序,写出运行结果,再上机检验。

实验结果:
2.先分析以下程序,写出运行结果,再上机检验。

实验结果:
3.先分析以下程序,写出运行结果,再上机检验。

实验结果:
4. 程序改错题。

以下程序的功能是将a、b、c三个数从小到大进行排序,即使得a≤b≤c.。

程序中有一些错误,试将其改正并上机验证。

实验结果:
5. 程序填空题。

以下程序的功能是:从键盘接收一个字符,如果是小写英文字母,则将其转换为相应的大写字母;如果是大写英文字母,则将其转换为相应的小写字母;如果是其他字符,则不做转换。

填空将程序补充完整并上机验证。

实验结果:
6. 编程题。

根据以下分段函数计算y的值,x的值由键盘输入。

保留两位小数
输入格式:-2
输出格式:y=-2.00
实验代码:
实验结果:
7.输入一个正整数作为年份,编程判断该年是否为闰年。

若是输出“Yes”,否则输出“No”。


示:能被4整除,但不能被100整除的年份;或者能被400整除的年份。

实验代码:
实验结果:。

C语言-第3章分支结构教学案

C语言-第3章分支结构教学案

第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语言程序设计-第四章简单计算器小程序-分支程序设计

C语言程序设计-第四章简单计算器小程序-分支程序设计

P1 逻辑运算符 P2

逻辑运算符 P2
课堂练习: 求下面逻辑表达式的值: 2>1 && 4 && 7<3+!0
值为0
等价于((2>1)&&4)&&(7<(3+(!
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算的重要规则
a&&b:当a为0时,不管b为何值,结果为0
课堂练习:有下面定义的语句和逻辑表达式: int a=0,b=10,c=0,d=0 a && b && (c=a+10,d=100) 逻辑表达式执行后,a,b,c,d的值各为多少?
任务实现效果演示 例题源代码:switchcalculator.c
相关知识 1. switch语句 2. break语句
1 switch多分支选择结构
❖ 尽管用if…else if结构可以实现多分支,注但意当:分常支量较表多达时式,必程须序是结整构型较、复字杂符。型或枚举类型,不能是 实型表达式,每个case关键字后的常量表达式应互不相同
值为0 等价于i==(k>j),值为1
1 条件运算符和条件表达式 1.2 逻辑运算—逻辑运算符与逻辑表达式
&&(逻辑与)、||(逻辑或)、!(逻辑非)(单目)
逻辑表达式的一般形式:
优先级: 1.由低到高: ||→ && → !; 2.多种运算符一起: = →|| →&& →关系运算符 →算术运算符→ !。
【】 简单计算器小程序:由用户输入运算数和四则运算符(+、-、*、/),输出计算结果。
【】

C语言程序设计(第3版)何钦铭 颜 晖 第3章 分支结构

C语言程序设计(第3版)何钦铭 颜 晖 第3章  分支结构

第3章分支结构【练习 3-1】例 3-4 中使用 else-if 语句求解多分段函数,为了检查 else-if 语句的三个分支是否正确,已经设计了三组测试用例,请问还需要增加测试用例吗?为什么?如果要增加,请给出具体的测试用例并运行程序。

解答:最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。

可再给出 x=0和 x=15 时的两种情况。

【练习 3-2】计算符号函数的值:输入一个整数 x,计算并输出下列分段函数sign(x)的值。

-1 x<0y=sign(x)= 0 x=01 x>0解答:#include <stdio.h>int main(void){int x, y;printf("Enter x: " );scanf("%d",&x);if(x>0) y=1;else if (x==0) y=0;else y=-1;printf("sign( %d ) = %d\n",x,y);return 0;}【练习 3-3】统计学生平均成绩与及格人数:输入一个正整数 n,再输入 n 个学生的成绩,计算平均成绩,并统计所有及格学生的人数。

试编写相应程序。

解答:# include <stdio.h>int main(void){int count, i, n;double grade, total;printf("Enter n: ");scanf("%d", &n);total = 0;count = 0;for(i = 1; i <= n; i++){printf("Enter grade #%d: ", i);scanf ("%lf", &grade);total = total + grade;if(grade >= 60) count++;}printf("Grade average = %.2f\n", total / n);printf("Number of pass = %d\n", count);return 0;}【练习 3-4】统计字符:输入 10 个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

实验二C语言中的分支语句程序设计实验

实验二C语言中的分支语句程序设计实验

实验二 C语言中的分支语句程序设计一、实验目的:1.掌握C语言的基本语法;2.掌握C语言的表达式运算及标准库函数的调用方法;3.掌握C语言的基本输入输出语句;4.掌握字符类型、整型和浮点型数据的输入输出及表达式计算方法;5.掌握if语句和switch语句的用法;6.掌握分支程序结构的设计思想;二、实验内容(一)分析程序,用程序验证下面各个表达式的值1、当整型变量a,b,c的值分别为3,4,5时,以下各语句执行后a,b,c的值为多少? (1) if(a>c) {a=b; b=c; c=a;}else {a=c; c=b; b=a;}执行后a,b,c的值为,,(2) if(a<c) a=c;else a=b; c=b; b=a;执行后a,b,c的值为,,(3) if(a!=c) ;else a=c; c=b; b=a;执行后a,b,c的值为,,2、若整数x分别等于95、87、100、43、66、79,57,则以下程序段运行后屏幕显示是什么?switch(x/10){ case 6:case 7: printf("Pass\n"); break;case 8: printf("Good\n"); break;case 9:case 10: printf("V eryGood\n"); break;case 5 : printf("Between Pass and Fail\n");default: printf("Fail\n");}x等于95时,程序段运行后屏幕上显示。

x等于87时,程序段运行后屏幕上显示。

x等于100时,程序段运行后屏幕上显示。

x等于43时,程序段运行后屏幕上显示。

x等于66时,程序段运行后屏幕上显示。

x等于79时,程序段运行后屏幕上显示。

x等于57时,程序段运行后屏幕上显示。

C语言程序设计 第2章 顺序结构与分支结构程序设计

C语言程序设计 第2章 顺序结构与分支结构程序设计

main() { char op;float x,y;
scanf("%f%c%f",&x,&op,&y); switch (op) { case '+' : printf("=%f\n",x+y); break;
case '-' : printf("=%f\n",x-y); break; case '*' : printf("=%f\n",x*y); break; case '/' : if (y!=0.0)
200,0,0
空语句
空语句是只有分号 ;的语句。示什么操作也不做。 从语法上讲,空语句也是一条语句。 在程序设计中,若某处在语法上需要一条语句,而实际上不需要 执行任何操作时就可以使用它。 例如,在设计循环结构时,有时用到空语句。
int i,s=0; for(i=1;i<=10;s=s+i++);
main() { int a;
scanf("%d",&a); switch(a) { case 3+8:printf("a==11");break; case 90: printf("a==90");break; case 'a': printf("a==97");break; case a>100:printf("a>100");break; default:printf("default"); } }
printf("%c\n",c); }

c语言运输公司按照以下方法计算运费,c语言程序设计第4章_分支结构.ppt

c语言运输公司按照以下方法计算运费,c语言程序设计第4章_分支结构.ppt

c语⾔运输公司按照以下⽅法计算运费,c语⾔程序设计第4章_分⽀结构.ppt《c语⾔程序设计 第4章_分⽀结构.ppt》由会员分享,可在线阅读,更多相关《c语⾔程序设计 第4章_分⽀结构.ppt(36页珍藏版)》请在⼈⼈⽂库⽹上搜索。

1、C语⾔程序设计教程(第2版),第4章 分⽀结构,第4章 分⽀结构,本章主要内容 1. if语句的基本结构 2.ifelse语句基本结构 3. if语句的嵌套结构 4. switch语句的基本结构 5.程序案例分析,第4章 分⽀结构,顺序结构:程序按照语句的先后顺序进⾏数据处理。

分⽀结构:程序要对问题进⾏判断,根据判断的结果,选择不同的处理⽅式,进⾏不同的操作。

C语⾔⽤于实现分⽀的结构: if结构 switch结构 4.1.1 if语句if语句结构是⼀种常⽤的分⽀结构,是最简单的⼀种单分⽀结构,该结构构成⼀个⼆叉结构。

,if语句的⼀般形式为。

if() 语法功能: 先判断的值,若该值为“真。

2、”, 则:执⾏; 否则:什么也不执⾏。

注意: 1. :⼀般为条件表达式或逻辑表达式。

2. if语句中的⼀般情况下都是以复合语句的形式出现,即⽤⼀对花括号将语句括起来。

如果语句只有⼀条,则可以不需要花括号 3. if结构的流程图 :,4.1 if结构,4.1 if结构,例1:从键盘任意输⼊两个实数a和b,要求a的值总是⼩于或等于b的值,然后输出这两个数a和b的值。

分析:根据题意,要求ab。

⽅案:先输⼊⼀个较⼩的数,赋给变量a,再输⼊⼀个较⼤的数,赋给变量b。

问题:输⼊的限制对⽤户不合理。

如果先输⼊的值较⼤,后输⼊的值较⼩,则结果为ab。

⽅案修正:不论输⼊的⼤⼩顺序怎样,总是会有ab的。

3、结果。

,4.1 if结构,算法的流程图如图所⽰: 其中虚线框为if结构。

程序的难点:交换a,b的值。

程序见:example4_1.c 例2:从键盘输⼊⼀个整数,求该数的绝对值。

C语言程序设计

C语言程序设计

>=90, A. (90-100)。 >=80, B. (80-89)。 >=70, C. (70-79)。 >=60, D. (60-69)。
>=0, E. (0-59)。 main( ) { float score; printf(“\n Enter a score(0-100):”); scanf(“%f”,&score); if (score>=90) printf(“A \n”); else if (score>=80) printf(“B \n”); else if (score>=70) printf(“C \n”); else if (score>=60) printf(“D \n”); else printf(“E \n”); }
次序任意
(4) 在switch开关分支语句结构中, default部分不是必须的, 如果没 有default部分, 则当e表达式的值与各case后的ci常量表达式的值 都不一致时, 则程序不执行该结构中的任何部分。 switch ( e ) { case c1: S1; break; case c2: S2; break; …… case cn: Sn; break; }
使用 switch-case 分支语句时,应注意以下几点: (1)switch 后面的e表达式 可以是整型常量或变量、字符型常量或变量、枚举 类型表达式。其结果值必须是整型数据或字符型数据。 switch ( e ) { case c1: S1; break; case c2: S2; break; …… case cn: Sn; break; default : Sn+1; break; } 例: main( ) { char a; switch (5+6/3) { .. .. } switch (a ) { .. .. } … }

C语言小结x

C语言小结x

十七、 十七、文

1、关于输入输出的概念
主机 运算器 输入设备
输入
控制器 内存储器
输入 读 输出 写
输出
输出设备
外存储器
2、文件的建立与读取 、 (1)数据文件的建立步骤:(设有 FILE *fp;) • fp=fopen(“文件名”,“写方式”); • 反复写;( fputc(ch,fp); fputs(str,fp); putw(i,fp);
2001 2002 2003 2004
c n v
注意: 注意:共用体类型变量每次只能存放一个成员的 值。
十五、 十五、 枚举类型
枚举类型的定义 enum 枚举类型名 标识符 ,标识符 }; 枚举类型名{ 标识符[ 标识符 ; 标识符]
例如: 例如:
其中的标识符称为枚举常量
enum weekday {sun,mon,tue,wed,thu,fri,sat} ;



十、指针变量
指针类型 指向变量的指针变量 指向数组元素的指针变量 指向字符串的指针变量 指向一维数组的指针变量 指针数组 指向指针的指针 指向函数的指针变量 返回指针值的函数 定义形式 备 注
int *p; int a[10]; int b[3][4]; int*p=a, *q=b; char *p=“Beijing”; int (*p)[4]; int *p[4]; int **p; int (*p)( ); int *p(x,y)
返回到主调函数有关函数 调用语句之后
计算 一个 值
char int float ……
表达式形式: 表达式形式: 例如: x=max(a,b);
返回到主调函数表达式转 出处

实验二 C语言中的分支语句程序设计实验

实验二  C语言中的分支语句程序设计实验

实验二 C语言中的分支语句程序设计一、实验目的:1.掌握C语言的基本语法;2.掌握C语言的表达式运算及标准库函数的调用方法;3.掌握C语言的基本输入输出语句;4.掌握字符类型、整型和浮点型数据的输入输出及表达式计算方法;5.掌握if语句和switch语句的用法;6.掌握分支程序结构的设计思想;二、实验内容(一)分析程序,用程序验证下面各个表达式的值1、当整型变量a,b,c的值分别为3,4,5时,以下各语句执行后a,b,c的值为多少? (1) if(a>c) {a=b; b=c; c=a;}else {a=c; c=b; b=a;}执行后a,b,c的值为,,(2) if(a<c) a=c;else a=b; c=b; b=a;执行后a,b,c的值为,,(3) if(a!=c) ;else a=c; c=b; b=a;执行后a,b,c的值为,,2、若整数x分别等于95、87、100、43、66、79,57,则以下程序段运行后屏幕显示是什么?switch(x/10){ case 6:case 7: printf("Pass\n"); break;case 8: printf("Good\n"); break;case 9:case 10: printf("VeryGood\n"); break;case 5 : printf("Between Pass and Fail\n");default: printf("Fail\n");}x等于95时,程序段运行后屏幕上显示。

x等于87时,程序段运行后屏幕上显示。

x等于100时,程序段运行后屏幕上显示。

x等于43时,程序段运行后屏幕上显示。

x等于66时,程序段运行后屏幕上显示。

x等于79时,程序段运行后屏幕上显示。

x等于57时,程序段运行后屏幕上显示。

《C语言程序设计》知识点总结

《C语言程序设计》知识点总结

C语言最重要的知识点总体上必须清楚的:1)程序结构是三种: 顺序结构、选择结构(分支结构)、循环结构。

2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main函数。

3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是它的地址.4)bit是位是指为0 或者1。

byte是指字节, 一个字节 = 八个位.概念常考到的:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。

C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。

2、define PI 3.1415926; 这个写法是错误的,一定不能出现分号。

3、每个C语言程序中main函数是有且只有一个。

4、在函数中不可以再定义函数。

5、算法:可以没有输入,但是一定要有输出。

6、for循环中for语句写成 for(i=0; i<100; i++); ,这个写法是有问题的,for的后面如果出现分号,相当于for循环体是空的。

7、break可用于循环结构和switch语句。

8、逗号运算符的级别最低,赋值的级别倒数第二。

第一章C语言的基础知识第一节、对C语言的基础认识1、C语言编写的程序称为源程序,又称为编译单位。

2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。

3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节、熟悉vc++1、VC是软件,用来运行写的C语言程序。

2、每个C语言程序写完后,都是先编译,后链接,最后运行。

(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。

第三节、标识符1、标识符合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了2、标识符分为关键字、保留标识符、用户标识符。

关键字:不可以作为用户标识符号。

第四章 选择(分支)结构程序设计

第四章 选择(分支)结构程序设计
4.2.2 逻辑表达式 掌握C语言的关系运算符和逻辑运算符后,可以
用一个逻辑表达式来表示一个复杂的条件。
例如:判断某一年是否闰年。 闰年:能被4整除,但不能被100整除;或能被 400整除。
(year%4==0&&year%100!=0)||year%400==0
表达式为“真”,闰年条件成立,是闰年,否则 非 闰年。
复合语句的形式:
{ 语句1; 语句2; 语句3; ……
}
4.3 if语句
4.3.1 if语句三种形式
复合语句在选择结构,循环结构中经常用到。 我们在逻辑上把复合语句看成是一条语句。
4.3 if语句
4.3.1 if语句三种形式
例:要求用户输入一个实数,然后求出这个实数 的绝对值。
4.3 if语句
逻辑运算的真值表:
a b a&&b
a||b
真真 真

真假 假

假真 假

假假 假

a
!a




4.2 逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序
例:逻辑运算举例 a&&b 若a、b为真,则a&&b为真。 a||b 若a、b之一为真,则a||b为真。 !a 若a为真,则!a为假,反之若a为假,
4.3.1 if语句三种形式
▪ 在C语言中,表达式P的值是非0时,系统均按真 值处理。
例(1) if (‘a’) printf(“ok!”); (2) x=-5; if(x) printf(“ok!”); (3) y=0; if(y==0) printf(“ok!”); if(y) printf(“ok!”);

分支程序设计

分支程序设计

编号:GXJG/JX-JL-12(08) 保存期限:三年教案审批表课题名称:3.1条件语句教学目标:(1)知识目标:掌握if语句的格式及使用,掌握条件运算符的格式及使用;(2)能力目标:熟练使用if语句;(3)情感目标:培养学生的逻辑思维,提高学生知识应用能力。

教学分析与准备:1.教学重点i f语句的格式及使用,条件运算符的格式及使用。

2.教学难点条件运算符。

3.教学策略通过对比,讨论启发学生对if语句的认识,结合具体实例分析加深学生对if语句的认识。

4.课时安排2课时(45分钟×2)5.教学环境多媒体教室学习过程:分支程序往往需要一个关系表达式或者逻辑表达式作为判决的条件。

根据其值是真还是假来决定执行相应的语句。

3.1.1 if语句if语句在C语言里有两种基本形式:(1)if (条件)语句;(2)if (条件)语句1;else 语句2;无论是哪种形式的if语句,都要首先判断()内表达式的值,若为真(不为0),执行()后的语句(第(2)种形式为语句1);若为假(为0)则执行()后面语句之后的语句(第(2)种形式为else后的语句2)。

图7-1为这两种形式的程序框图。

两种if注意,这两种形式if后的“条件”大多是逻辑表达式或关系表达式,根据是0还是非0执行“假”或“真”的处理。

此外,语句之后一定有分号(;),它是语句的组成部分,不能省略(尤其是else前的分号)。

同时,若if和else后有多个语句,可以用{ }形成复合语句。

例3-1输入两个实数,按代数值由小到大次序输出这两个数。

main(){ float a,b,x;printf("Please input a,b:\n");scanf("%f,%f”,&a,&b);if(a>b){ x=a;a=b;b=x;}printf("%f,%f\n",a,b);}运行情况如下:4.5,2.8↙2.8,4.5if条件后面是复合语句,完成两个变量的交换,不能用a=b,b=a;来进行交换,常用第三个变量来暂存变量值。

C语言程序设计教程:选择结构程序设计

C语言程序设计教程:选择结构程序设计
25
4.2 switch语句
(5) case后面的语句块可以是一条语句或多条语句,也可 是空语句,但不需要用大括号括起来。
(6) 当case后面常量表达式与switch后面的表达式均不匹 配时,则执行default后面的语句块,default可以放在程序的 任何位置,不一定要位于最后。
(7) 多个case可以共用一个语句块。 例如: switch(n)
注意:当多分支中有多个表达式同时满足时,只执行第一个与之匹配的语句块。 因此要注意对多分支中条件表达式的书写次序,防止某些值被过滤掉。
15
4.1.1 if语句的三种形式
思考:若将例4.4中程序改为以下两种写法,结果分别会如何?
程序段一如下: #include <stdio.h> main() {
float score; printf("请输入学生期末考试成绩(0-100):\n "); scanf("%f", &score); if(score>=90)
4.1.1 if语句的三种形式
程序段二如下: #include <stdio.h> main() {
float score; printf("请输入学生期末考试成绩(0-100):\n "); scanf("%f", &score); if(score>=60)
printf("及格!\n "); else if(score>=70)
9
4.1.1 if语句的三种形式
2. 双分支选择结构
双分支结构语法的一般格式为:
if(表达式)
{
语句块1;
}

【实验指导书】实验3:分支结构程序设计

【实验指导书】实验3:分支结构程序设计

实验三:分支结构程序设计一、实验目的:1. 熟练掌握关系表达式和逻辑表达式的使用;2. 熟练掌握用嵌套的if语句和switch语句实现多分支结构程序设计;3. 熟练掌握switch语句中break语句的作用;4. 掌握简单的调试程序方法,包括:单步调试和运行到光标。

二、实验要求:1.编写程序,计算分支函数。

要求:输入为任意实数,输出结果保留小数点后2位。

输入输出示例:Enter x:227.00提示:实现x n可以标准库函数pow(x,n),此数学函数已在头文件math.h中说明。

2.编写程序。

根据一个年份,判断是否是闰年。

要求:输入为一个整数,表示一个年份;输出:如果是闰年,输出"Y es",否则输出"No"。

输出单独占一行。

输入输出示例:Enter year:2012Yes3. 编写程序。

给你三个正整数,判断用这三个整数做边长是否能构成一个三角形。

要求:输入为三个正整数,中间有一个空格隔开;输出:如果能构成三角形,输出"Yes",否则输出"No"。

提示:在一个三角形中,任意两边之和大于第三边。

输入输出示例:3 4 5Yes4.输入五级制成绩(A~E),输出相应的百分制(0~100)区间。

要求用switch语句。

五级制对应的百分制成绩区间为:A(90~100)、B(80~89)、C(70~79)、D((60~69))、E(0~59)。

输入输出示例:Input Grade:BB对应的百分制成绩区间是80~895.编写程序,输入月薪salary,输出应交的个人所得税tax(保留2位小数)。

按照2011年开始实行的新的个人所得税法,计算公式为:tax=rate*(salary - 3500)- deduction当salary ≤3500时,rate = 0、deduction = 0;当3500 <salary ≤5000时,rate = 3%、deduction = 0;当5000 <salary ≤8000时,rate = 10%、deduction = 105;当8000 <salary ≤12500时,rate = 20%、deduction = 555;当12500 <salary ≤38500时,rate = 25%、deduction = 1005;当38500 <salary ≤58500时,rate = 30%、deduction = 2755;当58500 <salary ≤83500时,rate = 35%、deduction = 5505;当83500 <salary时,rate = 45%、deduction = 13505。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

3.1 算法与基本程序结构
3.1.1 算法简介
1.算法的定义
算法是一个有限规则的集合,其中的规则描述了解决某个特 定问题的运算序列,也就是为解决一个具体问题而采取的确 定的有限操作步骤 .
广义地说,为解决一个问题而采取的方法和步骤,就称 为“算法”。
对同一个问题,可有不同的解题方法和步骤
例: 求
小结:

一个结构化的算法是由一些基本结构顺序组成 的。在基本结构之间不存在向前或向后的跳转, 流程的转移只存在于一个基本结构范围之内(如 循环中流程的跳转);一 个非结构化的算法可 以用一个等价的结构化算法代替,其功能不变 。 如果一个算法不能分解为若干个基本结构,则 它必然不是一个结构化的算法。
2.传统流程图描述
美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号:
起止框
判断框
处理框
输入/输出框
注释框
流向线
连接点
开始 读入n Y 提示错误信 息
n< 0? N
result=1, i=1 result=result*i i=i+1 i>n? Y 输出result 结束 N
说明:
关系运算符的优先级低于算术运算符 关系运算符的优先级高于赋值运算符
3.关系表达式
• 用关系运算符将两个表达式(可以是算术表达式或 关系表达式,逻辑表达式,赋值表达式,字符表达式) 接起来的式子,称关系表达式
C语言中没有专用 的逻辑值,1代表 例:a>b,a+b>b+c,(a=3)>(b=5),‟a‟<„b‟,(a>b)>(b<c) 真,0代表假
4. 用伪代码表示算法
概念:伪代码是用介于自然语言和计算机语言之 间的文字和符号来描述算法。 特点:它如同一篇文章一样 ,自上而下地写下 来。每一行(或几行)表示一个基本操作。它不用 图形符号,因此书写方便 、格式紧凑,也比较 好懂,也便于向计算机语言算法(即程序)过渡。 用处:适用于设计过程中需要反复修改时的流程 描述。
顺序结构、选择结构、循环结构
用这三种基本结构作为表示一个良好算法的基本单元。
基本程序结构
所有程序都可以由顺序结构、分支结构和循环结构这三种基 本结构完成。
1)顺序结构
顺序结构中的各部分操作按照书写顺序依次执行,不存在 任何跳转。
2)分支结构
也叫选择结构,通过一个判断框来描述。
3)循环结构
是对一组操作进行重复操作的结构。
5. 用计算机语言表示算法
概念:用计算机实现算法。计算机是无法识别流 程图和伪代码的。只有用计算机语言编写的程序 才能被计算机执行。因此在用流程图或伪代码描 述出一个算法后,还要将它转换成计算机语言程 序。 特点:用计算机语言表示算法必须严格遵循所用 的语言的语法规则,这是和伪代码不同的。 用处:要完成一件工作,包括设计算法和实现算 法两个部分。设计算法的目的是为了实现算法。
简单算法举例
例: 求1×2×3×4×5 步骤1:先求1×2,得到结果2 步骤2:将步骤1得到的乘积2再乘以3,得到结果6 步骤3:将6再乘以4,得24 步骤4:将24再乘以5,得120
如果要求1×2×…×1000,则要写999个步骤
可以设两个变量:一个变量代表被乘数,一个变量代表乘数。
不另设变量存放乘积结果,而直接将每一步骤的乘积放 在被乘数变量中。设p为被乘数,i为乘数。用循环算法 来求结果, 算法可改写:

例: “打印x的绝对值” 的算法可以用伪代码表 示为:
IF x is positive THEN print x ELSE print -x 也可以用汉字伪代码表示: 若 x为正 打印 x 否则 打印 -x 也可以中英文混用,如: IF x 为正 print x ELSE print -x
小结:
流程图是表示算法的较好的工具。 一个流程图包括以下几部分 : (1)表示相应操作的框; (2)带箭头的流程线; (3)框内外必要的文字说明。
三种基本结构和改进的流程图
1.传统流程图的弊端 传统流程图用流程线指出各框的执行顺序, 对流程线的使用没有严格限制。因此,使用者 可以毫不受限制地使流程随意地转向,使流程 图变得毫无规律,阅读者要花很大精力去追踪 流程,使人难以理解算法的逻辑。如图:
3.2 关系运算和逻辑运算
3.2.1 关系运算
关系运算是两个操作对象之间的比较运算,运算的结果是 一个逻辑值:真(用1表示)或假 (用0表示)
1.关系运算符
C语言中共有6个关系运算符: > 大于 >= 大于或等于 < 小于 <= 小于等于 == 等于 != 不等于
2.关系运算符的优先级问题
在6个关系运算符中,>、>=、<、<=的优先级相同, ==和!=优先级相同,前面4个优先级比后面的2个优先 级高,结合性都是左结合。 例如设变量a的值为4,变量b的值为6,则执行下面的语 句后 z=a*10+b>50; 最终结果Z=0
此图符合基本结构的特点
这是一个多分支 选择结构,根据表 达式的值决定执行 路线。虚线框内的 结构是一个入口一 个出口,并且有上 述全部的四个特点。 由此构成的算法结 构也是结构化的算 法。可以认为这是 由三种基本结构所 派生出来的。
3.NS流程图描述
1973年美国学者I.Nassi和B.Shneiderman提出了一种新的流程图形式。在这种流程图中,完 全去掉了带箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其它的从属于它的 框,或者说,由一些基本的框组成一个大的框。这种流程图又称N--S结构化流程图。 NS流程图 与传统流程图相比,取消流程线的使用,算法只能自上而下执行,更适合结构化程序设计。
开始
例: 求5!。用伪代码表示算法:
置t的初值为1 置i的初值为2 当i<=5,执行下面操作: 使t=t×i 使i=i+1 {循环体到此结束} 输出t的值 结束
也可以写成以下形式:
BEGIN{算法开始} 1t 2 i while i≤5 {t×i t i+1 i} print t END{算法结束}

n
n 1
100
方法1:1+2,+3,+4,一直加到100 加99次 方法2:100+(1+99)+(2+98)+…+(49 +51)+50 = 100 + 49×100 +50 加51次
为了有效地进行解题,不仅需要保证算法正确,还要 考虑算法的质量,选择合适的算法。希望方法简单,运 算步骤少。 计算机算法可分为两大类别: 数值运算算法:求数值解,例如求方程的根、求函数的 定积分等。 非数值运算:包括的面十分广泛,最常见的是用于事务 管理领域,例如图书检索、人事管理、行车调度管理等。
三种基本结构的图示:
示:
当型(While型)循环结构
直到型(Until型)循环
三种基本结构的共同特点: (1)只有一个入口。 (2)只有一个出口。(请注意:一个菱形判断框有两 个出口,而一个选择结构只有一个出口。不要将 菱形框的出口和选择结构的出口混淆。) (3)结构内的每一部分都有机会被执行到。 (4)结构内不存在“死循环”(无终止的循环)。
读入n的值 N result=1, i=1 result=result*i i=i+1 直到i>n为止 输出result n<0? Y
N-S流程图用以下的流程图符号:
(1)顺序结构 (2)选择结构
(3)循环结构
用三种N-S流程图中的基本框,可以组成复杂的N-S流程图。 图中的A框或B框,可以是一个简单的操作,也可以是三个基本 结构之一。
A框可以是一个选择结构
B框可以是一个循环结构
例: 求5!的算法用N-S 图表示
N-S图表示算法的优点

比文字描述直观、形象、 易于理解; 比传统流程图紧凑易画。尤其是它废除 了流程线,整个算法结构是由各个基本 结构按顺序组成的,N--S流程图中的上 下顺序就是执行时的顺序。用N--S图表 示的算法都是结构化的算法,因为它不 可能出现流程无规律的跳转,而只能自 上而下地顺序执行。
2 算法的特性
一个算法应该具有以下特点:

有穷性:包含有限的操作步骤。 确定性:算法中的每一个步骤都应当是确定的。 有零个或多个输入:输入是指在执行算法时需要 从外界取得必要的信息。 有一个或多个输出:算法的目的是为了求解, “解” 就是输出。 有效性:算法中的每一个步骤都应当能有效地执 行,并得到确定的结果 。

例:求5!,用C语言表示。
#include <stdio.h> void main( ) { int i,t; t=1; i=2; while(i<=5) { t=t*i; i=i+1; } printf(″%d\n″,t); }

应当强调说明:写出了C程序,仍然 只是描述了算法,并未实现算法。只 有运行程序才是实现算法。应该说, 用计算机语言表示的算法是计算机能 够执行的算法。
缺点:难以阅读、修改,使算法的 传统流程图的流程可以是: 可靠性和可维护性难以保证。 解决办法:必须限制箭头的滥用, 即不允许无规律地使流程随意转向, 只能顺序地进行下去。
这种如同乱麻一样的算法称为BS型算法,意为一碗 面条(A Bowl of Spaghetti),乱无头绪。
2.三种基本结构
Bohra和Jacopini提出了以下三种基本结构:
S1:1→p S2:3 → i S3:p×i → p S4:i+2 → i S5:若i≤1000,返回S3。否则,结束。
相关文档
最新文档