C 语言教程-4.ppt

上传人:本田雅阁 文档编号:3026598 上传时间:2019-06-27 格式:PPT 页数:15 大小:1.12MB
返回 下载 相关 举报
C 语言教程-4.ppt_第1页
第1页 / 共15页
C 语言教程-4.ppt_第2页
第2页 / 共15页
C 语言教程-4.ppt_第3页
第3页 / 共15页
C 语言教程-4.ppt_第4页
第4页 / 共15页
C 语言教程-4.ppt_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《C 语言教程-4.ppt》由会员分享,可在线阅读,更多相关《C 语言教程-4.ppt(15页珍藏版)》请在三一文库上搜索。

1、C 语 言 教 程 - 4,回顾,上一次学习了条件语句并介绍了关系运算和关系运算符,C语言中提供的关系运算符共有六种:(大于),=(大于等于),=(等于,请注意这和赋值运算符=是不同的),!=(不等于)。 通过例2数字分类显示程序,遇到了if语句中的执行语句又是if语句的嵌套形式,知道了else 总是与它前面最近的if配对。 在探索学习的几个例程中,探讨了数据比较大小的方法,并提供了一种打擂台的数据比较法。这是一种直观有效的方法,在今后的程序中我们还会多次使用到。,C语言提供三种逻辑运算符: a & b 逻辑与:只有当a与b都是为真时,结果才为真。 a | b 逻辑或:只有当a与b都是为假时,

2、结果才为假。 ! a 逻辑非:当a为假时结果为真,否则结果为假。 下面举出一些逻辑表达式的例子: 条件: 逻辑表达式: a大于零或者b大于零 if( a0 | b0 ) a大于零与b小于零 if( a0 & b=1) & (x (a+b) ) a,b都能被5整除 if (a%5=0)&(b%5=0) ) 字符c是否为数字 if ( c=0 & c=9 ),逻辑运算和逻辑运算符,探索1 请依据下面给出的条件写出逻辑表达式。 (1) x是一个两位正整数 _ (2) a,b,c三个数都不相同 _ (3) a,b,c三个数都不是负数 _ 例1 从键盘上输入一个字符,如果它是大写字母,则把它转换成小写字

