C语言---分支与循环

目录

C语言中的结构

分支语句(分支结构)

if语句:

                1.if语句的语法形式

                  2.if …else…语句

                 3.分支中的多条语句

                 4.嵌套if

                 5.悬空else

   switch语句:

                       1.switch语句的语法形式

                       2.if语句和switch语句的对比

                       3.switch语句中的break

                      4.switch语句中的default

循环语句(循环结构)

   while循环

   for循环

   do-while循环

break和continue语句在循环中的应用

goto语句(C语言中特别的语法)

结束语


C语言中语法结构

  C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实 现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种 结构的组合。下面我们详细讲解一下选择结构和循环结构

分支语句(选择结构)

  人的一生面临着很多选择,像考上大学后可以选择专心致志地学,也可以选择碌碌无为地混。但不同的选择,沿途会有不同的风景,最终也会有不同的结局。在程序设计中,存在着同样的问题,需要根据不同的选择采取不同的解决方案,最终得到不同的结果,这就是分支结构的核心思想。

if语句:

 1.if语句的语法形式

1   if(表达式)

2    语句;

表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行

  2.if …else…语句

1    if(表达式)

2        语句1;

3  else

4         语句2;

语义为:如果表达式的值为真,则执行语句1,否则执行语句2。其分支形式适用于条件成立与否均需进行操作,但操作不同的情况。

3.分支中的多条语句

默认在if和else语句中默认都只控制一条语句,如果我们要if语句同时控制两个语句,怎么办呢?那就使用{}将代码括起来,else后同样如此。if和else后使用{}控制多条语句--这个块也叫:程序块,或者复合语句。

 4.嵌套if

if语句的双分支和单分支都是处理二选一的情况,但实际应用往往需要处理多(三或三以上)选一的情况,则可以用if语句的嵌套形式。if语句的嵌套形式是指if语句基本形式中的语句1或语句2又是一个if语句。在if  else语句中,else可以与另一个if语句连用,构成多重判断。

在 C 语言中,嵌套 if 语句是指在一个 if 语句中包含另一个 if 语句。下面是一个简单的例子:

#include <stdio.h>
int main() 
{
    int age;

    printf("请输入你的年龄:");
    scanf("%d", &age);

    if (age >= 18)
    {
        printf("你已经成年了!\n");

        if (age >= 21) 
            {
            printf("你已经可以合法饮酒了!\n");
           }
    } 
    else {
        printf("你还未成年!\n");
    }

    return 0;
}
 

 5.悬空else

谨记if与else的配对原则为:本层就近,即else总是跟最近的if匹配。

本例使用的是“单分支if嵌套双分支if”形式,根据“本层就近”配对原则,else与第二个if是一对。

# include <stdio.h> int main(){
float score; int flag;
printf("请输入课程原始成绩:"); 
scanf("%f",&score);
printf("是否为特长生:(1:是,0:否)"); 
scanf("%d",&flag);
if (flag==1&&score<80)	/
    if (score*1.4<80)
	score=score*1.4;
else
score=80;	
printf("最终成绩为:%.2f\n",score);}

switch语句:

switch语句是一种特殊形式的if…else结构,用于判断条件有多个结果的情况。它把多重的else  if改成更易用的形式。

1.switch语句的语法形式

​switch (expression) {
case constant_expression1:
statements1; break;
case constant_expression2:
statements2; break

;case constant_expressionN:
statementsN; break; default:
default_statements;}

其中,expression 是一个整数表达式, constant_expression1 、 const ant_expression2等是常量表达式, statements1、 statements2 等是语句序列。break 语句用于结束 case 语句块的执行。default 语句块是可选的,如果没有匹配的case 常量表达式,则执行default 语句块。

注意:1.switch后的expression必须是整形表达式 2.case后的值,必须是整形常量表达式

2.switch语句中的break

switch 语句也是分⽀效果的,只有在 switch 语句中使⽤ break 才能在跳出 switch 语 句,如果某⼀个 case 语句的后边没有 break 语句,代码会继续玩下执⾏,有可能执⾏其他 case 语句中的代码,直到遇到 break 语句或者 switch 语句结束。就⽐如上⾯的代码就执⾏了 case 2 中的语句。 所以在 switch 语句中 break 语句是⾮常重要的,能实现真正的分⽀效果。 当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了。

