【软件设计师备考 专题 】设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用(二)

简介: 【软件设计师备考 专题 】设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用

【软件设计师备考 专题 】设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用(一)https://developer.aliyun.com/article/1467647


4.2 循环语句

循环语句是用于重复执行一段代码块的控制结构。在C/C++语言中,常见的循环语句包括for循环、while循环和do-while循环。

4.2.1 for循环

for循环用于指定循环的次数,其基本语法如下:

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

在for循环中,初始化表达式用于初始化循环变量;条件表达式用于判断是否继续循环;更新表达式用于更新循环变量的值。循环体代码块会在每次循环之前执行一次,然后根据条件表达式的结果决定是否继续循环。

示例代码:

for (int i = 0; i < 5; i++) {
    printf("循环次数:%d\n", i);
}

4.2.2 while循环

while循环用于在条件为真时重复执行一段代码块,其基本语法如下:

while (条件表达式) {
    // 循环体代码块
}

在while循环中,条件表达式的结果必须是一个布尔值(true或false)。只有当条件表达式的结果为true时,才会执行循环体代码块。循环体代码块执行完毕后,再次判断条件表达式的结果,决定是否继续循环。

示例代码:

int i = 0;
while (i < 5) {
    printf("循环次数:%d\n", i);
    i++;
}

4.2.3 do-while循环

do-while循环与while循环类似,不同之处在于它是在循环体执行完毕后判断条件是否为真。其基本语法如下:

do {
    // 循环体代码块
} while (条件表达式);

在do-while循环中,循环体代码块会先执行一次,然后再判断条件表达式的结果。只有当条件表达式的结果为true时,才会继续循环。

示例代码:

int i = 0;
do {
    printf("循环次数:%d\n", i);
    i++;
} while (i < 5);

4.3 跳转语句

跳转语句用于改变程序的执行顺序,常见的跳转语句包括break语句、continue语句和return语句。

4.3.1 break语句

break语句用于跳出当前循环或switch语句,结束当前的代码块执行。在嵌套循环中,break语句只能跳出最内层的循环。

示例代码:

for (int i = 0; i < 5; i++) {
    if (i == 3) {
        break;
    }
    printf("循环次数:%d\n", i);
}

4.3.2 continue语句

continue语句用于跳过当前循环中剩余的代码,继续执行下一次循环。在嵌套循环中,continue语句只能跳过当前循环的剩余代码,继续执行下一次的内层循环。

示例代码:

for (int i = 0; i < 5; i++) {
    if (i == 3) {
        continue;
    }
    printf("循环次数:%d\n", i);
}

4.3.3 return语句

return语句用于结束函数的执行,并返回一个值(如果函数有返回值的话)。在函数中,return语句可以提前结束函数的执行,也可以在函数的任意位置使用。

示例代码:

int add(int a, int b) {
    return a + b;
}
int result = add(3, 4);
printf("计算结果:%d\n", result);

4.4 输入输出语句

输入输出语句用于与用户进行交互,常见的输入输出函数包括printf函数和scanf函数。

4.4.1 标准输入输出

printf函数用于将数据输出到标准输出设备(通常是显示器),其基本语法如下:

printf("格式化字符串", 参数列表);

在格式化字符串中,可以使用占位符来指定输出的格式和位置。常用的占位符包括:%d(整数)、%f(浮点数)、%s(字符串)等。

示例代码:

int num = 10;
printf("数字:%d\n", num);

scanf函数用于从标准输入设备(通常是键盘)读取数据,其基本语法如下:

scanf("格式化字符串", 参数列表);

在格式化字符串中,可以使用占位符来指定输入的格式和位置。需要注意的是,scanf函数会根据占位符的类型进行数据类型的转换。

示例代码:

int num;
printf("请输入一个数字:");
scanf("%d", &num);
printf("输入的数字:%d\n", num);

4.4.2 文件输入输出

除了标准输入输出之外,C/C++语言还提供了文件输入输出函数,用于读写文件。常见的文件输入输出函数包括fopen函数、fprintf函数和fscanf函数。

示例代码:

#include <stdio.h>
int main() {
    FILE *file = fopen("data.txt", "w");
    if (file == NULL) {
        printf("文件打开失败\n");
        return 0;
    }
    fprintf(file, "Hello, World!\n");
    fclose(file);
    return 0;
}

在上述示例代码中,我们使用fopen函数打开一个名为data.txt的文件,并指定以写入(“w”)的方式打开。然后使用fprintf函数向文件中写入一行文本,并使用fclose函数关闭文件。

以上是关于控制和传输的内容,包括条件语句、循环语句、跳转语句和输入输出语句。掌握这些知识点,能够更好地控制程序的执行流程和与用户进行交互。


第五章:过程(函数)调用

5.1 函数的定义和声明

5.1.1 函数的命名规则

在C/C++编程中,函数的命名需要遵循一定的规则,以保证代码的可读性和可维护性。以下是一些常用的函数命名规则:

规则 示例
使用有意义的名称 calculateSum()
使用小写字母和下划线 calculate_average()
遵循驼峰命名法 calculateAverage()

5.1.2 函数的参数列表

函数的参数列表是指在函数声明或定义中,用于接收传递给函数的参数的列表。参数列表可以包含零个或多个参数,每个参数由参数类型和参数名组成。以下是一个函数参数列表的示例:

void printMessage(char* message, int times);

5.1.3 函数的返回类型

函数的返回类型指定了函数执行完毕后返回的值的类型。在C/C++中,函数可以有不同的返回类型,如整型、浮点型、字符型、指针等。以下是一个函数返回类型的示例:

