C语言 分支循环语句

基本结构介绍

在c语言中存在三种结构:顺序、选择、循环。

1、循序结构:

顺序结构是最基本的一种程序结构,它按照代码的先后顺序执行。在顺序结构中,程序的执行流程是线性的,从头到尾按顺序执行。

示例:

#include<stdio.h>
int main()
{
	int i = 0;
	printf("%d\n", i);
	i = 1;
	printf("%d\n", i);
	return 0;
}

 这里程序会依次打印0 1。

 2、选择结构:

选择结构是一种根据条件选择执行不同代码的程序结构。在选择结构中,程序会根据某个条件的结果选择执行不同的代码分支。

示例:

#include<stdio.h>
int main()
{
	int x = 0;
	scanf("%d", &x);
	if (x == 0)
	{
		printf("摆烂");
	}
	else
	{
		printf("好好学习");
	}
	return 0;
}

输入 0 会打印:摆烂,输入 1 会打印:好好学习。根据条件判断来运行条件语句

3、循环语句:

循环结构是一种重复执行某些操作的程序结构。在循环结构中,程序会反复执行一段代码,直到满足某个条件时停止循环。

示例:

#include<stdio.h>
int main()
{
	int i = 1;
	while (i <= 5)
	{
		printf("%d ", i);
		i++;
	}
	return 0;
}

这里会打印:1 2 3 4 5;直到不满足循环条件时终止循环

 c语言中的控制语句

条件语句:if,if else,switch

循环语句:for,while,do-while

跳转语句:continue,goto

返回语句:return(在此不详细介绍)

其他:break

if语句介绍

if语句形式:

if(exp)//exp为expression的缩写,意思为表达式。
{
   //exp语句为真时执行
}

注:在c语言中 布尔值0表示假,非0表示真

示例:

#include<stdio.h>
int main()
{
	int i = 0;
	if (i == 0)
	{
		printf("i = %d", i);
	}
	return 0;
}

运行结果:

当exp语句为真时执行{}内的语句,打印i 的值。

 if else语句介绍

if else语句形式:

if(exp1)
{
   //exp1为真时执行
}
else if(exp2)//非必须语句
{
    //exp2为真时执行
}
else if(expn)
{
    //expn为真时执行
}
else
{
   //exp语句全为假时执行
}

示例:

#include<stdio.h>
int main()
{
	int i = 1;
	if (i == 0)
	{
		printf("i = %d", i);
	}
	else
	{
		printf("i的值非零\n");
		printf("i的值为%d", i);
	}
	return 0;
}

运行结果:

这里i的值不满足if的条件语句,满足了else的条件,运行了else的条件语句。

 示例:

#include<stdio.h>
int main()
{
	int i = 1;
	if (i != 0)
	{
		printf("i = %d\n", i);
	}
	else if( i < 2)
	{
		printf("i的值非零\n");
		printf("i的值为%d", i);
	}
	return 0;
}

运行结果:

注意i 同时满足了if 和 else if 的条件,但只执行的if的条件语句。由此在else if语句中,输入值满足多个条件时,按循序语句来判断优先级。

 switch语句介绍

switch语句形式:

switch(exp)
{
    case exp1  ://case 后接常量表达式
    {
        //条件语句1
        //break(选择性添加)
    }
    case exp2  :
    {
        //条件语句2
    }
    case expn  :
    {
        //条件语句n
    }
    default :
    {
        //其他语句
    }
}

示例:

#include<stdio.h>
int main()
{
	int i = 1;
	switch (i)
	{
	case 1:
	{
		printf("a\n");
	}
	case 2:
	{
		printf("b\n");
	}
	default :
	{
		printf("其他");
	}
	}

	return 0;
}

运行结果:

 注意上面运行结果不仅执行了case 1 还执行了 case 2,这是因为switch语句中,语句会按进入语句依次运行,不会直接退出。如果想执行单个语句需要在语句中添加break。

示例:

#include<stdio.h>
int main()
{
	int i = 1;
	switch (i)
	{
	case 1:
	{
		printf("a\n");
		break;
	}
	case 2:
	{
		printf("b\n");
		break;
	}
	default :
	{
		printf("其他");
	}
	}

	return 0;
}

运行结果:

 程序运行完case1就结束了语句,用break终止switch语句是一种常见的设计需要

 for语句介绍

for语句形式:

for(exp1;exp2;exp3)
{
    //条件语句
}

运行示意图:

示例:

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

 运行结果:

while语句介绍

while语句形式:

while(exp)
{
    //条件语句
}

运行示意图: 

 示例:
 

#include<stdio.h>
int main()
{
	int i = 0;
	while (i <= 5)
	{
		printf("%d ", i);
		i++;
	}
}

运行结果:

 

 注意while循环开始会进行条件判断,可能不会进入循环。每次循环条件语句要不断趋近与判断语句exp,不然容易导致死循环。

do-while语句介绍

do-while语句形式:

do
{
    //条件语句
}
while(exp);

运行示意图:

 循环特点:不论输入是否满足条件都会执行一次条件语句,判断在末尾,可以运用在一些需要先执行再判断的场景。

 示例:

#include<stdio.h>
int main()
{
	int i = 0;
		do
		{
			i++;
			printf("%d", i);
		} while (i < 1);
	return 0;
}

 运行结果:

 当程序运行到while时已经不满足条件了,但还执行了一次条件语句。

各种语句的嵌套使用

嵌套(nested)是指在一个代码块内部包含另一个代码块的情况。嵌套允许将一个控制结构(如if语句、while循环等)放在另一个控制结构的代码块中。

题目:打印100-200的质数

示例:

#include<stdio.h>
int main()
{
	int i = 100;
	while (i <= 200)
	{
		for (int k = 2; k < i; k++)
		{
			if (i % k == 0)
			{
				break;
			}
			if (k == i - 1)
			{
				printf("%d ", i);
			}
		}
		i++;
	}
	return 0;
}

上述代码运用了while for if 语句的嵌套使用。控制语句的嵌套使用时编程学习中非常重要的一个环节,需要不断学习。

 题目:打印100 - 200 中可以被三整除的数

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 100; i <= 200; i++)
	{
		if (i % 3 == 0)
		{
			printf("%d ", i);
			i += 3;
			continue;
		}
	}
	return 0;
}

运行结果:

 注意此结果和我们预期的不同,部分三的倍数没有被打印出来。

调试过程中发现continue语句不能跳过for循环中的I++语句。修改后的代码为:

#include<stdio.h>
int main()
{
	int i = 0;
	for (i = 100; i <= 200; )
	{
		if (i % 3 == 0)
		{
			printf("%d ", i);
			i += 3;
			continue;
		}
		i++;
	}
	return 0;
}

此代码就可以满足我们的需求了,但是建议不要在for循环的条件语句内,改变初始值变量的值,容易导致错误。以及for循环的条件为空容易导致错误。

以上为个人学习的部分见解,如有错误和不足,可以提出相关建议。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值