C语言分支结构

C语言 分支结构(第三章)

if()语句

  • if…else语句 如果if()括号为真则执行if后的语句,否则执行else语句。
    if()对于省略else的语句,如果if()括号内为真则执行if语句,否则什么也不做。
  • 在if…else语句中{ }花括号的作用
    1、使if语句后复合语句成为一个整体
    if子句或者else子句只能控制执行其后面的一条语句,当if…else后有多条复合语句时,应当用{ }花括号把复合语句括起来使复合语句逻辑上形成一个整体,当做一条语句执行。
#include<stdio.h>
int main()
{
	int a,b;
	scanf("%d %d",&a,&b);
	if(a>0) // if() 1
		if(a>b) //if()2
			a=b; //只执行后面第一行代码
			printf("%d",a);
	else
		printf("%d",b);//只执行这一行代码
		printf("%d",b);
	return 0;
}

2、关于if和else配对问题
在嵌套的if语句中可能出现多个if和else,上述代码中,认为第一个if和第一个else有相同的缩进格式而且对齐了,所以希望出现的结果是if()1和else1配对,但事实上,else使就近原则配对,他会和离他最近的if()2 配对。使用{ }花括号就能解决问题。

#include<stdio.h>
int main()
{
	int a,b;
	scanf("%d %d",&a,&b);
	if(a>0) // if() 1
	{	if(a>b) //if()2
			a=b; //只执行后面第一行代码
			printf("%d",a);
	}
	else
	{
		printf("%d",b);//只执行这一行代码
		printf("%d",b);
	}
	return 0;
}

条件表达式:(表达式1) ?表达式2:表达式3
(a>b)? a:b 求解表达式1 的值如果表达式1 非0求解表达式2 的值,如果表达式1的值为0 则求解表达式3的值

字符

  • 字符数据的输入输出
    定义字符型变量: char ch;
    法一:scanf("%c",&ch);
    printf("%c",ch);
    法二:ch= getchar();
    putchar(ch);
    字母、空格如何表达
    ’ 字符 ’
    if(变量==‘A’)
    对于字符数据而言,所有的输入都是有效输入,包括空格和回车等空白符号。

i++ 即 i自+1
i + = 1 即 i = i + 1

switch

解决某些判断分支情况较多的问题时,if语句多层嵌套可能会有错误出现,switch语句能很方便的解决问题,而且一般switch语句速度比if语句快。

输入两个实数和一个运算符,并得出运算结果

#include<stdio.h>
int main()
{
	double a,b;
	char op;
	scanf("%lf %c %lf",&a,&op,&b);
	switch(op)
	{
		case '+': printf("%.2f",a+b); break;
		case '-': printf("%.2f",a-b); break;
		case '*': printf("%.2f",a*b); break;
		case '/': printf("%.2f",a/b); break;/*这里不考虑分母为0的情况。*/
		default : printf("运算符错误\n");break}
	return 0;
}
  • switch语句中表达式注意事项
  1. 控制表达式
    switch 后边的必须跟着由圆括号括起来的整形表达式,在C语言中字符当做整数处理,所以switch可以对字符进行判定,但是表达式不能用浮点数、字符串。可以把switch()表达式的值强行转换成int switch((int)a)

  2. 分支标号
    case 常量表达式 :
    其后常量表达式可以是不包含变量和函数调用的任何表达式,并且表达式的值必须是整数或者字符。

  3. 每个分支标号的后面可以有很多条语句,而且也不需要用花括号括起来,因为语句后会有break结束语句跳出switch。
    没有break也可以,没有break的话输出的结果是每一种case后的语句都会执行,他会从符合的那一条case后执行每一条case

switch(op)
	{
		case '+': printf("%.2f",a+b); 
		case '-': printf("%.2f",a-b); 
		case '*': printf("%.2f",a*b); 
		case '/': printf("%.2f",a/b); 
		default : printf("运算符错误\n");
	}

如果op=‘-’ 则执行上述代码后,输出为a-b、ab、a/b的值
如果op=‘
’ 则执行上述代码后,输出为a*b、a/b的值
default也可以省略。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值