C语言程序设计PPT课件 第5章
&&year !=0 ||year 400= year% (year % 4= =0 &&year %100 !=0)||year%400= =0 上述表达式为真 为真, year是闰年 否则为非闰年。 是闰年; 上述表达式为真,则year是闰年;否则为非闰年。
§5.3 if语句
if语句 : 判别条件是否满足 来决定程序的流程 语句: 判别条件是否满足,来决定程序的流程 语句 执行两路操作之一) (执行两路操作之一)。
例:设a=3,b=4,x=0,y=0,求值: ,求值: !非 高 算术运算符 2、a = = b | | x = = y 、 值为1 值为 关系运算符 3、! a | | a > b 、 值为0 值为 && 4、! a && b || x > y && c 、 || 值为0 值为 5、int a=-1,b=1,c=2,d=3,m=5,n=2,k; 赋值运算符 、 1、a < b && x > y 值为0 值为 k=(m=a+b)&&(n=c+d) k为0 ,m为0, n为2 为 为 , 为
5.1.1 关系运算符及其优先次序
C语言有六种关系运算符: 语言有六种关系运算符: 语言有六种关系运算符 < 小于 <= 小于或等于 优先级相同( 优先级相同(高) > 大于 >= 大于或等于 ==(连续两个 ) 优先级相同( (连续两个=) 优先级相同(低) != 不等于
关系表达式: 关系表达式 用关系运算符将两个表达式连接
x >= 0 真 x>0 真 y= 1 假 y=0 y= -1 真 x>0 真 y= 1 假 y=0 x!=0 假 y= -1 假
5.3.3 条件运算符
语句中, 表达式” 在if语句中,在“表达式”为“真”和“假”时,都只执 语句中 行一个赋值语句给同一变量赋值,
例、if (a>b) max = a; else max = b;
可以用如下条件运算符来处理: 可以用如下条件运算符来处理: 条件运算符来处理 max = (a>b) ? a : b 件表达式的一般形式: 件表达式的一般形式:
其中, 其中,“(a>b) ? a : b”是一个 是一个 条件表达式,若条件( 条件表达式,若条件(a>b) ) 成立,则条件表达式取值a; 成立,则条件表达式取值 ; 否则,取值b。 否则,取值 。
[例 5.1] 输入两个实数 , 按代数值由小到 例 输入两个实数, 大输出这两个数。 大输出这两个数。 main() { float a,b,t; scanf("%f,%f",&a,&b); if (a>b) { t = a; a = b; b = t; } printf("%5.2f,%5.2f",a,b); } 运行示例 3.6 ,-3.2↙ ↙ -3.2, 3.6
条件运算符,称为“ 三目运算符” 语言中唯一的一个三目运算符) 条件运算符 称为“三目运算符 ” ( C语言中唯一的一个三目运算符) 。 条 称为 语言中唯一的一个三目运算符
表达式1?表达式 :表达式3 表达式 ?表达式2:表达式
条件运算符的优先级仅高于赋值运算符和逗号运算符 并且结合性为自右向左。(不是指运算的顺序) 并且结合性为自右向左。(不是指运算的顺序) 。(不是指运算的顺序
a b a&&b a || b 0 0 0 0 0 非0 0 1 0 1 非0 0 1 非0 非0 1
!非 高 算术运算符 关系运算符 && || 赋值运算符
优先级关系 低
&&与运算的求值顺序 与运算的求值顺序 a&&b 若表达式a的值为 则不论表达式b为何 若表达式 的值为0则不论表达式 为何 的值为 则不论表达式 整个表达式的值都为0。因此, 值,整个表达式的值都为 。因此,在计算时 先求解表达式a, 为非 为非0值 再求解表达式b, 先求解表达式 ,若a为非 值,再求解表达式 , 根据b的值来决定整个表达式的值 的值来决定整个表达式的值; 为 , 根据 的值来决定整个表达式的值;若a为0, 则不再求解表达式b。 则不再求解表达式 。 ||与运算的求值顺序 与运算的求值顺序 a||b 若表达式 的值为非 值则不论表达式 为 若表达式a的值为非 值则不论表达式b为 的值为非0值则不论表达式 何值,整个表达式的值都为1。因此, 何值,整个表达式的值都为 。因此,在计算 时先求解表达式a, 为 时 再求解表达式b, 时先求解表达式 ,若a为0时,再求解表达式 , 根据b的值来决定整个表达式的值;若a为非 根据 的值来决定整个表达式的值; 为非0 的值来决定整个表达式的值 为非 则不再求解表达式b。 值,则不再求解表达式 。
[例5.3] 有一函数如下, 例 有一函数如下,
y = 1 0 1 ( x ( x ( x < = > 0 ) 0 ) 0 )
程序1: 程序 : main() { int x,y; scanf("%d",&x); if (x<0) y = -1; else if (x==0) y = 0; else y = 1; printf("x=%d,y=%d\n",x,y); }
第5章 选择结构程序设计
关系运算 switch语句 switch语句 逻辑运算 if 语 句
§5.1 关系运算符和关系表达式
关系运算: 比较运算, 关系表达式” 关系运算 : 比较运算 , 用 “ 关系表达式 ” 进 行运算。 行运算。 例、a > 3 是一个关系表达式,它取两个值: 真 和 假 。 是一个关系表达式,它取两个值:"真"和"假"。
条件表达式的求解过程 先求解表达式 的值 先求解表达式1的值 先求解表达式 若表达式 的值为真(非0);则求解表达式2的值,将 若表达式1的值为真 非 ;则求解表达式 的值, 若表达式 的值为真 的值 其作为条件表达式的值。表达式 不计算 不计算。 其作为条件表达式的值。表达式3不计算。 若表达式1的值为假 ;则求解表达式3的值 的值, 若表达式 的值为假(0);则求解表达式 的值,将 的值为假 其作为条件表达式的值。表达式 不计算 不计算。 其作为条件表达式的值。表达式2不计算。 例:int a=1,b=2,c=3,d=4,m=5,n=6,k; k=a>b?(m=c>b): (n=b>d) 例:int a=1,b=2,c=3,d=4,m=5,n=6,k; k=a<b?d: b>c?(m=c>b): (n=b>d)
优先级关系 低
判别某一年year是闰年, year是闰年 例:判别某一年year是闰年,闰年的条件符合 下面二者之一: 下面二者之一: 能被4整除,但不能被100整除; 100整除 (1)能被4整除,但不能被100整除; 能被4整除,又能被400整除。 400整除 (2)能被4整除,又能被400整除。 可以用一个逻辑表达式表示: 可以用一个逻辑表达式表示:
1 7 3 1 3 7
if语句的嵌套 5.3.2 if语句的嵌套 :
一般形式: 一般形式: if ( ) if ( ) 语句 语句1 else 语句 语句2 else if ( ) 语句 语句3 else 语句4 语句
内嵌if 内嵌 内嵌if 内嵌
使用嵌套if语句时,必须特别注意if与 使用嵌套 语句时,必须特别注意 与else配 语句时 配 对。配对原则:
条件表达式不能取代一般的if 语句,只有在if 条件表达式不能取代一般的 语句,只有在 语句中内 嵌语句是赋值语句时, 嵌语句是赋值语句时,且两个分支都对同一个变量赋 值时,才能代替 语句。 值时,才能代替if 语句。 如:if (a>b) max=a; else max=b; 此时可用 max = a>b ? a : b ; 代替前面的 语句。 代替前面的if 语句。 其它情况的if 语句不能用条件表达式代替。 条件表达式代替 其它情况的 语句不能用条件表达式代替。 条件表达式中,三个子表达式的类型可以互不相同。 条件表达式中,三个子表达式的类型可以互不相同。 若表达式2与表达式 类型不同时 若表达式 与表达式3类型不同时,则条件表达式的类 与表达式 类型不同时, 型为二者较高的类型。 型为二者较高的类型。如:int a=1,b=2; 表达式 a<b?2∶4.6 的值为 2.0 。 ? ∶
表达式的值为0 表达式的值为0 表达式的值为1 表达式的值为1 表达式的值为1 表达式的值为1 表达式的值为1 表达式的值为1
§5.2 逻辑运算
5.2.1 逻辑运算符及其优先次序
&& || !
逻辑“ 逻辑“与”双目运算符 逻辑“ 逻辑“或”双目运算符 逻辑“ 逻辑“非”单目运算符
!a 1 1 0 0
真
假
表达式3 表达式
真 语 句 1 语 句 2
假
表达式4 表达式
真 语 句 3
假 真 语 句 5
语 句 4
例如: 例如: if (a>500) b=4; ) else if ( a>300 ) b=3; else if ( a>100 )b=2; else if ( a>50 )b=1; else b=0;
真 假
表达式
语句1 语句
语句2 语句
3、if (表达式 ) 语句 、 表达式1) 语句1 else if (表达式 )语句 表达式2)语句2 else if (表达式 )语句 表达式3)语句3 else if (表达式 )语句 表达式m)语句m else 语句 语句n
表达式1 表达式
假
表达式2 表达式
编一程序,输入一个 值 输出y值 编一程序,输入一个x值,输出 值。
§5.3 if语句
if语句 : 判别条件是否满足 来决定程序的流程 语句: 判别条件是否满足,来决定程序的流程 语句 执行两路操作之一) (执行两路操作之一)。
例:设a=3,b=4,x=0,y=0,求值: ,求值: !非 高 算术运算符 2、a = = b | | x = = y 、 值为1 值为 关系运算符 3、! a | | a > b 、 值为0 值为 && 4、! a && b || x > y && c 、 || 值为0 值为 5、int a=-1,b=1,c=2,d=3,m=5,n=2,k; 赋值运算符 、 1、a < b && x > y 值为0 值为 k=(m=a+b)&&(n=c+d) k为0 ,m为0, n为2 为 为 , 为
5.1.1 关系运算符及其优先次序
C语言有六种关系运算符: 语言有六种关系运算符: 语言有六种关系运算符 < 小于 <= 小于或等于 优先级相同( 优先级相同(高) > 大于 >= 大于或等于 ==(连续两个 ) 优先级相同( (连续两个=) 优先级相同(低) != 不等于
关系表达式: 关系表达式 用关系运算符将两个表达式连接
x >= 0 真 x>0 真 y= 1 假 y=0 y= -1 真 x>0 真 y= 1 假 y=0 x!=0 假 y= -1 假
5.3.3 条件运算符
语句中, 表达式” 在if语句中,在“表达式”为“真”和“假”时,都只执 语句中 行一个赋值语句给同一变量赋值,
例、if (a>b) max = a; else max = b;
可以用如下条件运算符来处理: 可以用如下条件运算符来处理: 条件运算符来处理 max = (a>b) ? a : b 件表达式的一般形式: 件表达式的一般形式:
其中, 其中,“(a>b) ? a : b”是一个 是一个 条件表达式,若条件( 条件表达式,若条件(a>b) ) 成立,则条件表达式取值a; 成立,则条件表达式取值 ; 否则,取值b。 否则,取值 。
[例 5.1] 输入两个实数 , 按代数值由小到 例 输入两个实数, 大输出这两个数。 大输出这两个数。 main() { float a,b,t; scanf("%f,%f",&a,&b); if (a>b) { t = a; a = b; b = t; } printf("%5.2f,%5.2f",a,b); } 运行示例 3.6 ,-3.2↙ ↙ -3.2, 3.6
条件运算符,称为“ 三目运算符” 语言中唯一的一个三目运算符) 条件运算符 称为“三目运算符 ” ( C语言中唯一的一个三目运算符) 。 条 称为 语言中唯一的一个三目运算符
表达式1?表达式 :表达式3 表达式 ?表达式2:表达式
条件运算符的优先级仅高于赋值运算符和逗号运算符 并且结合性为自右向左。(不是指运算的顺序) 并且结合性为自右向左。(不是指运算的顺序) 。(不是指运算的顺序
a b a&&b a || b 0 0 0 0 0 非0 0 1 0 1 非0 0 1 非0 非0 1
!非 高 算术运算符 关系运算符 && || 赋值运算符
优先级关系 低
&&与运算的求值顺序 与运算的求值顺序 a&&b 若表达式a的值为 则不论表达式b为何 若表达式 的值为0则不论表达式 为何 的值为 则不论表达式 整个表达式的值都为0。因此, 值,整个表达式的值都为 。因此,在计算时 先求解表达式a, 为非 为非0值 再求解表达式b, 先求解表达式 ,若a为非 值,再求解表达式 , 根据b的值来决定整个表达式的值 的值来决定整个表达式的值; 为 , 根据 的值来决定整个表达式的值;若a为0, 则不再求解表达式b。 则不再求解表达式 。 ||与运算的求值顺序 与运算的求值顺序 a||b 若表达式 的值为非 值则不论表达式 为 若表达式a的值为非 值则不论表达式b为 的值为非0值则不论表达式 何值,整个表达式的值都为1。因此, 何值,整个表达式的值都为 。因此,在计算 时先求解表达式a, 为 时 再求解表达式b, 时先求解表达式 ,若a为0时,再求解表达式 , 根据b的值来决定整个表达式的值;若a为非 根据 的值来决定整个表达式的值; 为非0 的值来决定整个表达式的值 为非 则不再求解表达式b。 值,则不再求解表达式 。
[例5.3] 有一函数如下, 例 有一函数如下,
y = 1 0 1 ( x ( x ( x < = > 0 ) 0 ) 0 )
程序1: 程序 : main() { int x,y; scanf("%d",&x); if (x<0) y = -1; else if (x==0) y = 0; else y = 1; printf("x=%d,y=%d\n",x,y); }
第5章 选择结构程序设计
关系运算 switch语句 switch语句 逻辑运算 if 语 句
§5.1 关系运算符和关系表达式
关系运算: 比较运算, 关系表达式” 关系运算 : 比较运算 , 用 “ 关系表达式 ” 进 行运算。 行运算。 例、a > 3 是一个关系表达式,它取两个值: 真 和 假 。 是一个关系表达式,它取两个值:"真"和"假"。
条件表达式的求解过程 先求解表达式 的值 先求解表达式1的值 先求解表达式 若表达式 的值为真(非0);则求解表达式2的值,将 若表达式1的值为真 非 ;则求解表达式 的值, 若表达式 的值为真 的值 其作为条件表达式的值。表达式 不计算 不计算。 其作为条件表达式的值。表达式3不计算。 若表达式1的值为假 ;则求解表达式3的值 的值, 若表达式 的值为假(0);则求解表达式 的值,将 的值为假 其作为条件表达式的值。表达式 不计算 不计算。 其作为条件表达式的值。表达式2不计算。 例:int a=1,b=2,c=3,d=4,m=5,n=6,k; k=a>b?(m=c>b): (n=b>d) 例:int a=1,b=2,c=3,d=4,m=5,n=6,k; k=a<b?d: b>c?(m=c>b): (n=b>d)
优先级关系 低
判别某一年year是闰年, year是闰年 例:判别某一年year是闰年,闰年的条件符合 下面二者之一: 下面二者之一: 能被4整除,但不能被100整除; 100整除 (1)能被4整除,但不能被100整除; 能被4整除,又能被400整除。 400整除 (2)能被4整除,又能被400整除。 可以用一个逻辑表达式表示: 可以用一个逻辑表达式表示:
1 7 3 1 3 7
if语句的嵌套 5.3.2 if语句的嵌套 :
一般形式: 一般形式: if ( ) if ( ) 语句 语句1 else 语句 语句2 else if ( ) 语句 语句3 else 语句4 语句
内嵌if 内嵌 内嵌if 内嵌
使用嵌套if语句时,必须特别注意if与 使用嵌套 语句时,必须特别注意 与else配 语句时 配 对。配对原则:
条件表达式不能取代一般的if 语句,只有在if 条件表达式不能取代一般的 语句,只有在 语句中内 嵌语句是赋值语句时, 嵌语句是赋值语句时,且两个分支都对同一个变量赋 值时,才能代替 语句。 值时,才能代替if 语句。 如:if (a>b) max=a; else max=b; 此时可用 max = a>b ? a : b ; 代替前面的 语句。 代替前面的if 语句。 其它情况的if 语句不能用条件表达式代替。 条件表达式代替 其它情况的 语句不能用条件表达式代替。 条件表达式中,三个子表达式的类型可以互不相同。 条件表达式中,三个子表达式的类型可以互不相同。 若表达式2与表达式 类型不同时 若表达式 与表达式3类型不同时,则条件表达式的类 与表达式 类型不同时, 型为二者较高的类型。 型为二者较高的类型。如:int a=1,b=2; 表达式 a<b?2∶4.6 的值为 2.0 。 ? ∶
表达式的值为0 表达式的值为0 表达式的值为1 表达式的值为1 表达式的值为1 表达式的值为1 表达式的值为1 表达式的值为1
§5.2 逻辑运算
5.2.1 逻辑运算符及其优先次序
&& || !
逻辑“ 逻辑“与”双目运算符 逻辑“ 逻辑“或”双目运算符 逻辑“ 逻辑“非”单目运算符
!a 1 1 0 0
真
假
表达式3 表达式
真 语 句 1 语 句 2
假
表达式4 表达式
真 语 句 3
假 真 语 句 5
语 句 4
例如: 例如: if (a>500) b=4; ) else if ( a>300 ) b=3; else if ( a>100 )b=2; else if ( a>50 )b=1; else b=0;
真 假
表达式
语句1 语句
语句2 语句
3、if (表达式 ) 语句 、 表达式1) 语句1 else if (表达式 )语句 表达式2)语句2 else if (表达式 )语句 表达式3)语句3 else if (表达式 )语句 表达式m)语句m else 语句 语句n
表达式1 表达式
假
表达式2 表达式
编一程序,输入一个 值 输出y值 编一程序,输入一个x值,输出 值。
合集下载
C语言程序设计PPT课件 第5章 数组程序设计
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
例5-3 用一维数组生成Fibonacci数列的前20项,并输出。
#include<stdio.h> void main() {
long int fib[21]; int i; fib[1]=1; fib[2]=1; for(i=3;i<=20;i++)
{
if(str[i]>='0'&&str[i]<='9')
digital[j++]=str[i];
i++;
}
digital[j]='\0';
printf("Output: %s\n",digital);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
/* program e5-6.c*/
5.2.1 字符##串iinncc的lluudd输ee<<入ssttrd输iniog出.h.h>>
}
for(i=0;i<N;i++) printf("%d ",a[i]);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
数组的初始化,是在定义数组的时对数组的各个元素赋初值。 1. 全部元素的初始化 格式
数据类型 数组名[数组长度]={数组全部元素值表} 数据类型 数组名[]={数组全部元素值表} int a[6]={10,20,30,40,50,60}; float r[]={12.5,-3.11,8.6}; 2. 部分元素的初始化 格式 数据类型 数组名[数组长度]={数组前部元素值表} int b[10]={1,2,3}
5.1.4 数值型一维数组的初始化
例5-3 用一维数组生成Fibonacci数列的前20项,并输出。
#include<stdio.h> void main() {
long int fib[21]; int i; fib[1]=1; fib[2]=1; for(i=3;i<=20;i++)
{
if(str[i]>='0'&&str[i]<='9')
digital[j++]=str[i];
i++;
}
digital[j]='\0';
printf("Output: %s\n",digital);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
/* program e5-6.c*/
5.2.1 字符##串iinncc的lluudd输ee<<入ssttrd输iniog出.h.h>>
}
for(i=0;i<N;i++) printf("%d ",a[i]);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
数组的初始化,是在定义数组的时对数组的各个元素赋初值。 1. 全部元素的初始化 格式
数据类型 数组名[数组长度]={数组全部元素值表} 数据类型 数组名[]={数组全部元素值表} int a[6]={10,20,30,40,50,60}; float r[]={12.5,-3.11,8.6}; 2. 部分元素的初始化 格式 数据类型 数组名[数组长度]={数组前部元素值表} int b[10]={1,2,3}
c语言(第五章选择结构) c语言 教学课件
▪ 非闰年的判别:
• !((year%4==0 && year%100!=0)||year%400==0)或者:
• (year%4!=0 )||( year%100==0 && year%400!=0)
C语言程序设计
第五章 选择结构程序设计
5.3 if语句(条件选择语句)
• if语句的三种形式 ▪ 形式一: • 格式:
语句2
=0
表达式3 非0
语句3
=0 语句4
C语言程序设计
第五章 选择结构程序设计
• 例:
if (salary>1000) else if (salary>800) else if (salary>600) else if (salary>400) else index=0;
index=0.4; index=0.3; index=0.2; index=0.1;
if (x>0) printf(“%f”,x) ;
else printf(“%f”,-x);
(3)在if 和else 后面可以只含一个内嵌的语句,也可以有 多个操作语句,此时用花括号将几个语句括起来成为一 个复合语句。如:
if (x>y)
{ t=x ; x=y ; y=t ; }
C语言程序设计
第五章 选择结构程序设计
a=4;b=5;
!a
//值为0
a&&b //值为1
a||b
//值为1
!a||b
//值为1
4&&0||2 //值为1
5>3&&2||8<4-!0 //(5>3)&&2||(8<(4-(!0))) 值为1
• !((year%4==0 && year%100!=0)||year%400==0)或者:
• (year%4!=0 )||( year%100==0 && year%400!=0)
C语言程序设计
第五章 选择结构程序设计
5.3 if语句(条件选择语句)
• if语句的三种形式 ▪ 形式一: • 格式:
语句2
=0
表达式3 非0
语句3
=0 语句4
C语言程序设计
第五章 选择结构程序设计
• 例:
if (salary>1000) else if (salary>800) else if (salary>600) else if (salary>400) else index=0;
index=0.4; index=0.3; index=0.2; index=0.1;
if (x>0) printf(“%f”,x) ;
else printf(“%f”,-x);
(3)在if 和else 后面可以只含一个内嵌的语句,也可以有 多个操作语句,此时用花括号将几个语句括起来成为一 个复合语句。如:
if (x>y)
{ t=x ; x=y ; y=t ; }
C语言程序设计
第五章 选择结构程序设计
a=4;b=5;
!a
//值为0
a&&b //值为1
a||b
//值为1
!a||b
//值为1
4&&0||2 //值为1
5>3&&2||8<4-!0 //(5>3)&&2||(8<(4-(!0))) 值为1
C语言第5章循环结构PPT课件
格式:while (条件1)
3. 用for 语句实现循环 4. 循环的嵌套
5. break语句和continue语句 6. 几种循环的比较 7. 程 序 举 例
第2页/共63页
一、循环概述
3
第3页/共63页
在很多实际问题中会遇到有规律性的重复运算,因 此在程序中就需要将某些语句重复执行。 • 一组被重复执行的语句称为循环体; • 每重复一次,都必须作出是继续还是停止循环的决 定,这个决定所依据的条件称为循环条件;
do {
......
for(;;) { ......
}while();
}
47
第47页/共63页
例7. 打印乘法“九九表”
1 2 3 4 56 7 89 11 22 4 33 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81
循环的概念 用while语句和do-while语句实现循环
用for 语句实现循环 循环的嵌套
break语句和continue语句 几种循环的比较 程序举例
第44页/共63页
循环的嵌环中还可以嵌套循环,这就是多重循环。
循环1
循环2
28
第28页/共63页
29
第29页/共63页
(2):从高位到低位求每一位。
30
第30页/共63页
(3):从低位到高位求每一位。
31
第31页/共63页
循环结构程序设计
1. 循环的概念 2. 用while语句和do-while语句实现循环
3. 用for 语句实现循环 4. 循环的嵌套
5. break语句和continue语句 6. 几种循环的比较 7. 程 序 举 例
第2页/共63页
一、循环概述
3
第3页/共63页
在很多实际问题中会遇到有规律性的重复运算,因 此在程序中就需要将某些语句重复执行。 • 一组被重复执行的语句称为循环体; • 每重复一次,都必须作出是继续还是停止循环的决 定,这个决定所依据的条件称为循环条件;
do {
......
for(;;) { ......
}while();
}
47
第47页/共63页
例7. 打印乘法“九九表”
1 2 3 4 56 7 89 11 22 4 33 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81
循环的概念 用while语句和do-while语句实现循环
用for 语句实现循环 循环的嵌套
break语句和continue语句 几种循环的比较 程序举例
第44页/共63页
循环的嵌环中还可以嵌套循环,这就是多重循环。
循环1
循环2
28
第28页/共63页
29
第29页/共63页
(2):从高位到低位求每一位。
30
第30页/共63页
(3):从低位到高位求每一位。
31
第31页/共63页
循环结构程序设计
1. 循环的概念 2. 用while语句和do-while语句实现循环
C语言程序设计:第5章 循环结构
执行过程: 先执行循环体语句,再检查 循环条件表达式的值是否为真, 如果为真则继续执行循环体语句, 否则结束循环。
12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
第五章 C语言多重循环语句ppt课件
scanf(“%f”,&Weight); /*第7个儿童的体重*/ total=total+ Weight; /*前7个儿童的总体重*/
scanf(“%f”,&Weight); /*第8个儿童的体重*/ total=total+ Weight; /*前8个儿童的总体重*/
scanf(“%f”,&Weight); /*第9个儿童的体重*/ total=total+ Weight; /*前9个儿童的总体重*/
unsigned n,sum=0; scanf(“%u”,&n); do { sum+=i ;
int i; float Weight, total=0, aver;
*输入N个儿童的体重并计算总体重*/
for(i=1;i<=N;i++) {
scanf(“%f”,&Weight); /*第i个儿童的体重*/ total=total+ Weight; /*i个儿童的总体重*/
}
aver=total/N;
scanf(“%f”,&Weight); /*第1个儿童的体重*/ total=total+ Weight; /*前1个儿童的总体重*/
scanf(“%f”,&Weight); /*第2个儿童的体重*/ total=total+ Weight; /*前2个儿童的总体重*/
scanf(“%f”,&Weight); /*第3个儿童的体重*/ total=total+ Weight; /*前3个儿童的总体重*/
/*10个儿童的平均体重*/
printf(“%d个儿童的平均体重是:%.2\n”,N,aver); }
scanf(“%f”,&Weight); /*第8个儿童的体重*/ total=total+ Weight; /*前8个儿童的总体重*/
scanf(“%f”,&Weight); /*第9个儿童的体重*/ total=total+ Weight; /*前9个儿童的总体重*/
unsigned n,sum=0; scanf(“%u”,&n); do { sum+=i ;
int i; float Weight, total=0, aver;
*输入N个儿童的体重并计算总体重*/
for(i=1;i<=N;i++) {
scanf(“%f”,&Weight); /*第i个儿童的体重*/ total=total+ Weight; /*i个儿童的总体重*/
}
aver=total/N;
scanf(“%f”,&Weight); /*第1个儿童的体重*/ total=total+ Weight; /*前1个儿童的总体重*/
scanf(“%f”,&Weight); /*第2个儿童的体重*/ total=total+ Weight; /*前2个儿童的总体重*/
scanf(“%f”,&Weight); /*第3个儿童的体重*/ total=total+ Weight; /*前3个儿童的总体重*/
/*10个儿童的平均体重*/
printf(“%d个儿童的平均体重是:%.2\n”,N,aver); }
第五章:选择型程序设计(C语言讲义)PPT教学课件
case ‘B’:
case ‘C’:
printf(“score>60\n”);
break;
……..
例 switch(score) { case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); }
main()
{ int x,y;
运行:Enter integer x,y:12,23
printf("Enter integer x,y:");
X<Y
scanf("%d,%d",&x,&y); if(x!=y)
Enter integer x,y:12,6 X>Y Enter integer x,y:12,12
if(x>y) printf("X>Y\n");
X==Y
else printf("X<Y\n");
else
printf("X==Y\n");
}
例: 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”);
运行结果:a=2,b=1
PPT教学课件
谢谢观看
Thank You For Watching
非0
=0
case ‘C’:
printf(“score>60\n”);
break;
……..
例 switch(score) { case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); }
main()
{ int x,y;
运行:Enter integer x,y:12,23
printf("Enter integer x,y:");
X<Y
scanf("%d,%d",&x,&y); if(x!=y)
Enter integer x,y:12,6 X>Y Enter integer x,y:12,12
if(x>y) printf("X>Y\n");
X==Y
else printf("X<Y\n");
else
printf("X==Y\n");
}
例: 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”);
运行结果:a=2,b=1
PPT教学课件
谢谢观看
Thank You For Watching
非0
=0
第5章 函数与带参数宏 《C语言程序设计及应用教程》课件-PPT课件
5.2 函数的嵌套与递归调用
函数的嵌套调用
不允许嵌套定义,函数间平行的、独立。 C中的函数:
允许嵌套调用。
main( ) 调用函数a 结束
a函数
调用函数b
b函数
【例5-7】 输入两个整数,求平方和
#include <stdio.h>
int fun1(int x,int y)
int fun1(int x,int y);
斐波那契数列");
for(i=0;i<N;i++)
{
printf("%d\t",iF[i]);
if((i+1)%10==0)
printf("\n");
}
printf("\n");
}
int Sum(int iF[],int n); void main() { int i,Fibonacci[N],m,n; //生成斐波那契数列 CreateFibonacci(Fibonacci); //输出斐波那契数列 PrintFibonacci(Fibonacci); //求数列前n项的和 printf(" 请输入要求和的项数 n(n<%d): ",N); scanf("%d",&n); m=Sum(Fibonacci,n); printf("\n 斐波那契数列前 %d项的和:%4d\n",n,m);}
第5章 函数与带参数宏 ?C语言 程序设计及应用教程?课件
5.1 函数的声明、定义与调用
5.1.1 函数的声明与定义 5.1.2 函数调用 5.1.3 函数参数传递 5.1.4 主函数中的参数
C语言课件 第5章
如果x<y, max=y, min=x ③ 输出最大值max、 最小值min
第5章 选择结构程序设计
/*程序 5 - 3, 求两个数的最大值、 最小值*/ main( ) { float x, y; float max, min; printf(″请输入两个数x, y: ″); scanf(″%f, %f″, &x, &y); if (x>y) {max=x; min=y; } else {max=y; min=x; } printf(″max=%6.2f, min=%6.2f\n″, max, min); } 输入数据: 1.2, 2.54 运行结果: max= 2.54, min= 1.20
第5章 选择结构程序设计
5.1.3 多分支if语句
多分支if语句不是一条具体的语句,它通过if语句的嵌套实
现。其一般形式为: if (条件表达式1)
if (条件表达式2) 语句1
else 语句2 else if (条件表达式3) 语句3 else 语句4
第5章 选择结构程序设计
T T
条件表达式1 条件表达式2
}
第5章 选择结构程序设计
例 5 — 7 将例 5 — 5 用switch语句实现。
switch ((int)(cj/10)) { 10: 9: ch=′A′; break; /*注意选择表达式的构造*/
8: ch=′B′; break;
7: ch=′C′; break; 6: ch=′D′; break;
第5章 选择结构程序设计
例 5 –3 输入两个数, 求两个数的最大值、最小值。 数据分析:
输入量: 两个数x、 y, float
第5章 选择结构程序设计
/*程序 5 - 3, 求两个数的最大值、 最小值*/ main( ) { float x, y; float max, min; printf(″请输入两个数x, y: ″); scanf(″%f, %f″, &x, &y); if (x>y) {max=x; min=y; } else {max=y; min=x; } printf(″max=%6.2f, min=%6.2f\n″, max, min); } 输入数据: 1.2, 2.54 运行结果: max= 2.54, min= 1.20
第5章 选择结构程序设计
5.1.3 多分支if语句
多分支if语句不是一条具体的语句,它通过if语句的嵌套实
现。其一般形式为: if (条件表达式1)
if (条件表达式2) 语句1
else 语句2 else if (条件表达式3) 语句3 else 语句4
第5章 选择结构程序设计
T T
条件表达式1 条件表达式2
}
第5章 选择结构程序设计
例 5 — 7 将例 5 — 5 用switch语句实现。
switch ((int)(cj/10)) { 10: 9: ch=′A′; break; /*注意选择表达式的构造*/
8: ch=′B′; break;
7: ch=′C′; break; 6: ch=′D′; break;
第5章 选择结构程序设计
例 5 –3 输入两个数, 求两个数的最大值、最小值。 数据分析:
输入量: 两个数x、 y, float
C语言程序设计第5章数组.ppt
冒泡法排序
2019/3/19
F
冒泡法排序 (续)
程序如下:
#define N 6 #include "stdio.h" void main( ) {int a[N]; int i,j,t; printf("请输入%d个成绩,用空格隔开:\n",N); for (i=0; i<N; i++) scanf("%d",&a[i]);
2019/3/19
5.2.2 数组元素的引用(续)
2.说明
① 下标从0开始(下界为0),数组的最大下标 (上界)是数组长度减1。 例如: int a[10],i; scanf ("%d",&a[10]); /* 下标越界 */ C编译系统不做越界检查。
2019/3/19
5.2.2 数组元素的引用(续)
【例5-4】用冒泡法(也称起泡法)对输入的一组 成绩按从低分到高分的顺序排序并输出。
例如将6个数:4、7、5、6、8、1按从小到大顺序用冒泡 法排序,方法如下: 在第一趟排序中, 6个数比较了5次,把6个数中 第一趟排序情况如下: 的最大数8排在最后。 4 7 5 6 8 1 第一次 4和7比较,不交换 4 7 5 6 8 1 第二次 7和5比较,交换 457681 第三次 7和6比较,交换 456781 第四次 7和8比较,不交换 4 5 6 7 8 1 第五次 8和1比较,交换 456718
2019/3/19
5.1概述(续)
2.数组与数组元素的概念
数组:是用一个名字表示的一组相同类型的数据的集合, 这个名字就称为数组名。 如定义:float a[10]; a是数组名。 下标变量(或数组元素):数组中的数据分别存储在用下 标区分的变量中,这些变量称为下标变量或数组元素。 如:a[0]、a[1]…a[i]。 每个下标变量相当于一个简单变量,数组的类型也就是该 数组的下标变量的数据类型。 数组属于构造类型。构造类型的数据是由基本类型数据按 一定规则构成的。
2019/3/19
F
冒泡法排序 (续)
程序如下:
#define N 6 #include "stdio.h" void main( ) {int a[N]; int i,j,t; printf("请输入%d个成绩,用空格隔开:\n",N); for (i=0; i<N; i++) scanf("%d",&a[i]);
2019/3/19
5.2.2 数组元素的引用(续)
2.说明
① 下标从0开始(下界为0),数组的最大下标 (上界)是数组长度减1。 例如: int a[10],i; scanf ("%d",&a[10]); /* 下标越界 */ C编译系统不做越界检查。
2019/3/19
5.2.2 数组元素的引用(续)
【例5-4】用冒泡法(也称起泡法)对输入的一组 成绩按从低分到高分的顺序排序并输出。
例如将6个数:4、7、5、6、8、1按从小到大顺序用冒泡 法排序,方法如下: 在第一趟排序中, 6个数比较了5次,把6个数中 第一趟排序情况如下: 的最大数8排在最后。 4 7 5 6 8 1 第一次 4和7比较,不交换 4 7 5 6 8 1 第二次 7和5比较,交换 457681 第三次 7和6比较,交换 456781 第四次 7和8比较,不交换 4 5 6 7 8 1 第五次 8和1比较,交换 456718
2019/3/19
5.1概述(续)
2.数组与数组元素的概念
数组:是用一个名字表示的一组相同类型的数据的集合, 这个名字就称为数组名。 如定义:float a[10]; a是数组名。 下标变量(或数组元素):数组中的数据分别存储在用下 标区分的变量中,这些变量称为下标变量或数组元素。 如:a[0]、a[1]…a[i]。 每个下标变量相当于一个简单变量,数组的类型也就是该 数组的下标变量的数据类型。 数组属于构造类型。构造类型的数据是由基本类型数据按 一定规则构成的。
C语言课件第5章循环结构程序设计2
18
思考 1、如果去掉循环体 中的大括号会怎样? 2、在循环体中,使 循环条件趋向于不满 足(假)的语句是哪 条?
第5章
循环结构程序设计
举例
while和do-while循环的比较。
此程序的 功能?
#include <stdio.h> int main() { int i,sum=0; scanf("%d",&i); while(i<=10) { sum=sum+i; i++; } printf("sum=%d\n",sum); return 0; }
第5章
循环结构程序设计
举例
现有某班20名学生的C语言成绩,求该班学生的C语 言的平均成绩。即:输入20个学生的成绩,计算平 均值,输出平均值。
分析:定义变量表示学生的成绩、全班总和、平均成绩。 如果定义20个变量保存20 算法设计: 个成绩,程序中计算成绩 第一步:输入20个学生的成绩 总和会有什么问题? 第二步:计算成绩总和 (用累加求和的方法)
运行结果:凵2550
#include <stdio.h> int main() { int i=1, n; float fac=1; printf("请输入n:"); scanf ("%d",&n); while (i<=n) { fac=fac*i; i++; } printf("%.0f\n",fac); return 0; } 请输入n:5
分析
求1~100的累加和。
换一种思路:
sum=sum+n;
首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次 取1、2、……、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n;”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1~100的累 计和。
思考 1、如果去掉循环体 中的大括号会怎样? 2、在循环体中,使 循环条件趋向于不满 足(假)的语句是哪 条?
第5章
循环结构程序设计
举例
while和do-while循环的比较。
此程序的 功能?
#include <stdio.h> int main() { int i,sum=0; scanf("%d",&i); while(i<=10) { sum=sum+i; i++; } printf("sum=%d\n",sum); return 0; }
第5章
循环结构程序设计
举例
现有某班20名学生的C语言成绩,求该班学生的C语 言的平均成绩。即:输入20个学生的成绩,计算平 均值,输出平均值。
分析:定义变量表示学生的成绩、全班总和、平均成绩。 如果定义20个变量保存20 算法设计: 个成绩,程序中计算成绩 第一步:输入20个学生的成绩 总和会有什么问题? 第二步:计算成绩总和 (用累加求和的方法)
运行结果:凵2550
#include <stdio.h> int main() { int i=1, n; float fac=1; printf("请输入n:"); scanf ("%d",&n); while (i<=n) { fac=fac*i; i++; } printf("%.0f\n",fac); return 0; } 请输入n:5
分析
求1~100的累加和。
换一种思路:
sum=sum+n;
首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次 取1、2、……、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n;”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1~100的累 计和。
