C语言——控制语句

C语言

  • 知识基础
  • 控制语句
  • 函数
  • 输入输出
  • 指针和数组
  • 用户自定义数据类型
  • 文件操作


一、结构化编程

早期编程语言由汇编语言升级而来,编程风格比较随意,程序运行跳转只要符合语法可以任意跳转,使得代码阅读和维护变得十分困难,所以提出结构化编程的设计理念,所有程序必须符合规定的基本结构(顺序结构、选择结构、循环结构)。
顺序结构:最常见、最简单的结构,只需要将C语句按执行顺序依次写下即可,执行顺序是自上而下;例:

#include<stdio.h>

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

代码规范化:

  • 空行,在定义变量,声明等语句之后空行,与执行代码分开;在函数与函数之间空行;这样让你的程序布局更加合理、清晰;
  • 空格,在关键字、运算符等需要突出的部分留出空格,应当紧凑的部分适当删掉空格否则显得冗长,例如for(int i; i <= n; i++) { }
  • 缩进,缩进要清晰,成对的括号应当对齐;
  • 代码行,一行只书写一个C语句;
  • 注释,对于自定义的结构,应该注释其大体功能,便于代码阅读。
//单行注释
/*
多行注释
多行注释
*/

控制语句被用来实现以下两种结构!!!

二、选择结构

1. if 选择结构

一般形式:

  1. if(表达式) 语句1
  2. if(表达式) 语句1 else 语句2
  3. if(表达式1) 语句1 else if(表达式2) 语句2 else if... else 语句n(特殊的嵌套)

表达式:可以是boolint型,根据表达式结果的不同选择执行不同的分支;
语句:分支语句只能有一条(复合语句也是一条),注意用大括号的使用;这一条分支语句可以是任何的C语句,这也就支持了选择结构的嵌套。
对于多个ifelseelse的匹配符合就近原则

#include<stdio.h>

int mian(){
	int a = 0;
	if(a == 0){//求表达式“a==0”的值为true
		printf("False");//本程序中表达式结果为真,执行if后的语句,输出“False”
	} else {
		printf("True");//没有选择的分支会被忽略
	}
	if(a){//求表达式“a”的值为0,等同于bool的false
		printf("False");//本程序中表达式false,本分支会被忽略
	} else {
		printf("True");//不执行语句1,就会转到else后的语句执行,程序输出“True”
	}
	return 0;
}

三目运算符 ? :就等价于if else,同样支持嵌套;

2.多分支选择结构

一般形式:

switch(表达式){
	case 常量1 : 语句1
	case 常量2 : 语句2
	case 常量... : 语句...
	case 常量n : 语句n
	default : 语句n+1
}

表达式:C语言规定switch语句选择的表达式值数据类型只能为intchar
常量:均为整型数据;
语句:一个case分支后面可以跟上不止一条C语句,这些C语句会顺序执行,且这里的顺序执行有 “穿透效果” ,需要使用break关键字加;构成的控制语句及时跳出分支选择当中。

#include<stdio.h>

int main(){
	char ch = 'b';
	int n = 0;
	switch(a){
		case 'a' : n++;
		case 'b' : n++;//选中分支,n==1
		case 'c' : n++;//穿透 n==2
		case 'd' : n++;//n==3
				break;//跳出了分支选择
		default : n=0;//不会被执行
	}
	printf("%d", n);//输出结果为 3
	return 0;
}

选择结构的重点在于控制程序跳转方向的表达式的值,由于多层嵌套的存在,让程序分析变得复杂,我们一定要养成良好的习惯和尽量优化、简化自己的判断条件,嵌套深度保持在三层以下。

三、 循环结构

1.while 循环

一般形式:

  • do 语句 while(表达式);
  • while(表达式) 语句

这两种结构的循环体(循环结构中的语句称为循环体)一致,只是表达式判断的顺序不同引起不同,while在前首先执行表达式判断,循环体可能不被执行;while在后,循环体至少会被执行一次,才会进行表达式判断;
对于循环体,必须是一条语句(复合语句也是一条语句)构成;
对于表达式,有两种情况,必须符合二者其一:

  • 循环体中的语句会改变表达式中的变量,使表达式结果发生改变;
  • 循环体中包含break;语句分支,且执行中会被选择;

如果以上两种情况都不满足,程序将进入死循环,我们的程序将产生错误不能正常运行。

2.for 循环

一般形式:
for(表达式1;表达式2;表达式3) 语句4
for循环中三个表达式作用是参与循环控制,虽然不参与循环控制也可以写入,但会导致可读性差,代码混乱,所以一般不会这样做。
表达式1:循环变量赋初值,这里可以有多个表达式,用逗号隔开;
表达式2:循环条件,循环控制的关键语句,等价于while语句中的表达式;
表达式3:循环变量增量,理论上循环体都可以全部写入,用逗号隔开;
以上三个表达式中1、3可以缺省,则与while形式完全等价

for(表达式1;表达式2;表达式3) 语句

等价于

表达式1;
while (表达式2){
	语句
	表达式3;
}

3. 改变循环状态

在特定情况之下,我们并不需要对所有的情况全部进行循环,只需要达到某种状态就符合要求可以结束循环?或者我们通过判断在当前情况下不需要执行循环体操作,但仍然希望继续循环,怎么实现?
break;
continue;
这两条控制语句的主要作用就是提前终止循环提前结束本次循环,需要注意的是它们作用的对象是最近的大括号内的循环语句,在多层循环嵌套中只跳出本层!(break还用于跳出多分支选择语句)。
return 参数;
goto
以上两条语句也属于控制语句,可以实现程序的转向。
合理使用四条转向语句,不能随意破坏程序的结构化。

四、控制语句的嵌套

以上我们总结了基本控制语句的一般形式和基本用法,C语言之所以能够灵活的实现各种算法,功能,有赖于这些结构的嵌套使用
关键点:选择结构、循环结构执行语句都为单条,一般为复合语句;

复合语句:作为一条语句
{
 语句1
 语句2
 ...
}

关键点:判断条件的表达式,其值可以是boolint型。


练习

编程语言练习 / C语言

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值