C语言---04循环与分支

本文详细解析了编程中的关键结构,包括if-else、switch、for、while、dowhile循环,以及break、continue和goto语句的用法。通过实例演示,帮助理解多分支决策、控制流程和条件执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一 分支语句

(一)if

(二)if……else

(三)if...else if...else if ...else

(四) switch多分支结构

二 循环语句

(一) for循环

(二) while循环

(三) do while 循环

(四) 循环的嵌套

(五)作业

三 跳转语句

(一) break

(二) continue

(三) goto语句


一 分支语句

(一)if

  • 表达式为真才会执行语句1
if(表达式)
{
    语句1;
}

(二)if……else

  • 如果项目的只有两种结果且不会同时出现,选择if……else

  • if……else的判断逻辑与条件运算符(?:)类似

  • 需要注意if和else的配对问题 ,else总是和它前面第一个没有配对过的if配对,并且一个else只能和一个if配对

(三)if...else if...else if ...else

  • 如果一个项目有多个结果且不同时出现,选择if...else if...else if ...else
  • 只有前面的条件不满足才会判断后面的条件,如果前面的条件满足,后面的条件不管真假都不会执行
if(表达式1)
{
    语句1;
}
else if(表达式2)
{
    语句2;
}
else // 可省略
{
    语句n;
}

(四) switch多分支结构

  • case之后的条件值只能是常量或者常量表达式,且不能重复,取值应该是确定的唯一的

 switch (x) // 开关语句
 {
 case 1:
     printf("打开了房间1的开关,进入了房间1,捡到了一个武器。\n");
     break;      
 // 所有case之后的值都不满足,则执行default之后的语句
 default: 
     printf("输入错误,只有5个房间,不存在房间%d。\n", x);
     break; // 用于跳出switch结构和循环结构
 }
char ch = 0;
ch = getchar();
switch(ch)
{
case 'w'||'W': // 这里不会输出,因为||是逻辑运算,结果为一个不等于'w'的数值,不能对应匹配
    printf("向上移动");
    break;
case 'w':
    printf("向上移动");
    break;
}

二 循环语句

  • for循环和while循环是当型循环:先判断循环条件是否满足,如果满足再执行循环体

  • do while循环是一种直到型循环:先执行一次循环体,再判断条件是否满足,如果满足继续执行循环体,不管条件满足与否,循环体至少会被执行一次

(一) for循环

  • for( 初始语句; 循环条件 ; 步进条件){循环语句}
  • 初始语句:只在循环开始时执行一次(可以提前初始化变量)
  • 循环条件:每次循环都要执行。如果循环条件为真,进入循环体;如果为假,退出循环
  • 步进条件:每次循环结束的时候 要执行的语句
  • 如果循环的次数是确定的,建议选择for
 int n = 1;
 for (; n <= 10; n++) // 循环输出数字1~10
 {
     printf("%d\n", n);
 }
 int n = 1;
 for (;;) // 是死循环
 {
     printf("%d\n", n++); // 如果for省略步进条件必须在循环语句中实现步进动作
     if (n > 10) 
     {
         return 0; // 必须在循环语句中实现 退出循环的条件
     } 
 }

(二) while循环

  • while没有初始化语句,用户提前初始化好
  • while没有步进语句,用户必须在循环语句中写好步进语句
 int i = 1; // 提前初始化  
 while (i <= 100) // whlie之后的条件必须要有
 {
     printf("%d\n", i);
     i++; // 步进条件
 }
  • 如果循环的次数不确定,知道退出的条件,建议选择while

(三) do while 循环

 int j = 1;
 do
 {
     printf("%d\n", j);
     j++;
 } while (j <= 100);

(四) 循环的嵌套

 /*输出一下图形:
   ******
   ******
   ******
   ******
   ******
   ******
 */
 for (int i = 0; i < 6; i++) // 双重循环嵌套   
 {   
     for (int i = 0; i < 6; i++)
     {
         putchar('*'); // 输出一个*
     }
     putchar('\n');
 }
 /*输出一下图形:
     ******
      ******
       ******
        ******
         ******
          ******
 */
 for (int i = 0; i < 6; i++)
 { 
     for (int j = i; j>0; j--)
     {
         putchar(' ');
         for (int k = 0; k < 6; k++)
             putchar('*'); // 输出一个*      
         putchar('\n');
     }
 }   
 /*输出一下图形:
     *
      **
       ***
        ****
         *****
          ******
 */
 for (int i = 0; i < 6; i++)
 { 
     for (int j = i; j>0; j--)
         putchar(' ');
         for (int k = 0; k <= i; k++)        
             putchar('*'); // 输出一个*
         putchar('\n');
 }
 // 循环的嵌套,外层循环执行一次,内层循环需要整个都执行完成,才会进入下次外层循环

(五)作业

  • 重复输入1~7的数值判断 星期几,注意输入0,就结束程序,如果是0或1~7以外的数,请提示“请重新输入有效数值”。
#include<stdio.h>

int main(int argc,char* argv[])
{
	int num=0;
	while(1)
	{
		printf("请输入数值:");
		scanf("%d",&num);
		if(num==0)
			return;
		else if(num<0||num>7)
			printf("请重新输入有效数值!");
	
		switch(num)
		{
		case 1:
			printf("星期一");
			break;
		case 2:
			printf("星期二");
			break;
		case 3:
			printf("星期三");
			break;
		case 4:
			printf("星期四");
			break;
		case 5:
			printf("星期五");
			break;
		case 6:
			printf("星期六");
			break;
		case 7:
			printf("星期天");
			break;
		}
		putchar('\n');
	}
}

三 跳转语句

(一) break

 // break用于跳出整个循环结构或switch多分支结构(if中不能使用)
 int n = 1;
 for (;;)
 {
     printf("%d\n", n++);        
     if (n > 10)
     break; // break跳出/结束整个循环
 }

(二) continue

// continue用于跳出一次循环结构的执行
 int i = 0;
 do // 输出1~100之间的所有偶数
 {
     if (i > 100)
         break;
     i++;    
     if (i % 2 != 0)
         continue; // 跳出本次循环,本次循环之后的语句不会被执行,继续下次循环
     printf("%d\n", i);
 } while (1);

(三) goto语句

  • 在程序语言中设置一个标记,可以使用goto语句跳转到标记的位置

int i = 1;
 I: // 标记
     printf("%d\n", i);
     i++;
     if (i<=10)
         goto I; // 跳转到标记I所在的位置
 // goto语句会打破结构化程序的顺序执行的规则,时程序的结构混乱,如果跳转不合理可能引起死循环,所以不建议使用
 // 使用goto语句跳出循环
 for (int i = 0; ; i++)
 {
     printf("%d\n", i);
     if (i > 100)
     goto end;
 }
 end:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盾山狂热粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值