C语言程序设计基础_第1页
C语言程序设计基础_第2页
C语言程序设计基础_第3页
C语言程序设计基础_第4页
C语言程序设计基础_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、C语言程序设计基础刘新国1回顾分支结构ifif/elseif/else if/else if/elseswitch2假表达式1表达式2语句1语句2语句n-1语句n真 表达式n-1假真 假假真 if/else if语句if (表达式1) 语句1else if(表达式2) 语句2else if(表达式n-1) 语句n-1else 语句nswitch语句流程图4假v=常量1?语句段1语句段2语句段n语句段n+1真 假真 v=常量2?v=常量n?入口计算表达式值v出口假假真 从哪个语句段开始执行?有n+1个入口可以选择分别对应n个case的入口和1个缺省(default)的入口根据表达式的值决定执行入

2、口如果表达式等于常量表达式k,那么从语句段k开始执行第二章循环结构while循环结构do-while循环结构break语句和continue语句多重/嵌套循环5for语句回顾for( 表达式1;表达式2;表达式3 ) 循环体语句for( i=1; i 0.0001 ) item = flag * 1.0/denominator; sum = sum + item; /* 准备下一项 */ flag = -flag; denominator = denominator + 2;printf( pi = %.4fn, sum * 4 );10item的初值有多重要?while语句应用( II )例

3、4-2,P67 输入一批学生成绩,以负数作为结束标志,计算平均成绩,统计不及格人数。int num, failed;double grade, sum;num = failed = 0;sum = 0;printf(Enter grades:);11成绩个数未知!适合while循环统计学生成绩scanf(%lf, &grade);while( grade =0 ) sum = sum + grade; num +; if( grade 9 )循环体中break和continue语句例4-4,P70素数的判定问题:除了1和自身,不能被别的数整除int i, m;scanf(%d, &m);for

4、( i = 2; im/2 & m!=1 ) printf(Yesn);else printf(No!n);17for循环中的break语句for( 表达式1;表达式2;表达式3 ) 语句段1 if( exp ) break; 语句段218表达式2语句段1真假表达式1 表达式3语句段2exp真假for循环中的continue语句for( 表达式1;表达式2;表达式3 ) 语句段1 if( exp ) continue; 语句段219表达式2语句段1真假表达式1 表达式3语句段2exp真假while循环中的break语句while( 表达式 ) 语句段1 if( exp ) break; 语句段

5、220表达式语句段1真假语句段2exp真假while循环中的coninue语句while( 表达式 ) 语句段1 if( exp ) continue; 语句段221表达式语句段1真假语句段2exp真假循环体中break和continue语句适用于所有的循环结构for, while, do-while用于灵活控制循环结构的执行流程22多重嵌套循环for, while, do-while 能够相互嵌套构成多重循环处理多维数据处理复杂过程23多重嵌套循环假设有一幅宽度为width、高度为height的图像,使用for-for嵌套语句,对它的每一个像素进行处理。(例如亮度值放大)for( x = 0

6、; x width; x + ) for( y = 0; y height; y + ) /* 处理坐标为(x,y)的图像像素 */ /* 具体代码略 */ 24循环体被执行了多少次?width * height每个像素用(x,y)坐标表示省略 多重嵌套循环假设有一幅宽度为width、高度为height的图像,使用for-for嵌套语句,对它的每一个像素进行处理。(例如亮度值放大)for( x = 0; x width; x + ) for( y = 0; y height; y + ) /* 处理坐标为(x,y)的图像像素 */ 25循环体被执行了多少次?width * height循环结构

7、的设计循环程序的实现要点:归纳出哪些操作需要反复执行? 循环体这些操作在什么情况下重复执行? 循环条件选用合适的循环语句for while do-while循环具体实现时考虑(循环条件):事先给定循环次数,首选for通过其他条件控制循环,考虑while或do-while至少执行1次,用do-while否则,用while26例4-8,P78 n个成绩的最高分int n, i, grade, max;printf(Enter n: );scanf (%d, &n);printf(Enter %d marks: , n);scanf (%d, &mark);max = mark;/* 剩余成绩循环处

8、理 */* 次数未知,适合while语句 */27例4-8,P78 n个成绩的最高分for( i = 1; i n; i+ ) scanf (%d, &mark); if( max =0 ) if( max mark ) max = mark; scanf (%d, &mark); printf(Max = %dn, max);30例4-9,P80 将整数按照数字逆序输出例如:x = 12345 的逆序为 54321如何得到呢?从低位开始逐个计算 5 = x % 10,x x/10 = 1234 4 = x % 10,x x/10 = 123 3 = x % 10,x x/10 = 12 2

9、= x % 10,x x/10 = 1 1 = x % 10,x x/10 = 0 结束31例4-9,P80 将整数按照数字逆序输出int x;printf(Enter x: );scanf (%d, &x);/* 对每一位数字进行循环处理 */* 次数未知,适合while语句 */32例4-9,P80 将整数按照数字逆序输出while( x != 0 ) printf( %d, x%10 ); x = x/10;33例4-9,P80 将整数按照数字逆序输出/* 用 do-while 实现 */do printf( %d, x%10 ); x = x/10; while( x != 0 )用

10、do-while 实现更好,对0也work!34例4-10,P81求100以内的素数每行输出10个需要考察的整数范围2,3,4,100素数:没有真因子。 对于整数 m,真因子的范围是:1 真因子 m1 真因子 = m/2如非素数,必有真因子满足:1 真因子 = m1/2每行输出10个当个数是10的倍数时,输出换行符printf(n);35#include#includeint count, m, n, i;count = 0;for( m = 2; m100; m+ ) n = sqrt(m); for( i=2; i=n; i+ ) if( m%i=0 ) break; if( i=n )

11、continue; printf(%6d, m); count +; if( count%10=0 ) printf(n);36例4-11,P82计算并输出:斐波那契数列前10项1 1 2 3 5 8 13 21 从第3项起,等于前2项之和int x1, x2, x, i;x1 = x2 = 1;printf(%6d%6d,x1,x2);37例4-11,P82计算并输出:斐波那契数列前10项for( i=3; i=10; i+ ) x = x1 + x2; printf(%6d,x); x1 = x2; x2 = x;printf(n);38例4-12,P82穷举算法(搬砖)男人:3块/人女人

12、:2块/人小孩:1块/2人问:45人搬45块砖,有多少种搬法?int men, women, child;39例4-12,P82穷举算法(搬砖)for( men=0; men=45; men+ )for( women=0; women=45; women+ )for( child=0; child=45; child+ ) if( men+women+child=45 & men*3+women*2+child*0.5=45 ) printf(men=%d, women=%d, child=%dn, men, women, child); 40合计执行多少次循环操作?45*45*45改进1for( men=0; men=45; men+ )for( women=0; women=0 & men*3+women*2+child*0.5=45 ) printf(men=%d, women=%d, child=%dn, men, women, child); 41合计执行多少次循环操作?45*45改进2for( men=0; men=15; men+ )for( women=0; women=22; women+ ) child = 45-men-women; if( men*3+women*2+child*0.5=45

温馨提示

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

评论

0/150

提交评论