首先是if,else,用于分支语句,而语句的识别标志就是;
#include <stdio.h>
int main()
{
int a=10;
if(a<18) //if和else不算一个完整语句,故不能打 ;
printf("未成年\n");
else
printf("成年\n");
return 0;
如果想把a限制在12到18为青年,按照常理就会写成if(12<a<18),但其实这样是错的,电脑并不会识别这样的符号,因此就需要用到其他符号,即逻辑与与逻辑或(&&,||),那么就可以写成if(a>12 && a<18)。同理如果说需要一个数a让它的范围在小于12且大于18,写成if(a<12 || a>18).
当然,有时候的分支不两个,可能是多个,这时用else if表示:
#include <stdio.h>
int main()
{
int a=10;
if(a<18);
printf("青年\n");
else if(a>=18 && a<50);
printf("成年\n");
else if(a>=50)
printf("壮年\n");
return 0;
}
要是在使用if,else时,应该注意:if会与else匹配,并且else只与最近的if匹配,假如:
#include <stdio.h>
int main()
{
int a=1;
int b=2;
if(a==2)
if(b==2)
printf("d\n");
else
printf("x\n");
return 0;
}
显然这是错误的,因为第一个if没有对上,根本就没有进入if,else,只有当第一个if执行成功时,才会考虑下面的if,else。
while语句呢,是用于循环,与if相同的是,单独while也不算一个语句,例如:
#include <stdio.h>
int main()
{
int a=1;
while(a<100)
{
a++;
printf("%d\n",a);
}
return 0;
}
可以看到,在使用while语句时,需要使用一个代码块来框定所需要循环的代码,需要知道的细节是,switch的括号里必须是整型,不能是小数。
而对于swich的使用,也是在分支中,当分支过多时,按照上述,需要打非常多的else if,并且需要不断重复,为了减轻不必要的负担,就有了swich.
#include <stdio.h>
int main()
{
int day=1;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
case 2:
printf("星期二\n");
case 3:
printf("星期三\n");
case 4:
printf("星期四\n");
case 5:
printf("星期五\n");
}
return 0;
}
运行之后会发现,打印不会停止,故需要有一个终止运行的方式,即break , 使用方法:
#include <stdio.h>
int main()
{
int day=1;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
}
return 0;
}
可是这么打虽然负担有所减轻,但是看起来还是要重复敲相同的代码,所以如果当这个变量处在某个区间,结果是相同的时候,就可以减去部分繁琐的重复,例如:
#include <stdio.h>
int main()
{
int day=1;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
解决完这个问题,会发现,如果我输入一个9,会发生什么?答案是什么都不会发生,但是为了提醒输入者,要加入default,用法如下:
#include <stdio.h>
int main()
{
int day=1;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
default:
printf("输入错误\n");
}
return 0;
}
break实际上是跳过switch所设定的代码块,直接走到},以达到停止打印后面的东西的目的。
有终止就有继续,即continue,它的作用是直接重新一次新的循环,忽略在continue以下的代码(当然这些代码必须在while设定的代码块内),例如:
#include <stdio.h>
int main()
{
int a=2;
while(a<500)
{
a++;
printf("%d\n",a);
continue;
a=2*a;
}
return 0;
}
由于a=2*a在continue下面,在运行到continue时,就自动跳到a++去了,那么结果就是从1打印到500停止。但如果将continue,删掉:
#include <stdio.h>
int main()
{
int a=2;
while(a<500)
{
a++;
printf("%d\n",a);
continue;
a=2*a;
}
return 0;
}
打印的结果就只有3,7,15,31,127,255.