收藏 分享(赏)

C语言 循环、一维数组.ppt

上传人:wspkg9802 文档编号:4224559 上传时间:2018-12-16 格式:PPT 页数:29 大小:2.06MB
下载 相关 举报
C语言 循环、一维数组.ppt_第1页
第1页 / 共29页
C语言 循环、一维数组.ppt_第2页
第2页 / 共29页
C语言 循环、一维数组.ppt_第3页
第3页 / 共29页
C语言 循环、一维数组.ppt_第4页
第4页 / 共29页
C语言 循环、一维数组.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

1、第四章 循环结构 第五章 一维数组,循环语句,问题:,打印整数110打印整数1100打印整数1nprintf(“12345678910”);,printf(“%d”,1); printf(“%d”,2); printf(“%d”,10);,i=1; printf(“%d”,i); printf(“%d”,i); printf(“%d”,i); i+;,#include main() int i;i=1;while(i=10)printf(“%d“,i);i+; ,i+;,i+;,一、while语句,while(条件)语句;,条件,语句;,0,非0,i=1; while(i=10) printf

2、(“%d”,i);i+; ,循环条件,循环体,循环不变式 循环条件改变式,ctrl+break,可以是任意表达式:非0:真0:假,一条语句。 如果需要写多条语句,必须在这多条语句外加,构成复合语句,sum=0; sum =sum +1; sum =sum +2; sum =sum +3; sum=sum+10;,求sum,sum0; i=1; while(i=10) sum=sum+i;i+; ,循环不变式: sum=sum+i;,循环条件: i的取值110,二、do/while语句,do语句; while(条件);,条件,语句,0,非0,i=1; do printf(“%d“,i);i+;

3、while(i=10);,可以是任意表达式:非0:真0:假,一条语句。 如果需要写多条语句,必须在这多条语句外加,构成复合语句,while和do/while的比较,条件,语句,0,非0,循环次数:,无数次或者0次,无数次或者至少要1次,到最后一项的绝对值小于等于105 (系统有求绝对值的库函数fabs),循环不变式: sum=sum+flag*1/n; 循环条件改变式: n=n+2;,循环条件: fabs(flag*1/n)1E-5,例:利用格里高利公式求圆周率(用pi表示),书上写的是1.0,写1可以吗,为什么? #include?,三、for语句,for(exp1;exp2;exp3)语句

4、,exp3,语句,exp1,exp2,0,非0,循环条件,循环体,while和for的关系,while(条件)语句,for(exp1;exp2;exp3)语句,exp1; while(exp2) 语句;exp3; ,while(条件)语句,for(exp1;exp2;exp3)语句,while 和 for的关系,sum0; i=1; while(i=10) sum=sum+i;i+; ,sum0; for(i=1;i=10;i+)sum=sum+i;,exp1; while(exp2) 语句;exp3; ,break语句,作用:1.跳出switch语句 2. 跳出当层循环 for(i=0;i5

5、;i+) c=getchar();if(c=n) break;putchar(c); ,输入: abc 123,输出: abc,continue语句,功能:跳过continue后面的语句,继续下一次循环,for(i=0;i5;i+) c=getchar(); if(c=n) continue;putchar(c); ,输入: abc 123,输出: abc1,例:输入m,判断m是否为素数(质数),分析:除了1和m,不能被其他数整除m 2 3 4 5 (m1),n= m-1 ;for(i=2;in) printf(“%d”,m);else printf(“non”);,例:输入m,判断m是否为素

6、数(质数),分析:除了1和m,不能被其他数整除m 2 3 4 5 (m1),n= m-1 ;for(i=2;in) printf(“%d”,m);else printf(“non”);,sqrt(m),多重循环(循环嵌套),注:循环嵌套均是大循环嵌套小循环绝对不允许循环体交叉break只能跳出当层,while(条件)语句;,do语句; while(条件);,for(exp1;exp2;exp3)语句;,多重循环(循环嵌套),例:输出100200间所有素数,#include main() int m,n,i;for(m=100;mn) printf(“%4d“,m); ,输出以下图形 21个空格

7、,1 22 3 33 4444 55555,#include main() int i,j,k;i=1;while(i=5)for(j=1;j=20-2*i;j+) printf(“ “);for(k=1;k=i;k+) printf(“%4d“,i);printf(“n“);i+; ,数组,一维数组二维数组字符数组,数组的概念,问题:输入3个整数后再将它们按输入顺序的相反顺序输出int a1、a2、a3输入300个整数后再将它们按输入顺序的相反顺序输出int s300; s0、s1s299,数组:相同类型数据的有序集合;在内存中连续存放 优点:表述简洁,可读性高;便于使用循环结构 特点:数组

