序言
该文章会细致细心的把C语言基础语法讲解清楚,小白也可以看明白
话不多说 下面是我们今天的重点
1分支语句 2循环语句
if switch while for do while
今天讲两个分支 三个循环
1if循环
if的基本语法
首先看if的基本语法形式
1 if(表达式)
语句;
2 if(表达式)
语句;
else
语句2;
3 if(表达式1)
语句1;
else if(表达式2)
语句2;
else
语句3;
上面三种是if的语法结构,但是值得注意的是,第三个表达式中
可以一直使用 else if(表达式)
直到else
文字也许看不懂直接举例,我们分三个例子来举例
int main()
{
int a=10;
if(a%2==0)
printf("a是偶数");
else
printf("a是奇数");
return 0;
}
这里是第二种语法,如果a模上一个2为0(其实就是就是余数为0)这件事是真的,那么执行下面的语句 打印 a是偶数 否则 打印a是奇数,这个是不是很简单
int main()
{
if(1)
printf("1 ");
if(2)
printf("2 ");
if(0)
printf("3 ");
if(-1)
printf("4 ");
return 0;
}
我们再来看看这个代码看看结果,首先还是分析
给大家解释什么是,语句为真,如果一个表达式的返回值转化为一个数时
非0为真 0为假
我们直接写答案了 1 2 4
很明显只有if(0)不输出
我们再看代码
int main()
{
int age = 100;
if (age < 18)
printf("未成年\n");
else if (age >= 18 && age < 28)
printf("青年\n");
else if (age >= 28 && age < 50)
printf("壮年\n");
else if (age >= 50 && age < 90)
printf("老年\n");
else
printf("nb\n");
return 0;
}
这个代码就是刚刚,我们所说的第三个if语法结构
其实else if 是可以一直使用的
而上面的代码就是一个很好自动分辨年龄段的程序
上述都是单个if的作用
接下来我们看看 if的嵌套使用
if的嵌套使用
同样顾名思义 就是if的执行语句还是一个if嘛
简单大家写一个三数取中 的代码吧 应该可以理解
int main()
{
int a,b,c;
scanf("%d%d%d", &a, &b, &c);
if (a > b)
{
if (b > c)
printf("%d为中间数", b);
//此时 a>b并且b<=c,只需要判断a c大小
else if(a>c)
printf("%d为中间数", c);
//
else//此时 a > b并且b <= c, a<=c 此时a在中间
printf("%d为中间数", a);
}
//a<=b
else
{ //a<=b<c
if (b < c)
printf("%d为中间数", b);
//a<=b>=c 只需判断a c
else if (a > c)
printf("%d为中间数", c);
else//c<=a<=b
printf("%d为中间数", a);
}
return 0;
}
大家好好看看注释,如果能够把这个代码看懂 if也就没有问题了
// 这个东西是注释呀 不会再代码中起效果的
不过if 分支还是有一些细节的
1 if 会和靠的最近的else结合
2else 不能单独出现
3在写if 的语句时 最好加入{} 防止两个语句在不同的作用域中,会出现问题
2switch多分支语句
switch的基本语句
我们在对条件分类讨论时,如果分类非常多,就需要非常多的
if判断,此时代码就会像会像山一样 很麻烦,那我们就引进了switch
其实switch语句的讲解真的不如上代码来的快一些
上代码
int main()
{
int a = 1;
int b = 2;
int c = 3;
//判断条件
switch (a)
{
case 0: a += 10;
case 1: b += 10;
case 2: c += 10;
case 3: a *= 10;
default:c += 20;
}
printf("%d %d %d",a,b,c);
return 0;
}
大家猜的到结果吗
不过在此之前还是要告诉大家switch语句是从上到下执行代码的
先判断,若switch(a) 括号里的变量的值等于这个case b (b可以是一个字符 一个数字 或者表达式) 那么从case b 执行一直往下,如果遇到break则直接结束该语句
但是如果说没有任何一个值等于b 那么程序直接执行default语句
switch()中的a是判断switch语句的执行条件
a一开始为1 然后我们的switch中有个case1:
所以1==a 从case1: 开始执行代码,一直把default 后的语句执行完
这是在没有break;语句的情况
大家还是直接看看答案吧
OK我相信大家还是有很多疑惑
这个default是什么呢
大家有没有想过如果说a的值不满足任何情况,那么他该执行的是什么
是不是就是直接跳过前面的所有情况,直接执行最后的default语句
我们再来改编加个break
这个代码在我们要执行的语句 case 1:(语句)加上了break;
直接使代码其他下面的代码不执行了
所以break;在switch的作用是是使该分支直接结束
最后再来一个代码吧
来个直接执行default的
看a==100 不等于case 中的任何值 直接执行default
switch的嵌套使用
其实大家看了if的嵌套使用就能通过对比猜出switch()的的嵌套使用
我们通过题目来说明
int main()
{
int n = 1, m = 2;
switch (n)
{
case 1:m++;
case 2:n++;
case 3:
switch (n)
{
case 1:n++;
case 2:m++, n++; //结果是m=5,n=3
break; //break上若没有加{}只会与最上面的switch结合并结束此分支
//注意switch的运行顺序是从上之下,只要没有break就会一直运行所有分支
} //switch和if一样也可以嵌套使用
//default指的是开始的switch(n)里的n不是1,2,3,4 时所运行的语句
case 4:m++;
break;
default:
break;
}
printf("m=%d\n", m);
printf("n=%d\n",n);
return 0;
}
解释全在注释上了,大家可以看出结果的
3总结
C语言的分支语句是最简单最易入门的语法,不过还是希望大家多多实践
接下来,我会讲解一些简单的分支题目给大家
良好的开端是成功的一半,加油各位