有关if,else和switch,while,case,break,continue的使用

首先是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.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值