一、循环:在满足特定条件的情况下,反复执行某程序段。
生活中常见的例子:
1.跑步 (条件:是否还能跑 循环语句:一直跑);
2.吃包子 (条件: 是否吃饱 循环语句:一直吃);
3.手表分针 (条件: 是否还能转动 循环语句: 手表分针一小时走一圈);用while循环表示
while (是否还能再跑) {
一直跑;
}
........
练习1.用while循环计算出从1+2+3+....+100的和。
sum += a;
a++;
练习2.用while循环打印出1-100之间7的倍数;
就是b % 7 == 0;
练习3.用while循环打印出1-100之间个位数为7的数;
就是 c % 10 == 7;
练习4.用while循环打印出1-100之间十位数为7的数;
就是d / 10 == 7;
练习5.用while循环打印出1-100之间不是7的倍数并且不包含7的数;
就是e % 10 !=7 && e %7 != 0 && e / 10 !=7;
二、随机数
公式 : arc4random () % (b - a + 1) +a; 在[a,b]这个范围内输出随机数。
练习1.用户从控制台 输入一个n,用while打印n个随机数(范围为10~30)。
int a,b,c;
printf("请输入一个数字:\n");
scanf("%d",&a);
while(b < a) {
c = arc4random % (30 - 10 + 1) + 10;
printf("c = %d",c);
b++;
}
三、关键字
continue 是结束本次循环,进入下一次循环;
break 是结束本层循环,跳出循环;
切记:在break,contiue,return后不能写代码,因为他们都含有跳出的意思,所以他们下边的代码永远不会被执行;
四、在do while 循环中,是先执行后判断,比while循环多循环一次,while能写的do while 也能写。
五、for 循环
格式为:for(1.循环变量初始化;2.循环条件;3.循环增量) {
4.语句;
}
执行顺序是:1->2->4->3->2->4->3->2->4-3
结束标志是:当变量不满足循环条件时;
练习 1.打印九九乘法表:
核心思想:两个for循环相互嵌套,两个整型变量都在[0~9],再进行输出两数之积;
2. 已知abc+cba = 1333,其中a,b,c均为一位数,编程求出满足条件的a,b,c所有组合。
核心思想:应该是在三个for循环中先定义三个变量然后进行循环,判断条件为:a * 100 + b *10 + c * 1+c *100 + b *10 +a*1 = 1333;
然后在if语句中进行输出a,b,c的值;
3.整元换零钱问题,把1元兑换成1分,2分,5分的硬币,共有多少种不同换法,请编写求解此问题的程序。通过枚举值来表示1分,2分,5分。
核心思想:先通过枚举给变量(one=1,two=2,five = 5)进行赋值,然后再定义三个变量(a,b,c)分别表示1分,2分,5分的个数进行循环,然后就是在if语句中进行判断(a * one +b *two +c *five = 100)是否成立,若成立就将此组数字输出(a, b, c),开始需要定义一个sum = 0,来计算共有多少种情况,每次输出一个sum +=1;最后打印出总数。
4.编写一个程序打印一个表,表的每一行都给出一个整数、它的平方以及它的立方。要求用户输入上限与下限。使用一个for循环。
核心思想:这里全部都是未知量,所以需要我们自己去一一定义变量。首先是让用户从控制台输入上下限[a1,a2],然后用for循环判断随机数,用a3表示循环次数,但是判断条件是a3<a2-a1+1;其次,就是x先定义一个随机数a4 = arc4random % (a2 - a1 +1) + a1,再定义两个变量分别用来计算随机数的平方和立方,最后输出随机数和平方、立方。
5.使用嵌套循环产生下列图案:
F
FE
FED
FEDC
FEDCB
FEDCBA
字母F由终端输入。
核心思想:先定义一个字符类型的变量,ch = 'F';然后再进行两个for循环,在最里面的那个循环体内,要进行输出ch,然后再让ch = ch -1,在内循环中随着外循环的次数连续输出F前的上一个字节,因为每行都要输出F,所有在内循环外进行再次给ch赋值等于F,Z再输出“\n”。
char c = 'F';
for(int i = c; i >= 'A';i--){
for (int j=c;j>=i;j--){
printf("%c",j);
}
printf("\n");
}
6.编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙花数”是一个各个位立方之和等于该整数的三位数。
核心思想:就是一个for循环里里面判断该数在100~999之间,然后分别计算出水仙花数m的个位a = m % 10;十位b = ( m%100) /10;百位c = m / 100;
然后再进行判断(m == a * a * a + b * b* b +c * c* c)是否成立,若成立,就输出m.
7.随机产生20个[10 , 100]的正整数,输出这些数以及他们中的最大数。
核心思想:随机产生20(a)个,就是让循环次数m<a,然后用while进行判断,随机数b = arc4random % (100 -20 +1) +20,再进行输出随机数b;然后再进行判断最大值max,如果b>max,就把b赋值给max,然后m++循环下一次;最后输出最大值max.