2022年C语言循环知识点总结说课材料.doc
C语言循环知识点总结说课材料 循环特点:在满足特定条件的情况下,反复执行某程序段。While循环While循环的格式是如此的:while(条件表达式)语句代码,意思是满足括号内的条件时,执行花括号内的语句代码。或者更专业一点来说,当括号内的条件表达式返回值为真时,执行花括号内的代码,不断到条件表达式的返回值为假时,跳出循环。While循环特别容易出现死循环这种情况,确实是由于不记得写了增量“这个东西。/死循环int count = 0 ;/ while (countlt; 100) / printf(今天我真帅.n);/ 上面的代码确实是少了count+,这个增量,因此,条件表达式不断满足,就不断执行,就造成了死循环。现在,应该如此改良:/循环变量:操纵循环次数/ int count = 0;/ while (/* + 在前,打印两次*/count/* + 在后,打印三次*/lt; 3 ) / / printf(今天我真帅.n);/ count = count +1;/ / /此处,+ 在前在后都不阻碍打印次数。/ / /循环增量/ count +;/ + count;/ 一些例子:/练习/打印1100/ int num = 0;/ while (num lt; 100) / printf( %d n,(num + 1);/ / num +;/ /用while 打印能被7整除的1100之间的数。/ int num = 1;/ while (num lt;= 100) / / if(num % 7 = 0)/ printf(%d t,num);/ / num +;/ /用while循环打印出1100之间各位为7的数。/ int num = 0;/ / while (num lt; 100) / / if(num % 10 = 7)/ printf(%d t,(num);/ / num + ;/ /用while循环打印出1100之间十位为7的数。num / 10 = 7/ int num = 0;/ while (num lt; 100) / if(num / 10 =7)/ printf(%d t,num);/ / num +;/ Do-while循环与while不同的只有一个地点,确实是先执行一遍代码,再进展推断。也确实是说,不管你while的条件表达式成不成立,返回值为不为假,我都执行一遍循环体的代码。/ do while/ do/ printf(至少执行一次,不管后面的推断条件是真仍然假);/ while (1) ;/ ; 分号不能丢随机数arc4random()产生随机数的方法,arc4random()可以产生int范围内的任意一个随机数,包括有正数和负数,为什么会出现负数呢?由于,在存储的时候,生成的数的最高位的数字为1,现在,会认为这个1是符号位的负,因此会出现负数。这时,我们应该把这些情况防止掉,在输出之前,用unsigned 来定义一个变量来接收产出的随机数;在输出的过程中,占位符不再用%d,而是用%u来代替。另一个值得留意的是,随机数产生的时候,数字会特别大,而我们在代码过程中,不需要这么大的数,现在,想要把这个数减小,可以用取余的方法来限制。/随机数arc4random(),/用%u来打印,表示无符号。/由于随机函数给的值特别大,我们采纳取余的方法,使值变小。取余的随机数的范围确实是,0被除数-1/ printf(%u t, arc4random() % 10);/打印只有010的数在产生一个随机数的时候,可以让它在固定的区间内产生,那么就会用到这个公式:/取某区间a,b的数,用公式:arc4random() % (b-a+1)+a假设是规定在负空间生成随机数,那么就将公式改成:/arc4random() % (b-a+1)-a一些例子:/用户输入一个N,用while打印N个随机数(1030)/ int num = 0;/ int count = 0;/ printf(输入一个数:);/ scanf(%d,num);/ printf(产生%d 随机数为:nt,num);/ while (count lt; num) / / /unsigned 声明一个无符号int 类型。/ unsigned unum = (arc4random()%(30-10+1)+10);/ printf( 第%d 个数为:%d t,(count+1), unum);/ count +;/ /输入一个数,用while打印n个随机数(3070),找出随机数中最大值。/ int num = 0;/ printf(输入一个数:n);/ scanf(%d,num);/ int count = 0;/ int max = 0;/ while (count lt; num ) / unsigned unum = (arc4random()%(70-30+1)+30);/ printf( 第%d 个数为:%d n,(count+1), unum);/ / if(max lt; unum )/ max = unum;/ / count +;/ / printf(n );/ printf(最大的数为:%d n,max);Break和continue这两个关键字在开发过程中经常遇见,他们的区别如下:break:在某个循环的时候,用上break,意思确实是停顿这个循环,不再执行这个循环,我要跳出这个循环。continue :在某个循环的时候,在过程中用上continue,意思确实是,我在的这个循环还在运转,但是我不运转这一次的循环,我要跳到下一次的循环去,但是仍然在这个循环里,没有跳出去,只是不执行这次罢了。/循环变量/ int count = 0;/ while (count lt;10) / / count +;/ / if(count = 3)/ /完毕本次循环/ continue;/ /*/ 输出结果:/ / 第1 天/ 第2 天/ 第4 天/ 第5 天/ 第6 天/ 第7 天/ 第8 天/ 第9 天/ 第10 天*/ / if(count = 5)/ /完毕循环/ break;/ / /*/ 输出结果:/ / 第1 天/ 第2 天/ 第4 天*/ / / printf(第%d 天n,count);/ / for循环for循环和while差不多,但是是将条件和增量,循环变量都一起放在了小括号里。值得留意的是:while与for的比较时,for的一个好处相比于while 循环:while 中存在浪费内存的情况,由于循环变量在while循环外边,直到它所在的花括号完毕,才释放内存。而for循环的循环变量在for循环完毕后,即释放。for循环的执行过程是如此的:for(int i= 0 ; ilt; 100;i+)循环体在运转到本处时,先进展赋初值,然后断定条件,满足那么跳进循环体执行代码,执行循环体代码完毕后,对i进展自增i+,然后进展推断,执行,自增四。如此循环下去。/ for 循环/ int count = 0;/ while (count lt; 5) / printf(n我是while 循环。);/ count +;/ / for(循环变量; 条件; 增量) 循环体/ for (int i = 0;i lt; 5; i+) / printf(n我是for 循环哦。);/ /练习/打印0 100/ for (int i = 0; i lt;= 100; i +) / printf(%d t,i);/ /打印1100/ 相比于while 循环:while 中存在浪费内存的情况,由于循环变量在while循环外边,直到它所在的花括号完毕,才释放内存。/ 而for循环的循环变量在for循环完毕后,即释放。/ for (int j = 0; j lt; 100; j +) / printf(%d t,(j + 1);/ /打印*/ for (int i = 0; i lt; 3; i + ) / printf(*);/ 循环嵌套当我们觉察,一个循环本身又要循环屡次时,用循环嵌套:循环里有循环。/打印/* */两层for循环/外层for:负责操纵行/ for (int j = 0; j lt; 3; j+) / /内层for 负责每行打印多少个/ for (int i = 0; i lt; 3; i + ) / printf(*);/ / printf(n);/ /打印/*11 21 2 3*/ 里边的个数跟行数一样,(第一行有一个,第二行有2个。)那么只要i lt;= j 就可以了。/ for (int j = 1; j lt;= 3; j+) / for (int i = 1; i lt;= j; i +) / printf(%d ,i);/ / printf(n);/ /打印乘法口诀表/ for (int i = 0; i lt; 9; i +) / /列/ for (int j = 0; j lt;= i ; j +) / printf( %d * %d = %d t,j+1,i+1,(j+1)*(i+1);/ / printf(n);/ /三维数组合:/ 三个for循环/百位19for(inti = 1; i lt;= 9 ; i+) /十位09for( intj = 0 ; j lt;= 9; j+) /个位09for(intk = 0 ; k lt;= 9 ; k+) printf(%dn,i * 100 + j * 10 + k);