C语言分支语句if else

现实中的所有时间都可分成下面三中基本结构:顺序结构、选择结构、循环结构。而计算机语言是让计算机代替人们进行处理事情的工具,所以计算机语言中不外乎也就是这三种结构。

分支语句(选择结构)有两种:if语句和switch语句,语句:C语言中由一个分号;隔开的就是一条语句。

简单的If语句:

int main()
{
	int age = 10;

	if (age >= 18)
		printf("成年\n");
	else
		printf("未成年\n");

	return 0;
}

注意:if和else后不加花括号时其作用范围只有其后面一条语句,如

int main()
{
	int age = 20;

	if (age >= 18)
		printf("成年\n");
	else
		printf("未成年\n");
	    printf("不能谈恋爱\n");
		//输出结果为成年+不能谈恋爱
	return 0;
}

要让其控制多条语句时后面要用花括号括起来

int main()
{
	int age = 20;

	if (age >= 18)
	{
		printf("成年\n");
		}
	else
	{
		printf("未成年\n");
		printf("不能谈恋爱\n");
		//输出结果为成年+不能谈恋爱
	}
	return 0;
}

多分支If语句

int main()
{
	int age = 10;

	if (age < 18)
		printf("未成年\n");
	else if (age >= 18 && age < 26)
		/*不能写成18 <= age < 26, 存在逻辑错误,若age大于26
		先判定18<=age为真,再判定1<26,判定为真*/ 
		//判定条件也可直接写成age < 26,else 中隐含着age >= 18的条件		
		printf("青年\n");
	else if (age >= 26 && age < 40)
		printf("中年\n");
	else if (age >= 40 && age < 60)
		printf("壮年\n");
	else if (age >= 60 && age < 100)
		printf("老年\n");
	return 0;
}

代码规范性问题

1.悬空else:

//悬空else
int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
		if (b == 2)
			printf("1\n");
    else
	printf("2\n");//此程序不输出任何东西
	return 0;
}

此程序不输出任何东西,因为else遵循就近原则,即else和最近的if进行匹配,但此程序代码不规范,else与第一个if对齐,容易给人造成误解。

可以改为以下格式:

int main()
{
	int a = 0;
	int b = 2;
	if (a == 1)
	{
		if (b == 2)
		{
			printf("1\n");
		}
		else
		{
			printf("2\n");
		}
	}
	return 0;
}

2.

int test()
{
	if (1)   //if(1)表示恒成立,因为计算机中1表示真,0表示假
		return 1;
	return 0;
}

int main()
	{
	printf("%d\n", test());
		return 0;
	}
int test()
{
	if (1)
		return 1;
	else
	    return 0;
}

int main()
	{
	printf("%d\n", test());
		return 0;
	}

上面两个程序的逻辑原理和输出结果都是一样的,但是第二个程序明显更加易读。

3.判定相等问题

正确代码

//判断a是否等于2
int main()
{
	int a = 1;
	if (a == 2)
	{
		printf("a等于2\n");
	}
	return 0;
}

若此时不小心在判定条件中少打一个等号,表示将2赋值给a,程序并不会报错,但是会输出错误的结果,如下

//判断a是否等于2
int main()
{
	int a = 1;
	if (a = 2)
	{
		printf("a等于2\n");//输出a等于2,显然错误
	}
	return 0;
}

所以我们可以采用判定相等时让数字在前的方法:

//判断a是否等于2
int main()
{
	int a = 1;
	if (2 = a)  //数字在前时少打一个=号,程序报错
	{
		printf("a等于2\n");
	}
	return 0;
}

此时程序报错,能使我们更加容易发现问题。

练习:输出1-100内的所有奇数:

1.while循环

int main()
{
	int i = 0;
	while (i < 101)
	{
		if (i % 2 == 1)
		{
			printf("%d\n", i);
		}
		i++;
	}
	return 0;
}

2.for循环

int main()
{
	int i = 0;
	for (i; i < 101; i++)
	{
		if (i % 2 == 1)
		{
			printf("%d\n", i);
		}
	}
	return 0;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值