int calculateSum(int a, int b);

5.2 函数的参数传递

5.2.1 值传递

值传递是指将参数的值复制给函数中的对应参数。在函数内部对参数的修改不会影响到函数外部的变量。以下是一个值传递的示例:

void increment(int num) {
    num++;
}
int main() {
    int num = 5;
    increment(num);
    // 输出结果为5,num的值未改变
    printf("%d", num);
    return 0;
}

5.2.2 引用传递

引用传递是指将参数的引用传递给函数,函数内部对参数的修改会影响到函数外部的变量。在C/C++中,可以使用指针或引用来实现引用传递。以下是一个引用传递的示例:

void increment(int* num) {
    (*num)++;
}
int main() {
    int num = 5;
    increment(&num);
    // 输出结果为6,num的值已改变
    printf("%d", num);
    return 0;
}

5.3 函数的返回值

5.3.1 返回单个值

函数可以返回单个值,该值可以是任意类型,如整型、浮点型、字符型等。以下是一个返回单个值的示例:

int calculateSum(int a, int b) {
    return a + b;
}
int main() {
    int result = calculateSum(3, 4);
    // 输出结果为7
    printf("%d", result);
    return 0;
}

5.3.2 返回多个值

在C/C++中,函数可以通过指针、引用或结构体等方式返回多个值。以下是一个返回多个值的示例:

void calculateSumAndDifference(int a, int b, int* sum, int* difference) {
    *sum = a + b;
    *difference = a - b;
}
int main() {
    int sum, difference;
    calculateSumAndDifference(5, 3, &sum, &difference);
    // 输出结果为8和2
    printf("%d %d", sum, difference);
    return 0;
}

5.4 递归函数

5.4.1 递归的概念

递归是指函数调用自身的过程。在编程中,递归函数可以解决一些需要重复执行相同操作的问题,如计算阶乘、斐波那契数列等。以下是一个递归函数的示例:

int factorial(int n) {
    if (n == 0 || n == 1) {
        return 1;
    }
    return n * factorial(n - 1);
}
int main() {
    int result = factorial(5);
    // 输出结果为120
    printf("%d", result);
    return 0;
}

以上是关于过程(函数)调用的内容,包括函数的定义和声明、参数传递、返回值以及递归函数的介绍。通过代码示例和注释的方式,帮助读者深入理解这些知识点。


结语

感谢你花时间阅读这篇博客,我希望你能从中获得有价值的信息和知识。记住,学习是一个持续的过程,每一篇文章都是你知识体系的一部分,无论主题是什么,都是为了帮助你更好地理解和掌握软件设计的各个方面。

如果你觉得这篇文章对你有所帮助,那么请不要忘记收藏和点赞,这将是对我们最大的支持。同时,我们也非常欢迎你在评论区分享你的学习经验和心得,你的经验可能会对其他正在学习的读者有所帮助。

无论你是正在准备软件设计师资格考试,还是在寻求提升自己的技能,我们都在这里支持你。我期待你在软件设计师的道路上取得成功,无论你的目标是什么,我都在这里支持你。

再次感谢你的阅读,期待你的点赞和评论,祝你学习顺利,未来充满可能!

目录
相关文章
|
8月前
|
存储 编译器 C++
【软件设计师备考 专题 】设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用(一)
【软件设计师备考 专题 】设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用
97 2
|
5G 调度
灵活时隙符号配比 | 带你读《5G 空口设计与实践进阶 》之十八
通过不同时隙格式的选择或不同时隙格式的聚合,NR 可以动态适配当前场景下的业务需求。
灵活时隙符号配比 | 带你读《5G 空口设计与实践进阶 》之十八
|
存储 缓存 5G
时域结构 | 带你读《5G 空口设计与实践进阶 》之十七
在时域,NR 支持基于符号灵活定义的帧结构,以满足各种时延需求。
时域结构 | 带你读《5G 空口设计与实践进阶 》之十七
【期末不挂科-单片机考前速过系列P7】(第七章:11题速过串行口基本概念/结构/工作方式/双机通信例题)经典例题盘点(带图解析)
【期末不挂科-单片机考前速过系列P7】(第七章:11题速过串行口基本概念/结构/工作方式/双机通信例题)经典例题盘点(带图解析)
|
6月前
|
算法 程序员
代码之舞:从逻辑之美到技术之艺
在数字世界的舞台上,代码不仅仅是冷冰冰的文字序列,而是充满韵律与美感的艺术。本文将带领读者走进编程的世界,探索如何通过逻辑的严谨性与创造性思维的结合,将代码变成一种独特的艺术形式。我们将一同见证技术与艺术如何交织在一起,创造出令人惊叹的作品。
|
前端开发 芯片
【芯片前端】保持代码手感——握手型同步fifo的进一步拓展
【芯片前端】保持代码手感——握手型同步fifo的进一步拓展
111 1
|
存储 算法 C语言
《信任的进化》游戏简易版逻辑算法的实现(C语言)
《信任的进化》游戏简易版逻辑算法的实现(C语言)
|
5G 索引
频域结构 | 带你读《5G 空口设计与实践进阶 》之十九
在频域,为满足多样带宽需求,NR 支持灵活可扩展的 Numerology。这相应也决定了 NR 在频域资源上的物理量度是可变的。
频域结构 | 带你读《5G 空口设计与实践进阶 》之十九
|
数据安全/隐私保护
混沌理论作业简析——两人一组_图像加密解密小游戏
混沌理论作业简析——两人一组_图像加密解密小游戏
168 0
混沌理论作业简析——两人一组_图像加密解密小游戏