语句、分支与循环详解

一、C语句概述

  • 一个C语言程序中由若干个函数组成,每个函数的函数体是由声明部分和执行部分组成。
	int main(void)//函数的头部
	{	
		int i = 0;//声明部分,不是语句
		if(){}//语句
		printf();//语句
	}
  • 一个程序是由若干个源文件程序组成,一个源文件程序是由头文件、预处理、全局变量和若干个函数组成,一个函数由若干个语句和若干个声明部分组成。
    图片:
    C语言程序结构
  • C语句可以大致分为五类:分支与循环语句、库函数调用语句、表达式语句、复合语句、空语句。

1.1 分支与循环语句

  • 分支与循环语句也称为控制语句,用于完成一定的控制功能。

分支与循环语句大致分为九种:if-else语句、switch语句、break语句、continue语句、goto语句、while语句、do-while语句、for语句、return语句。

1.2 函数调用语句

  • 函数调用语句由函数名、实际参数和分号组成。

一般形式为:函数名();

	printf();
	strlen();
	scanf();
	time();
	rand();

1.3 表达式语句

  • 表达式语句一般由表达式组成。

一般形式为:表达式;

	x = i + j;

1.4 复合语句

  • 复合语句是由大括号将多个语句包括起来。

一般形式为:
{
语句1;
语句2;


}

	{
		x = y + z;
		printf("%d\n",x);
	}

1.5 空语句

  • 只有分号“;”的语句为空语句

一般形式为:;

  • 空语句为什么不执行的语句。

二、程序的基本结构

  • 程序一般分为三种基本结构:顺序结构、选择结构、循环结构。

2.1 顺序结构

  • 顺序结构是按照先后顺序逐步完成程序任务。
    顺序结构

2.2 选择结构

  • 选择结构是进行判断和分支。
    选择结构

2.3 循环结构

  • 循环结构,同时也是重复结构,在一定条件下反复执行某一部分的程序。
    循环结构

三、结构中的常见操作符

3.1 关系运算符

  • 关系运算符是主要用于比较,关系运算符所在的关系表达式为关系表达式。

关系运算符:
1.< 小于运算符
2.> 大于运算符
3.<= 小于等于运算符
4.>= 大于等于运算符
5.== 相等运算符
6.!= 不相等运算符

  • 关系表达式中,一般返回0或1表示真假。在C语言中0表示假,非0表示假。

3.2 条件运算符(三目运算符)

  • 条件运算符,也称三目运算符或者三元运算符。
  • 条件运算符在执行时,如果exp1为真,执行exp2,如果exp1为假,执行exp3。

一般形式为:exp1?exp2:exp3

  • 条件运算符可以作为if- else语句的一种便捷方式。

3.3 逻辑运算符

  • 逻辑运算符提供了更加复杂的逻辑判断功能。

逻辑非运算符:!
逻辑与运算符:&&
逻辑或运算符:||

  • 逻辑非运算符用于改变单个表达式的真假。
  • 逻辑与表达式用于并且(并集),逻辑与表达式的左右俩侧都为真,则为真,有一个或着一个以上假则为假。
  • 逻辑或表达式用于或者(交集),逻辑或表达式的左右俩侧都为假,则为假,有一个或者一个以上真则为真。

逻辑运算符与与其他运算符的先后顺序为:逻辑非运算符 > 算数运算符 > 关系运算符 > 逻辑与运算符 > 逻辑或运算符 > 赋值运算符

四、if-else语句

4.1 单分支if语句

格式:
if(运算符)
{
语句;
}

  • 单分支if语句在if运算符判断结束后,如果为真,进入if语句;如果为假,跳过语句。
	int i = 0;
	scanf("%d",&i);
	if(i>10)//5真15假
	{
		i = 50;
	}

4.2 双分支if-else语句

格式:
if(运算符)
{
语句;
}
esle
{
语句;
}

  • 双分支if-else语句在if运算符判断结束后,如果为真,进入if语句;如果为假,进入else语句
	//判断俩个数的最小值
	int a = 3;
	int b = 18;
	int min = 0;
	if (a > b)
		min = b;
	else
		min = a

