分支语句、循环语句、跳转语句


一、分支语句

1. if — else

基本格式:

	if( 条件)
	{
		True执行;
	}
	else
	{
		False执行;
	}

要点:

  1. 在 if 后加 ; 会变成空语句,条件为真:既执行空白部分,原条件部分无论真假都执行
  2. 注意格式 { } 的规范使用会大大增强代码的可阅读性
  3. 在使用 if 语句嵌套是注意:else与他前面最近的 if 配对
  4. 一些简单的 if — else语句可以用三目运算符来替代
int MAX(int a, int b) {
	int max = 0;
	if (a > b)
	{
		max = a;
	}
	else
	{
		max = b;
	}
	return max;
}

等价于:

int MAX(int a, int b) {
	return a > b ? a : b;
}

三目运算符(条件表达式 ? x :y)

x和y的类型要一致

#include<stdio.h>
int main()
{
	int a = 1;
	int b = 2;
	int c = 0;
	c = a > b ? a : b ;	//将a、b中最大的值赋值给c ,并不改变原a、b的大小
	printf("a %d\n",a); 
	printf("c %d\n",c); 

 } 

结果:
在这里插入图片描述
在c++中三目运算符的返回值是变量,在c中返回值是值

#include<stdio.h>
int main()
{
	int a = 1;
	int b = 2;
	int c = 0;
	a > b ? a : b = 100;	//将a、b中较大的值赋值为100  (c++下可)
	printf("a %d\n",a); 
	printf("b %d\n",b); 
 } 

结果:
在这里插入图片描述

2.switch—case

基本格式:

	switch(整型表达式)
	{
		case 常量1: 
			语句块1;
			break; //跳出switch语句
		case 常量1: 
			语句块1;
			break; 
		……
		default:	//其他情况 (不是必须的,如果没有case匹配,没有default就什么也不执行)
			语句块……;
			break;
	}

要点:

  1. switch语句只适用于整形变量(char、short、int……)不能是浮点数、字符串
  2. case的标签必须是常量表达式,如42 、 4+‘20’
    在这里插入图片描述

示例:输出成绩等级

#include<stdio.h>
int main() {
	char ch = '#';
	printf("输入A、B、C、D任意一个:");
	scanf_s("%c",&ch,1);
	switch (ch)
	{
		case 'A':
		case 'a':
			printf("优秀");
			break;
		case 'B':
		case 'b':
			printf("良好");
			break;
		case 'C':
		case 'c':
			printf("及格");
			break;
		case 'D':
		case 'd':
			printf("不及格");
			break;
		default:
			printf("输入错误");
			break;
	}
}

恰当使用 break

二、循环语句

1.for

	for(表达式1;  判断语句; 自增\减)
	{
		循环语句;
	}

for 的各种省略形式:
三个表达式都可以省略,但( ; ; )必须保留

	表达式1;	//int i = 0;
	for( ;  判断语句; 自增\减)
	{
		循环语句;
	}
	for(表达式1;  判断语句; )
	{
		循环语句;
		自增\减;	
	}
	表达式1;
	for( ;   ; )
	{
		if(判断语句)
			循环语句;
		else
			break;
		自增\减;
	}

2.whlie

一般形式:

	while(true)
	{
		循环语句;
		自增\减;
	}

从键盘接收数字并累计求和

#include<stdio.h>
int main()
{
	int n = 0;
	int sum = 0;
	printf("请输入整形数列以空格间隔,以0结束:");
	scanf("%d",&n);
	while(n != 0)
	{
		sum += n;
		scanf("%d",&n);
	}
	printf("sum = %d\n",sum);
	return 0;
}

逗号表达式 (表达式1,表达式2,表达式3……表达式n)

要点:

  1. 运算过程:从左往右逐个计算
  2. 逗号表达式是一个整体,其值为最后一个(表达式n)的值
  3. 逗号运算符优先级最低
#include<stdio.h>
int main()
{
	int x = 0;
	int y = 0;
	int n1 = 0;
	int n2 = 0;
	n1 = (x++, ++y, y++); //1  真正的逗号表达式 
	n2 = x++, ++y, y++; //1 (n2 = x++), y++, ++y ps:=的优先级比逗号高
	printf("n1: %d\nn2: %d\n",n1,n2);
	printf("%d\n",(x++, ++y, y++)); //5 
	return 0;
}

注意前置++和后置++的区别; 注意其他运算符带来的影响

例:从键盘接收数字并累计求和(逗号表达式改写)

#include<stdio.h>
int main()
{
	int n = 0;
	int sum = 0;
	printf("请输入整形数列以空格间隔,以0结束:");
	while((scanf("%d",&n)) &&n != 0) //每次进入前,先输入n 再比较
	{
		sum += n;
	}
	printf("sum = %d\n",sum);
	return 0;
}

3.do — whlie

	do
	{
		循环语句;
		自增/减;
	}while(判断语句)

例:计算输入整型数值的位数

#include<stdio.h>
int main()
{
	int i = 0;
	int n,m;
	printf("请输入一个整型数值:");
	scanf("%d",&n);
	m = n;
	do
	{
		++i;
		n = n / 10;
	}while(n > 0);
	printf("%d 是 %d位数",m,i);
	return 0;
}

三、跳转语句

1.break

用于switch语句和循环语句中,跳出switch语句、终止循环,执行后边的语句
在这里插入图片描述

2.continue

只能用于循环语句,且一般仅用于for 循环;用来终止本次循环开始下次循环。(而break是结束整个循环)
在这里插入图片描述

3.goto

goto语句一般与标号语句一起使用,控制程序从goto语句的地方跳转到标号语句处

#include<stdio.h>
int main()
{
	for(int i=0; i<100; ++i)
	{
		for(int j=0; j<100; ++j)
		{
			for(int k=0; k<100; ++k)
			{
				goto input;
			}	
		}
	}
	input:
	printf("main end\n");
	return 0; 
}

结果:
在这里插入图片描述

4.return

用于结束函数的执行,返回调用者,如果是主函数,则返回至操作系统(终止程序的执行)

exit

  1. 定义于<stdlib.h>头文件中

  2. exit(0) 或 exit(EXIT_SUCCESS) 表示程序正常结束
    exit(1) 或 exit(EXIT_FAILURE) 表示程序非正常结束

  3. EXIT_SUCCESS 和 EXIT_FAILURE 都是定义在<stdlib.h>中的宏;EXIT_SUCCESS = 0 ; EXIT_FAILURE = 1。

return和exit的区别:
无论在哪个函数中调用exit程序都会结束;而只有在main函数中调用return函数才会导致程序终止

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值