跳转至

(2) C语言基础知识:控制结构和函数

控制结构和函数是C语言编程的两个基本概念,它们可以让程序具有更多的灵活性和可重复性。

控制结构

C语言中的控制结构有三种基本类型:顺序结构选择结构循环结构

顺序结构

是最简单的一种结构,程序按照语句的顺序依次执行;

语句1
语句2
语句3
...

选择结构

可以让程序在满足一定条件时执行不同的语句,常见的选择结构包括if语句和switch语句;

if (条件1)
{
    语句1
}
else if (条件2)
{
    语句2
}
else
{
    语句3
}

下面是一个简单的例子,展示了if语句的基本用法:

int x = 10;

if (x > 5)
{
    printf("x is greater than 5");
}
  • 在这个例子中,if语句判断变量x是否大于5,如果是,则执行printf语句打印"x is greater than 5"到屏幕上。如果条件不满足,则不执行printf语句。

下面是switch语句的语法格式:

switch (表达式)
{
case 常量1:
    语句1;
    break;
case 常量2:
    语句2;
    break;
...
case 常量n:
    语句n;
    break;
default:
    默认语句;
    break;
}

其中:

  • 表达式:switch语句要比较的表达式。
  • case常量:常量值,表示要比较的值。
  • 语句:与case常量匹配时执行的语句。
  • break:用于结束switch语句的执行。
  • default:与其他case常量不匹配时执行的语句。

switch语句首先求出表达式的值,然后依次与case常量进行比较。如果表达式的值与某个case常量相等,则执行相应的语句;如果表达式的值与所有case常量都不相等,则执行default语句。需要注意的是,在每个case语句中必须包含break语句,否则程序将会执行所有匹配的case语句。

下面是一个简单的例子,展示了switch语句的基本用法:

int day = 3;

switch (day)
{
case 1:
    printf("Monday");
    break;
case 2:
    printf("Tuesday");
    break;
case 3:
    printf("Wednesday");
    break;
case 4:
    printf("Thursday");
    break;
case 5:
    printf("Friday");
    break;
default:
    printf("Invalid day");
    break;
}
  • 在这个例子中,我们使用switch语句根据变量day的值来输出对应的星期几名称。switch语句首先检查day的值,然后根据匹配的case语句输出相应的星期几名称。如果day的值不匹配任何case语句,则执行default语句输出"Invalid day"

  • 需要注意的是,在switch语句中,每个case后面的语句都要以break语句结束,以确保程序不会继续执行下一个case语句。否则,程序会顺序执行每个case语句,直到遇到break语句或switch语句结束。

循环结构

可以让程序重复执行一段代码,常见的循环结构包括for循环、while循环和do-while循环。

  • 需要注意的是,在循环中可以使用breakcontinue语句来控制循环的行为:

    • break语句:可以立即终止循环
    • continue语句:可以跳过当前迭代,直接执行下一次迭代。
  • 这些语句可以帮助我们在循环中实现更加复杂的逻辑。

下面是for循环的语法格式:

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

其中:

  • 初始化表达式:在循环开始前执行的语句,用于初始化循环变量。
  • 条件表达式:在每次循环迭代开始前求值的表达式,如果表达式的值为真(非零),则执行循环体语句;否则终止循环。
  • 更新表达式:在每次循环迭代结束后执行的语句,用于更新循环变量的值。
  • 循环体语句:在每次循环迭代开始前执行的语句,可以是单条语句或复合语句(用大括号括起来的多条语句)。

for循环是C语言中最常用的循环结构之一,它可以帮助我们重复执行一段代码,并在循环内部控制循环变量的行为。

下面是for循环的一个例子:

for (int i = 0; i < 5; i++)
{
    printf("The value of i is %d\n", i);
}

在这个例子中,我们使用for循环打印变量i的值。for循环的语法包括三个部分:循环变量的初始化、循环条件的判断和循环变量的更新。在这个例子中,我们使用变量i作为循环变量,初始化为0,循环条件是i小于5,每次循环结束后将i加1。因此,循环会执行5次,分别输出i的值为0、1、2、3、4。

下面是while语句的语法格式:

while (条件)
{
    循环体语句
}

其中:

  • 条件:在每次循环开始前求值的表达式,如果表达式的值为真(非零),则执行循环体语句;否则终止循环。
  • 循环体语句:在每次循环迭代开始前执行的语句,可以是单条语句或复合语句(用大括号括起来的多条语句)。

while语句是C语言中最基本的循环结构之一,它可以根据条件重复执行一段代码,并在循环内部控制条件的变化。需要注意的是,在循环体中必须改变循环条件,否则程序将会进入死循环并一直执行下去。

下面是一个使用while循环的例子:

int i = 0;

while (i < 5)
{
    printf("The value of i is %d\n", i);
    i++;
}

在这个例子中,我们使用while循环打印变量i的值。while循环的条件是i小于5,每次循环结束后将i加1。因此,循环会执行5次,分别输出i的值为0、1、2、3、4。

需要注意的是,与for循环不同,while循环没有循环变量的声明和初始化语句。因此,在使用while循环时,需要手动初始化循环变量,并在循环体内更新循环变量的值,以避免进入死循环。

下面是do-while语句的语法格式:

do
{
    循环体语句
} while (条件);

其中:

  • 循环体语句:在每次循环迭代开始前执行的语句,可以是单条语句或复合语句(用大括号括起来的多条语句)。
  • 条件:在每次循环结束后求值的表达式,如果表达式的值为真(非零),则继续执行循环体语句;否则终止循环。

do-while语句和while语句类似,都是根据条件重复执行一段代码。不同的是,在do-while语句中,循环体语句至少会被执行一次,因为条件是在循环体执行结束后才进行判断。这意味着,无论条件是否满足,do-while循环都会至少执行一次。

需要注意的是,在使用do-while语句时,需要注意循环条件的设置,避免进入死循环。

函数

函数是C语言中的另一个基本概念,它可以让程序员将一段代码封装成一个独立的模块,并在需要的时候调用它。函数通常由函数头、函数体和返回值组成。

函数头指定函数的返回类型和参数类型,例如:

int add(int a, int b);

这个函数头指定了一个名为add的函数,它有两个int类型的参数a和b,返回值为int类型。

函数体包含了函数实际执行的代码,例如:

int add(int a, int b) {
    int result = a + b;
    return result;
}

这个函数体实现了两个数相加的操作,并将结果存储在result变量中,最后返回result的值。

下面是一个调用add函数的例子:

int sum = add(3, 5);
printf("The sum of 3 and 5 is %d", sum);

在这个例子中,add函数被调用,并将3和5作为参数传入。add函数返回它们的和8,并将8赋值给变量sum。最后,printf语句打印"The sum of 3 and 5 is 8"。

总结

介绍了C语言中的控制结构和函数。控制结构是C语言中用于控制程序流程的重要工具,包括顺序结构、选择结构和循环结构。顺序结构是指按照语句的书写顺序依次执行每条语句;选择结构是指根据条件执行不同的语句;循环结构是指重复执行某些语句直到满足某个条件为止。

函数是C语言中的基本模块,可以将代码分为多个逻辑部分,提高代码的重用性和可读性。在函数中,我们可以定义函数的参数和返回值,使函数可以接收外部数据和向外部返回数据。同时,函数也可以递归调用自身,实现更加复杂的逻辑。

除了控制结构和函数,本章还介绍了一些C语言中的基本概念,如变量、数据类型和字节。掌握这些概念是学习C语言的重要基础,可以帮助我们更好地理解C语言中的各种语法和特性。

评论