【软件设计师备考 专题 】设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用(一)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; }
以上是关于过程(函数)调用的内容,包括函数的定义和声明、参数传递、返回值以及递归函数的介绍。通过代码示例和注释的方式,帮助读者深入理解这些知识点。
结语
感谢你花时间阅读这篇博客,我希望你能从中获得有价值的信息和知识。记住,学习是一个持续的过程,每一篇文章都是你知识体系的一部分,无论主题是什么,都是为了帮助你更好地理解和掌握软件设计的各个方面。
如果你觉得这篇文章对你有所帮助,那么请不要忘记收藏和点赞,这将是对我们最大的支持。同时,我们也非常欢迎你在评论区分享你的学习经验和心得,你的经验可能会对其他正在学习的读者有所帮助。
无论你是正在准备软件设计师资格考试,还是在寻求提升自己的技能,我们都在这里支持你。我期待你在软件设计师的道路上取得成功,无论你的目标是什么,我都在这里支持你。
再次感谢你的阅读,期待你的点赞和评论,祝你学习顺利,未来充满可能!