当前位置: 首页 > news >正文

七天学会C语言-第五天(函数)

在这里插入图片描述

1. 调用有参函数

有参函数是一种接受输入参数(参数值)并执行特定操作的函数。通过向函数传递参数,你可以将数据传递给函数,让函数处理这些数据并返回结果。

例1:编写一程序,要求用户输入4 个数字,输出前两个数中的最大数、后两个数中的最大数以及四个数中的最大数。

#include <stdio.h>double max(double x, double y);int main() {double a[4];int i;for (i = 0; i < 4; i++) {if (scanf("%lf", &a[i]) != 1) {printf("输入不合法,请输入一个有效的数字。\n");return 1;  // 退出程序,返回错误代码}}double t = max(a[0], a[1]);double u = max(a[2], a[3]);double v = max(t, u);printf("前两个数中的最大数为%.2lf\n", t);printf("后两个数中的最大数为%.2lf\n", u);printf("四个数中的最大数为%.2lf\n", v);return 0;
}double max(double x, double y) {return (x > y ? x : y);
}

运行结果:
在这里插入图片描述

例 2:有两个小组,分别有5名学生和10名学生。请编程输入这些学生的成绩,并调用一个 average 函数求这两个小组的平均分。

#include <stdio.h>float average(float a[], int n);int main() {float zu1[5], zu2[10];int i;for (i = 0; i < 5; i++) {if (scanf("%f", &zu1[i]) != 1) {printf("输入不合法,请输入一个有效的数字。\n");return 1;  // 退出程序,返回错误代码}}for (i = 0; i < 10; i++) {if (scanf("%f", &zu2[i]) != 1) {printf("输入不合法,请输入一个有效的数字。\n");return 1;  // 退出程序,返回错误代码}}printf("第 1 组平均分是%.2f\n", average(zu1, 5));printf("第 2 组平均分是%.2f\n", average(zu2, 10));return 0;
}float average(float a[], int n) {float sum = 0.0, average;int i;for (i = 0; i < n; i++) {sum += a[i];}average = sum / n;return average;
}

运行结果:
在这里插入图片描述

2. 调用无参函数

无参函数是一种不需要接受任何输入参数的函数。它们通常用于执行一些固定的任务或打印消息,而不依赖于外部数据。

1:请编程输出以下内容:
123456
小翟是大帅逼
654321
小翟是大帅逼
654321
小翟是大帅逼
#include<stdio.h>void a();
void b();
void c();int main() {a();b();c();b();c();b();return 0;
}
void a() {printf("123456\n");
}
void b() {printf("小翟是大帅逼\n");
}
void c() {printf("654321\n");
}

运行结果:在这里插入图片描述

例 2:请编程输入 10 个整数,并将这 10 个数由小到大排序。

#include<stdio.h>void paixu(int a[], int n); // 修正参数列表int main() {int a[10], i;printf("请输入 10 个整数:\n");for (i = 0; i < 10; i++)scanf("%d", &a[i]);paixu(a, 10);printf("排序后的整数依次是:\n");for (i = 0; i < 10; i++)printf("%d\t", a[i]);printf("\n");return 0;
}void paixu(int a[], int n) {int i, j, t;for (i = 0; i < n - 1; i++)for (j = i + 1; j < n; j++)if (a[i] > a[j]) {t = a[i];a[i] = a[j];a[j] = t;}
}

运行结果:
在这里插入图片描述

3. 函数的嵌套

函数的嵌套是指在一个函数内部调用另一个函数。这允许你将程序分解成更小的、可管理的部分。嵌套函数通常有助于提高代码的可读性和可维护性。

例 1:请编程输入 4 个整数,并找出其中最大的数。

#include <stdio.h>int max4(int a, int b, int c, int d);
int max2(int a, int b);int main()
{int a, b, c, d, zuidashu;scanf("%d %d %d %d", &a, &b, &c, &d);zuidashu = max4(a, b, c, d);printf("最大数为%d\n", zuidashu);return 0;
}int max4(int a, int b, int c, int d)
{int max2(int a, int b);return (max2(max2(max2(a, b), c), d));
}int max2(int a, int b)
{return (a > b ? a : b);
}

运行结果:
在这里插入图片描述

4. 函数的递归

递归是一种函数调用自身的过程。递归函数通常包括两个部分:基本情况和递归情况。基本情况是一个停止条件,它指定何时结束递归。递归情况则定义了函数如何继续调用自身以解决更小的子问题。递归在解决需要重复分解的问题时非常有用,如计算阶乘或斐波那契数列等。

例1:有5个学生,第5个学生比第4个学生大2岁,第4个学生比第3个学生大2岁,第3个学生比第2个学生大2岁,第2个学生比第1个学生大2岁,第1个学生是10岁。请编程计算出第5个学生的年龄。

#include <stdio.h>int calculateAge(int studentNumber);int main() {int ageOfFifthStudent = calculateAge(5);printf("第5个学生的年龄:%d岁\n", ageOfFifthStudent);return 0;
}int calculateAge(int studentNumber) {if (studentNumber == 1) {return 10; // 第1个学生是10岁} else {// 递归计算年龄,每个学生比前一个学生大2岁return calculateAge(studentNumber - 1) + 2;}
}

运行结果:
在这里插入图片描述

例 2:用递归方法求 n!(注意取值范围)

#include <stdio.h>int factorial(int n);int main()
{int num;printf("Please enter an integer: ");scanf("%d", &num);printf("%d! = %d\n", num, factorial(num));return 0;
}int factorial(int n)
{int result;if (n < 0)printf("n < 0, incorrect input!\n");else if (n == 0 || n == 1)result = 1;elseresult = factorial(n - 1) * n;return result;
}

运行结果:
在这里插入图片描述

http://www.lryc.cn/news/172023.html

相关文章:

  • 340. 至多包含 K 个不同字符的最长子串
  • 【分布式计算】副本数据Replicated Data
  • erlang练习题(二)
  • CRM软件系统价格不同的原因
  • json数据解析
  • Verilog零基础入门(边看边练与测试仿真)-状态机-笔记(7-10讲)
  • 【Hadoop】HDFS API 操作大全
  • Webpack打包图片
  • DipC 构建基因组 3D 结构(学习笔记)
  • Qt中音频的使用
  • [centos]centos7源码编译cmake报错Could NOT find OpenSSL
  • vue若依前端项目搭建
  • 基于win32实现TB登陆滑动验证
  • vue学习-07todoList案例与浏览器本地存储
  • 探索智能应用的基石:多模态大模型赋能文档图像处理
  • 自动化发布npm包小记
  • 详解机器视觉性能指标相关概念——混淆矩阵、IoU、ROC曲线、mAP等
  • 想要精通算法和SQL的成长之路 - 预测赢家
  • 高精度PWM脉宽调制信号转模拟信号隔离变送器1Hz~10KHz转0-5V/0-10V/1-5V/0-10mA/0-20mA/4-20mA
  • Vue路由和Node.js环境搭建
  • 【Vue】使用vue-cli搭建SPA项目的路由,嵌套路由
  • Excel 通过条件格式自动添加边框
  • mysql 备份和还原 mysqldump
  • ELK日志分析系统+ELFK(Filebeat)
  • ULID 在 Java 中的应用: 使用 `getMonotonicUlid` 生成唯一标识符
  • 实用的嵌入式编码技巧:第三部分
  • 8个很棒的Vue开发技巧
  • Python - 小玩意 - 文字转语音
  • 聚焦数据库和新兴硬件的技术合力 中科驭数受邀分享基于DPU的数据库异构加速方案
  • 哨兵模式(sentinel)