3.switch语句中的default

在C语言中,switch 语句中的 default 子句是可选的。如果在switch 语句中没有匹配的case 子句,则执行default 子句中的代码。

以下是一个使用switch语句中的default子句的例子:

#include <stdio.h>
int main() {
    int number;

    printf("请输入一个数字(1-5):");
    scanf("%d", &number);

    switch (number) {
    case 1:
        printf("你输入的数字是 1。\n");
        break;
    case 2:
        printf("你输入的数字是 2。\n");
        break;
    default:
        printf("无效的输入。\n");
    }

    return 0;
}
 

在这个例子中,我们首先使用 scanf 函数获取用户输入的数字。然后,我们使用一个 switch 语句来根据输入的数字打印相应的消息。如果输入的数字不在 1 到 5 之间,则执行 default 子句,打印一条错误消息。请注意, default 子句通常用于处理意外情况或错误情况,例如输入的值不在预期范围内。在实际编程中,应该尽量避免使用 default 子句,而是应该使用更明确的错误处理机制。

在switch语句中case语句和default语句是没有顺序要求的,只要你的顺序满足实际需求就可以。不过我们通常把default子句放在最后处理。

循环语句(循环结构)

在编程界有一句名言:懒惰是程序员美德的第一要素。这里所谓的“懒惰”,并不是不爱劳动不学习、不思进取,而是指写尽量少的代码达到同样甚至更好的目标。因此,懒惰的程序员更善于归纳总结,寻找规律,利用“循环”解决问题。下面让我们来认识3种循环吧!

while循环

 while 循环是一种在程序中重复执行一段代码的控制结构,只要条件为真,就会一直执行循环体中的代码。 while 循环的语法如下:

   while(condition)

{   //循环体   }

其中 condition 是一个布尔表达式,它的值决定了循环是否执行。循环体是要重复执行的代码块。

以下是一个使用 while 循环的示例:

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

在这个示例中,我们使用 while 循环来打印数字 0 到 9。循环的条件是 i < 10 ,只要 i 小于 10,就会执行循环体中的代码。在循环体中,我们打印出当前的 i 值,并将 i 加 1。当 i 大于或等于 10 时,循环结束。

请注意,在 while 循环中,条件的求值是在每次循环执行之前进行的。如果条件为假,则循环不会执行,程序会继续执行循环后面的代码。如果条件一直为真,则循环会一直执行,直到条件变为假为止。

for循环

 for 循环是另一种在程序中重复执行一段代码的控制结构,它通常用于迭代一个数组或其他可迭代对象。for 循环的语法如下:

 for (初始化表达式; 条件表达式; 更新表达式) {
    // 循环体
}

其中,初始化表达式在循环开始前执行一次,通常用于初始化循环变量。条件表达式在每次循环执行前进行求值,如果条件为真,则执行循环体中的代码。更新表达式在每次循环执行后执行,通常用于更新循环变量。

以下是一个使用 for 循环的示例:

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

在这个示例中,我们使用 for 循环来打印数字 0 到 9。循环的初始化表达式是 i = 0 ,它将 i 初始化为 0。条件表达式是 i < 10 ,只要 i 小于 10,就会执行循环体中的代码。更新表达式是 i++ ,它将 i 加 1。每次循环执行后, i 的值都会增加 1,直到 i 大于或等于 10 时,循环结束。

请注意,在 for 循环中,初始化表达式、条件表达式和更新表达式都是可选的,可以根据需要省略或修改。如果省略初始化表达式,则循环变量在循环开始前不会被初始化。如果省略条件表达式,则循环会一直执行,直到使用 break 语句或 return 语句退出循环。如果省略更新表达式,则循环变量在循环执行后不会被更新。

do-while循环

do-while 循环是一种在程序中重复执行一段代码的控制结构,与 while 循环类似,不同的是 do-while 循环会先执行循环体中的代码,然后再检查条件。do-while 循环的语法如下:

do {
    // 循环体
} while (condition);

其中,循环体是需要重复执行的代码块, condition 是一个布尔表达式,它的值决定了循环是否执行。以下是一个使用 do-while 循环的示例: 

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

    return 0;
}

