一、if嵌套
格式:
if(条件1) {
if(条件3) {
语句4;
}
else {
语句5;
}
}
else if(条件2) {
语句2;
}
else {
语句3;
}
执行:先判断条件1是否满足继续判断条件3,如果条件3也满足则执行语句4后结束,如果条件3不满足则执行语句5结束,如果条件1都不满足则继续判断条件2,如果条件2满足则执行语句2,如果条件2也不满足则执行语句3
练习:判断闰年(day02/01ifInIf.c)
2.开关语句:switch
格式: switch(表达式)
{
case 常量1:表达式1;break;
case 常量2:表达式2;break;
case 常量3:表达式3;break;
case 常量4:表达式4;break;
...
default: 表达式5; break;
}
执行: 先计算表达式的值,和case后的常量比较,当常量的值和表达式的值相同时,则执行后面的表达式,如果所有的case都不匹配,则执行defaul后的语句
注意:case后的常量不可以相同。
一般情况下 在每个case后都会加上break;
default不是必须有,可写可不写。但一定是最后一个匹配。
case常量后是冒号:
如果在case后需要定义变量,则要加上大括号使用。
练习: 输入成绩,用switch打印等级(day02/03sorce.c)
3.goto语句
作用:跳转到某一个位置,需要提前把位置设置好,遇到goto加标签则直接跳转到标签位置。
格式: goto 标志;
案例: DANNY: //设置标志
goto DANNY; //跳转到标志
练习: 使用goto计算1到100的偶数和(day01/05even.c)
二、循环语句
1.while循环语句
格式:while(条件)
{
循环语句;
}
2.流程:首先判断条件是否满足,如果满足执行循环语句,然后继续判断,满足则一直执行,知道条件不满足为止;
3.练习: 打印1到100的和(day02/06while.c);
4.练习:输入两个数,用while循环打印出两个数中间的所有整数(包含两个数)()
5.练习:打印斐波那契数列。
注意:while后不可以加分号
6.continue 和break
continue:退出当次循环,遇到continue后的代码不执行,继续执行下一次循环。
break:退出当前循环,遇到break则退出循环;
7.死循环(无限循环)
定义:当循环条件永远为真则循环不会结束,这种循环叫无限循环。无限循环不结束则后面的代码无法执行。
比如说 while(1){} while(1);
三、循环嵌套:
1.定义:在循环中加入另外一个循环
2.格式: while(条件1)
{
语句1;
while(条件2)
{
语句2
}
语句3;
}
3.执行:先判断条件1是否满足,如果满足执行语句1,后继续判断条件2,如果条件2满足则执行语句2后继续判断条件2,直到条件2不满足才会退出内部循环,然后执行语句3,再执行外部循环的条件1,如果满足继续刚才的流程,直到条件1不满足则退出循环。
练习: 鸡兔同笼游戏:一只两条腿,一只兔子4条腿,一共有100个头,有300条腿,请问多少只鸡多少只兔子。(day01/10chickenAdnRabbit.c)
注意:在循环嵌套中,如果遇到break,则会退出当前循环,break在哪个括号中则退出当前括号的循环。
4. do....while循环
格式:do
{
循环体;
}while(条件);
执行:先执行循环体,在判断条件是否满足,如果满足则继续执行循环体,如果不满足则退出循环。不管是否满足条件,至少会执行一次循环体。
随机值:电脑随机产生一个值,是随意的。
随机值产生步骤: 添加头文件 #include <stdlib.h>,
需要用srand做种子,然后rand产生随机值。
案例:猜数小游戏,随机产生值,然后和输入的值比较,给出大小提示,直到用户猜对为止。(day02/11guess.c)
注意:在while后要加分号。
srand(time(NULL)); //以时间为参数产生种子
int num =rand()%1000+1;
5.for循环
格式: for(语句1;条件2;语句3)
{
循环语句4;
}
注意:语句1一般为 定义变量语句
语句2一般为判断条件语句
语句3一般为自增自减语句
执行:先执行语句1,然后判断条件2是否满足,如果满足 则执行循环语句4,继续执行语句3后再判断条件2是否满足,如果条件2还满足则继续执行循环语句4,直到条件不满足为止。
6. for循环嵌套
格式:for(语句1;语句2;语句3)
{
for(语句4;语句5;语句6)
{
循环体7;
}
}
执行:先初始化语句1,判断条件2是否满足,进入到内循环中,执行语句4,判断语句5是否满足,如果满足则执行循环体7,再执行语句6后判断语句5是否满足,如果满足则一直执行循环体7中内容,如果不满足则执行语句3,在判断语句2是否满足。
练习:输入一个值,然后打印输入值的行数的三角形(day02/14triangle.c )
*
* *
* * *
练习: 九九乘法表
四、数组:
1.定义:相同数据类型的连续的集合。
2.格式:数据类型 数组名[数组元素个数] = {多个值};
例如: int arr[6]={1,2,3,4,5,6};
3.元素:数组的每个值是他的元素,用数组名和下标表示例如arr[2]
下标:数组的下标是从0开始到数组元素个数-1.不可以越界使用
4.数组的初始化:
int arr[4] = {1,2,3,4}; 全部初始化
int arr[4] = {1,2} 部分初始化,未初始化部分默认为0
int arr[4] = {0} 全部初始化成0;
int arr[ ] = {1,2,3,4} 缺省初始化,会根据初始化个数自动确定元素个数
练习:请打印斐波拉契数列:1 1 2 3 5 8 (20项)
5.补充知识: (头文件unistd.h)
sleep() 代码延时, (秒)
system(命令) 调用外部程序执行
exit() 结束程序 ,结束进程
预习:二维数组 函数 字符串函数 (结构体 枚举 联合)
作业1:打印1到1000的质数(只可以被1或者自己整除的数,2,3,5,7,11,13,17,19);
作业2:现在有一对大兔子,兔子每两个月生一对小兔子,小兔子两个月后可以生产,请问10个月后总共多少只兔子。