4.3 多分支if-else-if语句

格式:
if(运算符1)
{
语句;
}
else if(运算符2)
{
语句;
}
else
{
语句;
}

//写代码将三个整数数按从大到小输出。
#include<stdio.h>
int main(void)
{
	int a = 0;
	int b = 0;
	int c = 0;
	scanf("%d %d %d", &a, &b, &c);
	if (a > b)
	{
		if (b > c)
			printf("%d %d %d", a, b, c);
		else if(c>a)
			printf("%d %d %d", c,a, b);
		else
			printf("%d %d %d", a,c, b);	
	}
	else //b>a
	{
		if (a > c)
			printf("%d %d %d", b, a, c);
		else if (c>b)
			printf("%d %d %d", c, b, a);
		else
			printf("%d %d %d",b,c,a);
	}
	return 0;
}
  • 多分支if-else-if语句在if运算符1判断结束后,如果为真,进入if语句;如果为假,执行if运算符2,在if运算符2判断结束后,如果为真,进入else-if语句,如果为假,进入else语句。

五、switch语句

  • switch语句也是分支语句的一种,不同于if-else的判断,switch执行的是选择。

一般形式为:
switch(表达式)
{
case 常量表达式1:
语句1;
case 常量表达式1:
语句2;


default:
语句n;
}

  • 表达式一般为整形常量表达式,case后面的常量表达式应该与switch对应。
  • 在执行case选择时,如果case都没有满足条件,编译器会执行default语句。default和case的顺序可以更换。
  • 在执行switch语句时,一般会搭配break使用,后文会提到。
#include<stdio.h>
int main(void)
{
	int imput = 0;
	ptintf("*********  1.进入  *********\n");
	ptintf("*********  0.退出  *********\n");
	scanf("%d",&imput):
	switch(imput)
	{
		case 1:
		printf("进入\n");
		break;
		case 0
		printf("退出\n");
		break;
		default:
		printf("输入错误\n");
		break;
	}
	return 0;
}

六、循环辅助break和continue

  • break语句和continue语句可以根据循环体中的测试结果来忽略一部分循环内容,甚至结束循环。

6.1 break语句

  • break语句仅在switch语句和循环语句中使用。执行break语句会之间跳出循环,执行循环下一个语句。

一般形式为:
break;

6.2 continue语句

  • continue在执行时会逃过本次循环下面的语句,执行下一次循环。

一般形式为:
continue;

七、goto语句

  • goto语句是一种传送语句,一般不建议使用,而且是谨慎使用。

一般形式为:
goto part;
part:

	if()
	{,,,
		if()
		{...
			if()
			{
			...
			goto palce;
			}
		}
	}
place:

八、while循环语句

  • while循环语句是一种先判断再执行的语句,属于“当型”循环结构。

一般形式为:
while(表达式)
{
语句;
}

while循环语句

#include<stdio.h>
//打印1-10的数字
int main(void)
{
	int i = 1;
	while(i<=10)
	{
		printf("%d\n",i):
		i++;
	}
	return 0;
}

九、do-while循环语句

  • do-while循环语句是一种先循环后执行的语句,属于是“直到型”循环结构。

一般形式为:
do
{
语句;
}while(表达式);

do-while语句

#include<stdio.h>
//打印1-10的数字
int main(void)
{
	int i = 1;
	do
	{
		printf("%d\n",i);
		i++;
	}while(i<10);
	return 0;
}

十、for循环语句

  • for循环在C语言中是经常被使用的一个语句。

一般形式为:
for(表达式1;表达式2;表达式3)
{
语句;
}

  • 表达式1是初始化部分,用于初始化循环变量;表达式2是条件判断语句,用于判断循环的结束;表达式3是调整语句,用于循环的调整。
    -for循环语句
//1到 100 的所有整数中出现多少个数字9
#include<stdio.h>
int main(void)
{
	int i = 0;
	int cet = 0;
	for (i = 1; i <= 100; i++)
	{
		if (i/10 == 9)
			cet++;
		if (i % 10 == 9)
			cet++;
	}
	printf("%d", cet);
	return 0;
}
  • 35
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值