3、母输出;否则,直接输出。 main() char ch; printf(“Input a character: “); scanf(“%c“,例1写一程序,从键盘上输入某年份year(4位十进制),判断其是否闰年。闰年的条件是:能被4整除、但不能被100整除,或者能被400整除。 设计要点: (1)如果能被整除,则余数为,即如果的值等于,则表示能被整除! (2)首先将是否闰年的标志flag预置为0(非闰年),这样仅当year为闰年时将flag置为1即可。这种处理两种状态值的方法,对优化算法和提高程序可读性非常有效,请读者仔细体会。参考程序如下: main() int year,flag=0;

4、/* flag=0:标志flag预置为非闰年*/ printf(“Please input the year:“); scanf(“%d”, ,利用逻辑运算能描述复杂条件的特点,可将上述程序优化如下: main() int year; printf(“Please input the year:“); scanf(“%d“, ,在C语言中,for 循环语句使用最为灵活。 它的一般形式为: for(表达式1;表达式2;表达式3) 语句 ; 它的执行过程如下: 先求解表达式1。 求解表达式2,若其值为真(非0),则执行for语句中的内嵌语句,然后执行下面第 步;若其值为假(0),则结束循环,转到

5、第 步。 求解表达式3。 转回上面第 步继续执行。 循环结束,执行for语句下面的一个语句。,教 学,计算1-100之和 main() int i, total=0; for( i=0;i=100;i+) total+=i; printf(“ 1+2+3+100=%dn”,total); 探索2聪明的数学家高斯曾经给出一个简单的算式:(1+100)*50来计算1到100的和,同样的,C循环程序也可以利用这个算式来计算,想一想如何修改? 如果我们希望我们的程序具有通用性,可以计算任意前1-n个数字的和呢?应该如何编写C程序?,我们把这个 i 称为循环变量,它是用于循环语句的变量,相当于total

6、 = total+i ;,程序举例,韩信点兵 现有士兵100-150人,5人一排多2人,7人一排多1人, 问到底有几个士兵?请编程实现。 main() int n; for (n=100; n=150; n+) if( n%5= =2 探索3 思考一下, 5人一排多2人,7人一排多1人,这两个条件是否可在 循环设计步长中预先满足一个条件,哪么是否可以提高程序的运行速度了?,程序举例,main() int total=0, i; for( i=0;i=100;i+) if(i%2 = = 0) total+=i; printf(“ 2+4+6+100=%dn”,total); getch();

7、探索4 试一试,利用改变循环语句的步长来写这个程序。程序是否更简捷有效了。,计算100以内偶数之和,程序举例,练习题-4,c401请用for循环编程 求在下面等式中 内填入的同一个数是几? 3X324 = 3 X567 c402打印出所有“水仙花数”,所谓“水仙花数”是指一个位数,其各位数字立方和等于该数本身,例如,153 是一水仙花数,因为153=13+53+33 , 请用for循环编程实现。 c403有一数列:1,1,2,3,5,8,13,21.,编写一个whil循环程序依据规律显示出该数列前10个数,并且求出他们的累加和。(该数列从第三个数起,每个数都是前两个数的和。该数列称斐波那契数列

8、。) *c404 从键盘上输入a,b两个数,求这两个数的最大公约数 r。在此有如下的要求: (1) 如果这两个数均为零,没有最大公约数。 (2) 这里不对负数求最大公约数。 (3) 如果只有一个数为零,则最大公约数就是另一个数。,自学指导_4 for语句,for语句是语言所提供的功能更强,使用更广泛的一种循环语句。其一般形式为: for(表达式1;表达式2;表达3) 语句; 表达式1 通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。 表达式2 通常是循环条件,一般为关系表达式或逻辑表达式。 表达式3 通常可用来修改循环变量的值,一般是赋值

9、语句。 这三个表达式都可以是逗号表达式, 即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。 一般形式中的“语句”即为循环体语句。for语句的语义是: 1.首先计算表达式1的值。 2.再计算表达式2的值,若值为真(非0)则执行循环体一次, 否则跳出循环。 3.然后再计算表达式3的值,转回第2步重复执行。在整个for循环过程中,表达式1只计算一次,表达式2和表达式,3则可能计算多次。循环体可能多次执行,也可能一次都不执行。,自学指导_4 for语句,用for语句计算s=1+2+3+.+99+100 int n,s=0; for(n=1;n0;a+,n-) printf(“%d

10、“,a*2); 本例的for语句中,表达式1已省去,循环变量的初值在for语句之前由scanf语句取得,表达式3是一个逗号表达式,由a+,n- 两个表达式组成。每循环一次a自增1,n自减1。a的变化使输出的偶数递增,n的变化控制循次数。,自学指导_4 for语句,在使用for语句中要注意以下几点 1. for语句中的各表达式都可省略,但分号间隔符不能少。如: for(;表达式;表达式)省去了表达式1。for(表达式;表达式)省去了表达式2。 for(表达式;表达式;)省去了表达式3。for(;)省去了全部表达式。 2. 在循环变量已赋初值时,可省去表达式1,如省去表达式2或表达式3则将造成无限

11、循环, 这时应在循环体内设法结束循环。例题即属于此情况。 main() int a=0,n; printf(“n input n: “); scanf(“%d“, 本例中省略了表达式1和表达式3,由循环体内的n-语句进行循环变量n的递减,以控制循环次数。,自学指导_4 for语句,3. 循环体可以是空语句。 #include stdio.h main() int n=0; printf(“input a string:n“); for(;getchar()!=n;n+); printf(“%d”,n); getch(); 本例中,省去了for语句的表达式1,表达式3也不是用来修改循环变量,而是用作输入字符的计数。这样, 就把本应在循环体中完成的计数放在表达式中完成了。因此循环体是空语句。应注意的是,空语句后的分号不可少,如缺少此分号,则把后面的printf 语句当成循环体来执行。反过来说,如循环体不为空语句时, 决不能在表达式的括号后加分号, 这样又会认为循环体是空语句而不能反复执行。这些都是编程中常见的错误,要十分注意。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1