C语言分支与循环(上)

(1):if语句

(2):关系条件符

(3):逻辑条件符

(4):switch循环语句

(一):if else语句

(1):表达式为真执行,为假不执行

(2):==此操作符是判断是否相等,注意与=赋值操作符区分

//code1:判断是否为奇数

int main()
{
	int n = 0;
	scanf("%d", &n);
	if (n % 2 == 1)
	{
		printf("是奇数\n");
	}
	else
	{
		printf("不是奇数\n");
	}
	return 0;
}

(3)分支中有多条语句

注:C语言规定,一条if或else语句只能控制一条语句

若想控制多条语句可以使用大括号{  }

{ }大括号中的内容称为:程序块或代码块(属于复合语句)

//code2:输入代码大于18岁可以谈恋爱成年,反之

int main()
{
	int age = 0;
	printf("请输入您的年龄\n");
	scanf("%d", &age);
	if (age >= 18)
	{
		printf("成年了,可以谈恋爱了\n");
	}
	else
	{
		printf("虽然未成年,但也可以谈恋爱\n");
	}
	return 0;
}

(4):嵌套if

1:else中套if 可以改进为   else if(见下面代码)

//code3:输入一个数判断是0\正数\负数
int main()
{
	int n = 0;
	printf("请输入一个数\n");
	scanf("%d", &n);
	if (n == 0)
	{
		printf("这个数是0\n");
	}
	else if (n < 0)
	{
		printf("这个数是负数\n");
	}
	else
	{
		printf("这个数是正数\n");
	}
	return 0;
}

练习:

//code4:输入年龄
int main()
{
	int age = 0;
	scanf("%d", &age);
	if (age < 18)
	{
		printf("青年\n");
	}
	else if (age < 44)
	{
		printf("青壮年\n");
	}
	else if (age < 60)
	{
		printf("中老年\n");
	}
	else if (age < 89)
	{
		printf("中老年\n");
	}
	else
	{
		printf("老寿星\n");
	}
	return 0;
}

(5)悬空else问题

C语言中else总是与离的最近的if进行匹配

//code5:题目,判断输出结果
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)//此时条件为假,进入不了if语句
		if (b == 2)
			printf("hehe\n");
		else
			printf("haha\n");//C语言中else只与最近的else进行匹配,所以也进入不了

	return 0;
}

(二)关系操作符  >    <    >=    <=   ==   !=

(1)关系操作符通常会返回0或者1;

(2)当变量与常量比较相等时,建议将常量放在=左侧,万一将==写为=可以及时的发现错误所在

(3)多个关系操作符不适宜连用   想一起用可以与逻辑操作符一起使用

(三)条件操作符    exp1  ? exp2  : exp3

(1):C语言中唯一的一个三目操作符

(2):exp1表达式执行若为真,输出exp2表达式;若为假,则输出exp3表达式

(3):实例

//code6:b大于5输出3,否则输出-3
int main()
{
	int a = 0;
	int b = 0;
	scanf("%d", &a);
	b = a > 5 ? 3 : -3;
	printf("%d\n", b);
	
	return 0;
}
//code7:求出a 与 b中的较大值
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d %d", &a, &b);
	c = a > b ? a : b;
	printf("%d\n", c);
	return 0;
}

(四):逻辑操作符  &&   ||   !

(1):逻辑取反操作符:!

可将真变为假;假变为真

//code8:flag为假做一些事
int main()
{
	int flag = 0;
	scanf("%d", &flag);
	if (!flag)//当这个条件为反时会进入
	{
		printf("do something");
	}

	return 0;
}

(2)逻辑与运算符: &&

一假则假,全真则真

(3)逻辑或操作符:  ||

一真则真,全假则假

(4)闰年判断:

//code9:闰年判断
int main()
{
	int year = 0;
	scanf("%d", &year);
	if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
	{
		printf("是闰年\n");
	}
	else
	{
		printf("不是闰年\n");
	}
	return 0;
}

(5)逻辑运算符中的短路现象

1:逻辑运算符的特点总是先对左侧表达式进行求值,若作表达式满足要求,就不计算后面的表达式

//code10:关于短路的题目:
int main()
{
	int i = 0, a = 0, b = 2, c = 3, d = 4;
	i = a++ && ++b && d++;
	//后置++,先使用再++。a=0时表达式结果为假,根据&&一假全假,无需进行后续计算
	//表达式为假则i=0,abcd结果为 1,2,3,4
	printf("a=%d\n b=%d\n c=%d\n d=%d\n", a, b, c, d);
	printf("%d\n", i);
	return 0;

}

(四)swich case语句

(1):switch后面必须是整型表达式

(2):case后面必须是整型常量

(3):default:在case不能匹配输入时进入default

//code11:输入1——7,对应输出星期一到星期天
int main()
{
	int day = 0;
	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;
	case 6:
		printf("星期六\n");
		break;
	case 7:
		printf("星期天\n");
		break;
	}
	return 0;

}
//code12:输入1——5输出工作日,输入6——7,输出休息日
int main()
{
	int day = 0;
	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");
		break;
	}
	return 0;

	//并不是所有的case后边必须跟着break,根据自身需要随时调整
}

你可能感兴趣的:(c语言,算法,开发语言,c#,c++,汇编,数据结构)