在这个示例中,我们使用 do-while 循环来打印数字 0 到 9。循环的条件是 i < 10 ,只要 i 小于 10,就会执行循环体中的代码。在循环体中,我们打印出当前的 i 值,并将 i 加 1。每次循环执行后, i 的值都会增加 1,直到 i 大于或等于 10 时,循环结束。

请注意,在 do-while 循环中,条件的求值是在循环体执行后进行的。这意味着无论条件的值是什么,循环体都会至少执行一次。如果条件为真,则循环会一直执行,直到条件变为假为止。

break和continue语句在循环中的应用

 break 和 continue 语句是在循环中常用的控制语句,它们用于控制循环的执行流程。

-  break 语句: break 语句用于立即退出循环。当在循环中遇到 break 语句时,循环会立即结束,程序会继续执行循环后面的代码。使用 break 语句可以在满足特定条件时快速退出循环。

-  continue 语句: continue 语句用于跳过当前循环迭代中的剩余代码,并立即进入下一次循环。当在循环中遇到 continue 语句时,循环不会结束,而是跳过当前迭代中的剩余代码,直接进入下一次迭代。使用 continue 语句可以在特定条件下跳过不必要的代码,提高循环的效率。

以下是一个使用 break 和 continue 语句的示例:

 #include <stdio.h>int main() {
    int i;for (i = 0; i < 10; i++) {
        if (i == 5) {
            printf("跳过第 5 次迭代。\n");
            continue;
        }  if (i == 7) {
            printf("退出循环。\n");
            break; }

   printf("%d ", i); } return 0;
}

在这个示例中,我们使用一个 for 循环来输出从 0 到 9 的整数。在循环中,我们使用 if 语句来检查当前的 i 值。如果 i 等于 5,我们使用 continue 语句跳过当前迭代。如果 i 等于 7,我们使用 break 语句退出循环。在其他情况下,我们打印出当前的 i 值。运行这段代码,你将得到以下输出:0 1 2 3 4 跳过第 5 次迭代。 6 退出循环。这表明当 i 等于 5 时, continue 语句跳过了第 5 次迭代,当 i 等于 7 时, break 语句退出了循环。

goto语句(C语言中特别的语法)

 goto 语句是一种在程序中跳转到指定行的控制语句。它允许程序直接跳转到程序中的另一个位置,而无需按照正常的控制流程执行。goto 语句的语法如下:

 goto label;

其中, label 是一个标识符,它标识了程序中的一个位置。在 goto 语句后面的代码会被跳过,程序会直接跳转到 label 标识的位置继续执行。以下是一个使用 goto 语句的示例:

#include <stdio.h>

int main() {
    int i = 0;  loop:
        printf("%d ", i);
        i++;
        if (i < 10) {
            goto loop;
        }  return 0;
}

在这个示例中,我们使用 goto 语句来实现一个简单的循环。在 loop 标签处,我们打印出当前的 i 值,并将 i 加 1。然后,我们检查 i 是否小于 10。如果是,我们使用 goto 语句跳转到 loop 标签处,继续执行循环。当 i 大于或等于 10 时,循环结束。

请注意, goto 语句可能会使程序的控制流程变得复杂和难以理解,因此在实际编程中应该尽量避免使用 goto 语句。使用结构化的控制结构(如 if 、 while 、 for 等)可以使程序更易于理解和维护。

结束语

 学习 C 语言是一次激动人心的旅程,它将为你打开计算机科学世界的大门。虽然学习 C 语言可能会有一些挑战,但请相信自己的能力。坚持下去,不断练习,你将逐渐掌握这门语言,并能够实现自己的创意。学习是一个持续的过程,不要害怕犯错误。相信自己的能力,愿我们在学习 C 语言的道路上取得成功!加油!

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值