8、的大小必须是确定的;数组中元素的类型必须相同,一维数组的定义(先定义,后使用),定义:,存储类别 类型名 数组名数组长度,类型名:数组元素的类型 数组名:数组的名称 数组长度:常量表达式,给定数组的大小,int a10; 数组地址:,a0 a1 a2 a3 a4 a5 a6 a7 a8 a9,一维数组元素的引用,数组元素的引用:数组名下标 下标: 整型表达式 取值范围: 0,数组长度1 例:int a10;a0、a1、a9 下标不要越界,不能使用a10,注:数组元素的使用方法与同类型的变量相同,一维数组元素的引用,例: 设int a10;,则给数组元素a0赋值1如何实现,输出数组元素a0的值如

9、何实现呢? 给每个数组元素输入值如何实现,输出所有数组元素的值如何实现呢? P109,注:数组元素的使用方法与同类型的变量相同,在定义数组时给初值int a5=1,2,3,4,5;int a =1,2,3,4,5;int a5=1,2;int a5;int a5=1,2,3,4,5,6;,一维数组的初始化,a3的值?,例:用数组计算fibonacci数列的前20个数的和,并按 每行打印5个数的格式输出数列,然后输出和值。 1 1 2 3 5 8 13,用数组f0=f1=1fi=fi-1+fi-2 (2=i=19)if(i+1)%5=0)printf(“n”);,#include void ma

10、in() int f20,sum=0,i;f0=1;f1=1;for(i=2;i20;i+)fi=fi-1+fi-2;for(i=0;i20;i+)printf(“%4d“,fi);if(i+1)%5=0) printf(“n“);sum=sum+fi;printf(“sum=%d“,sum); ,int f20=1,1,sum=0,i;,将数组a中存放的10个数按颠倒的顺序重新存放,main() int a10=26,21,29,85,76,25,30,50,44,60;int i,j,temp;i=0;j=9;while (ij)temp=ai;ai=aj;aj=temp;i+;j-;fo

11、r (i=0;i10;i+)printf(“%4d“,ai);printf(“n“); 运行结果如下:60 44 50 30 25 76 85 29 21 26,i,j,输入n个数,用“冒泡法”将它们按从小到大的次序排序并输出。,#define N 5 main() int aN,i,j,temp;for (i=0;iaj+1)temp=aj;aj=aj+1;aj+1=temp; printf(“n“); for (i=0;iN;i+)printf(“%4d“,ai); printf(“n“); ,a0,a4,a3,a2,a1,7,6,3,9,4,初始状态,4,6,3,9,7,第一趟第1次的结

12、果,4,6,3,9,7,第一趟第2次的结果,4,6,9,3,7,第一趟第3次的结果,4,9,6,3,7,第一趟第4次的结果,a0,a4,a3,a2,a1,7,6,3,9,4,初始状态,4,9,6,3,7,第一趟的结果,4,9,7,6,3,第二趟的结果,3,9,7,6,4,第三趟的结果,3,9,7,6,4,第四趟的结果,输入n个数,用“选择法”将它们按从小到大的次序排序并输出。,a0,a4,a3,a2,a1,7p,6,3,9,4,初始状态,7,6,3,9,4p,第一趟第1次的结果,7,6,3,9,4p,第一趟第2次的结果,7,6,3p,9,4,第一趟第3次的结果,7,6,3p,9,4,第一趟第4

13、次的结果,a0,a4,a3,a2,a1,3,6,7,9,4,初始状态,3,6,7,9,4p,第二趟初始状态,3,6,7,9,4p,第二趟第1次的结果,3,6,7,9,4p,第二趟第2次的结果,3,6,7,9,4p,第二趟第3次的结果,a0,a4,a3,a2,a1,7,6,3,9,4,初始状态,3,9,7,9,4,第一趟的结果,3,6,7,9,4,第二趟的结果,3,9,7,6,4,第三趟的结果,3,9,7,6,4,第四趟的结果,#define N 5 main() int aN+1,i,j,p,temp;printf(“Input %d numbers:n“,N);for (i=1;iaj) p=j; if (p!=i) temp=ap;ap=ai;ai=temp; printf(“n“); printf(“Output %d numbers,after sortn“,N); for (i=1;i=N;i+)printf(“%4d“,ai); printf(“n“); ,运行情况如下 Input 5 numbers: 4 9 3 6 Output 5 numbers,after sort 3 4 6 7 9,

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

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报