1.if语句与else语句
1.1 if
if意为”如果、当“,如果表达式为真,则执行if里的语句;如果表达式为假,则if里的语句不执行
if(表达式){//if语句格式
语句;
}
下面来看一个例子:输入两个数求其中最大值
#include<stdio.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
if (a > b) printf("%d", a);//当语句只有一条时,可以省略{},按左边格式书写
if (a < b) {
printf("%d", b);//当语句有多条时,要按此格式书写
}
return 0;
}
1.2 else
else语句一般跟在if语句的后方,与if语句配对,代表”否则“的意思
else { //else语句格式,当语句只有一条时,也可省略{}
语句;
}
下面来看一个例子:输入两个数求其中最大值
#include<stdio.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
if (a > b) printf("%d", a);//当语句只有一条时,可以省略{},按左边格式书写
else printf("%d", b);//当语句有多条时,要按此格式书写
return 0;
}
注意!当没有{}时,else 永远与离它最近的if语句配对!!所以在多层if嵌套语句里最好把“{}”带上。
不然就会出现下面这种情况,乍一看else语句是跟语句一配对的,实际上else语句是跟语句二进行配对的,则当a不等于0的时候,任何文字都打印不出来。
int a = 0, b = 1;
if(a == 0)//语句一
if(b == 1)//语句二
printf("好好学习,天天向上");
else printf("努力学习,天天向上");
2.switch语句与case语句
2.1 switch
switch可以理解为开关,switch()中的表达式为一把钥匙,case后面的值为一把锁,当钥匙与锁匹配上时,就打开锁执行里面的语句。
switch语句是⼀种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。
case后面必须跟常量表达式!!!且必须与之隔一个空格!!
switch (b表达式) {//switch语句基本格式
case 值1: 语句;
case 值2: 语句;
default: 语句;
下面来看一个例子:输入数字1-7,打印出对应的星期几
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch (n) {
case 1://当n=1时,就会打印星期一,然后跳出switch
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
default://当n匹配不上任何一个case表达式时,就执行default语句
printf("输入错误\n");
break;
}
return 0;
}
2.2 switch语句中的break
可以发现,上面代码每一个case语句里面都配了一个break,在此代码中break的作用是跳出switch语句,没有break,上面代码就无法实现其功能!无break执行结果如下图
可见,执行结果就变成了:与哪个case匹配成功后,后方的语句也都会执行
2.3 default
当switch()中表达式无法匹配到case后的表达式时,要么不做处理,要么就在switch语句中加入一个default语句,所以default语句就是当所有case都无法匹配上时才执行的!
default语句并不是一定要放在所有case语句的最后,只是放在最后更美观易读,而且可以选择不带break;也可以放在开头或中间,但放在开头或中间时default语句中一定要带一个break!!某则就会多执行后面一个case的语句!!
当我把default语句放case 4前,且有break,也可实现之前的功能
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
switch (n) {
case 1://当n=1时,就会打印星期一,然后跳出switch
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
default://当n匹配不上任何一个case表达式时,就执行default语句
printf("输入错误\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期日\n");
break;
}
return 0;
}
但当我把default语句放case 4前,且无break时,执行结果如下
3.while循环语句
while语句执行流程(先判断再执行):先判断表达式,若为假,则结束循环。若为真则执行语句,然后进入下一轮的判断,若又为真则再次执行语句,然后一直循环直至判断表达式为假。
while(表达式){ //while语句的基本格式
语句;
}
下面来看一个例子: 输入1-10之间的数字
#include<stdio.h>
int main()
{
int i = 1;
while( i <= 10 ){ //判断i是否小于等于10,真则执行{}内语句
printf("%d ",i);
i++;//用来调整i的值,如果没有此语句,此代码将会陷入死循环
}
return 0;
}
4.for循环语句
for语句执行流程(先判断再执行):先执行表达式1,然后判断表达式2,若为假,则结束循环;若为真,则执行语句,然后执行表达式3,再判断表达式2,若又为真,则再次执行语句,然后一直循环直至判断表达式2为假。由此可得出,表达式1只执行一次!
for(表达式1;表达式2;表达式3)//for语句基本格式
{
语句;
}
下面来看一个例子: 输入1-10之间的数字
#include<stdio.h>
int main()
{
int i = 1;
for( i = 1; i <= 10; i++ )//表达式中的i也可以在for语句中表达式1进行创建
{
printf("%d ",i);
}
return 0;
}
表达式1与表达式3一般情况下也可以空着(其实可以看作是移到其他地方去了),但表达式2必须在!!!如下面的代码:
//虽然表达式1与表达式3位置空着,但打印在屏幕的结果跟上面代码是一样的
#include<stdio.h>
int main()
{
int i = 1;//表达式1
for( ; i <= 10; )
{
printf("%d ",i);
i++;//表达式3
}
return 0;
}
5.do...while循环语句
do..while语句执行流程(先执行再判断):先执行一次语句,再判断表达式,若为假,则结束循环;若为真,则继续执行语句,再判断,若又为真,则再执行语句,然后一直循环直至判断表达式为假。由于do...while语句是先执行再判断,所以语句至少会执行一次。
do{ //do...while语句基本格式
语句;
}while(表达式);
下面来看一个例子: 输入1-10之间的数字
#include<stdio.h>
int main()
{
int i = 1;
do {
printf("%d ", i);
i++;//用来调整i的值,防止陷入死循环
} while (i <= 10);
return 0;
}
6.break与continue
6.1 break
break语句的作用就有跳出switch与结束循环这两个,跳出switch在上面讲switch语句时已经讲了,现在讲break结束循环。
下面来看一个代码
#include<stdio.h>
int main()
{
for( int i = 1; i <= 10; i++)
{
if(i == 6){
break;//当i的值为6时跳出循环
}
printf("%d ",i);
}
return 0;
}
执行结果如下 ,可以发数字5以后的数字都没有被打印出来,在此语句中break的作用为当i的值为6时跳出这个循环。
6.2 continue
continue语句的作用是跳过本次循环
还是来看一个代码
#include<stdio.h>
int main()
{
for (int i = 1; i <= 10; i++)
{
if (i == 6) {
continue;//当i的值为6时跳过本次循环
}
printf("%d ", i);
}
return 0;
}
执行结果如下,可以发现数字6并没有被打印出来 ,在此语句continue作用为当i的值为6时跳过本次循环,直接进入下次循环。
6.3 break与continue的区别
根据上面两个代码,我们可以清楚地知道break是直接跳出这个循环,而continue是跳过本次循环,直接进入下次循环。
7.goto
goto语句可以实现在同一个函数中跳转到设置好的标号处
goto 名字;//这个是goto语句的基本格式,名字随我们取,但必须是英文的
...
名字:
...
下面来看一个代码
#include<stdio.h>
int main()
{
printf("Love ");
goto next;//跳过了You的打印
printf("You ");
next:
printf("Me ");
return 0;
}
代码执行结果如下,将打印“You”的代码跳过了
一般情况下较少使用goto语句,但在跳出多层循环嵌套时使用goto语句就非常方便
for(){
for(){
for(){
if(){
goto next;
}
}
}
}
next:
...
以上内容若有错误请指出,谢谢