【C语言】函数与递归算法(附经典例题代码)

                                        函数

 ○ 一个函数只能完成一个功能.
 ○ 定义函数:
    返回值类型   函数名 (参数列表){
                函数体
    }

 ○ 定义函数的作用 :代码复用
                                  模块化开发
 ○ 函数是不能嵌套定义的,但能嵌套调用.
 ○ 函数的链式访问:将函数的返回值作为另一个函数返回值的参数.

○ 常用库函数
   查函数文档 : http://www.dotcpp.com/course/lib/

  让我们通过例题来感受函数的作用吧:

○ 判断是否为闰年 :(函数的应用)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>int isLeapYear(int yaer);//声明函数int main() {int year = 0;printf("请输入一个年份:");scanf("%d", &year);int res = isLeapYear(year);//调用函数return 0;
}//创建函数
int isLeapYear(int year) {if (year % 4 == 0 || year % 100 != 0 && year % 400 == 0) {printf("是闰年\n");}else {printf("不是闰年\n");}return 0;
}

 ○ 打印100~999的水仙花数:(函数的应用)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>int main() {printf("100-999的水仙花数有:\n");int res = 0;res= shui();return 0;
}
int shui() {int a, b, c;for (int i = 100; i <= 999; i++) {a = i / 100;    //百位b = i / 10 % 10;//十位c = i % 10;     //个位if (i == (a * a * a) + (b * b * b) + (c * c * c)) {printf("%d\n", i);   //153,370,371,407共4个}}
}

                                        递归

 递归的要素:

  • 递归终止的条件
  • 递归操作

 猴子吃桃问题:(递归)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>int main() {//递归的要素1.递归终止的条件//         2.递归操作//递归函数(语义--[参数列表])//猴子吃桃问题:有一堆桃,第一天吃了一半,觉得好吃多吃了一个,第二天吃了剩下的一半,觉得好吃又多吃了一个,第三天....第四天剩了一个,问一共多少桃子?printf("输入天数:");int days = 0;scanf("%d", &days);int nums = monkeyEatPeach(days);printf("有%d桃子\n", nums);return 0;}//递归函数int monkeyEatPeach(int day) { //倒数天数//终止条件if (day == 1) {return 1;}//递归操作return (monkeyEatPeach(day - 1) + 1) * 2;return 0;}

 求一个数的阶乘:(递归)

#define _CRT_SECURE_NO_WARNINGS 1 /*  求n!  */ 
#include <stdio.h>
//声明一个函数wn,来求阶乘
int wn(int n) {//递归终止条件if (n == 0 || n == 1) {return 1;}//递归操作return n * wn(n - 1);
}
int main() {int n = 0;printf("请给n赋值:");scanf("%d", &n);printf("%d!=%d\n", n, wn(n));//调用函数return 0;
}

 ○ 查找斐波那契数列的某一项:(递归)

#define _CRT_SECURE_NO_WARNINGS 1//斐波那契数列(查找第n项)
#include<stdio.h>
int fib(int n) {//终止条件if (n == 1|| n == 2) {return 1;}//递归操作return(fib(n - 1) + fib(n - 2));
}
int main() {int n = 0;printf("请输入要查找的项数n:");scanf("%d", &n);int res = fib(n);   //调用函数printf("斐波那契数列的第%d项 = %d\n", n, res);return 0;
}

 循环 是语法中较为重要的,让我们通过几个例题来巩固下循环吧。

                                      经典例题

 在数组中查找最大的数:(数组遍历)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//自定义了个max函数,来实现功能
int max(int arr[], int size) {int max = arr[0];//默认第一个元素为最大数for (int i = 1; i < size; i++) {if (arr[i] > max) {//遍历数组,遇见更大的数就赋给maxmax = arr[i];}}return max;
}
int main() {int arr[] = { 3, 7, 2, 9, 5 };int size = sizeof(arr) / sizeof(arr[0]);//计算数组长度printf("The max value in the arr is: %d\n", max(arr, size));//调用了max函数return 0;
}

 99乘法表: (循环)

#define _CRT_SECURE_NO_WARNINGS 1 
#include <stdio.h>
int main() {for (int i = 1; i <= 9; i++) {	for (int j = 1; j <= i; j++)printf("%d*%d=%d   ", i, j, i * j);printf("\n");}return 0;
}

 输入正确密码:(循环|判断) 

#define _CRT_SECURE_NO_WARNINGS 1//输密码
#include <stdio.h>
int main() {char password[125] = { 0 };int count = 3;//规定有3次机会do {printf("你还有%d次机会,请输入密码(6位)\n", count);scanf("%s", password);if (strcmp(password,"211314")==0) { //输入211314密码正确printf("恭喜您,密码正确!");break;}count = count - 1;} while (count >= 1);printf("GAME OVER!");return 0;
}

 格式训练:(格式符号)

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main() {printf("请输入你的名字:\n");char name[20];scanf("%s", name);printf("\"%s\"\n", name);//加双引号printf("\"%20s\"\n", name);//数字表示空格,正为左对齐printf("\"%-20s\"\n", name);//负为右对齐printf("%*s", strlen(name) + 20, name);//任意添加空格
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/744439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

当代计算机语言占比分析

在当今快速发展的科技领域&#xff0c;计算机语言作为程序员的工具之一&#xff0c;扮演着至关重要的角色。随着技术的不断演进&#xff0c;各种编程语言层出不穷&#xff0c;但在实际开发中&#xff0c;哪些计算机语言占据主导地位&#xff1f;本文将对当代计算机语言的占比进…

使用API有效率地管理Dynadot域名,使用API设置域名隐私保护

关于Dynadot Dynadot是通过ICANN认证的域名注册商&#xff0c;自2002年成立以来&#xff0c;服务于全球108个国家和地区的客户&#xff0c;为数以万计的客户提供简洁&#xff0c;优惠&#xff0c;安全的域名注册以及管理服务。 Dynadot平台操作教程索引&#xff08;包括域名邮…

成员函数版本实现算术运算符的重载 全局函数版本实现算术运算符的重载

#include <iostream>using namespace std; class Per { private:friend const Per operator-(const Per &L,const Per &R);int a;int b; public:Per(){cout<<"无参构造"<<endl;}Per(int a,int b):a(a),b(b){cout<<"有参构造&qu…

26-1 SQL 注入攻击 - delete注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 一、注入原理: 对于后台来说,delete操作通常是将对应的id传递到后台,然后后台会删除该id对应的数据。 如果后台没有对接收到的 id 参数进行充分的验证和过滤,恶意用户可能会…

linux系统对于docker容器的监控

容器监控 容器监控原生命令操作问题 容器监控三剑客CAdvisorInfluxDBGranfana compose编排监控工具新建目录创建CIG.yml文件启动docker-compose测试 容器监控 CAdvisorInfluxDBGranfana 原生命令 操作 docker stats问题 通过docker stats命令可以很方便的看到当前宿主机上所…

CSS选择器-一文搞懂CSS选择器

CSS选择器 一、简单选择器和权值1. 通配符选择器 &#xff08;权值 - 0&#xff09;2. 标签选择器 &#xff08;权值 - 1&#xff09;3. 类选择器和伪类 &#xff08;权值 - 10 &#xff09;4. ID选择器 &#xff08;权值 - 100&#xff09;-精确制导行内样式 - 它不是选择器-权…

Cassandra 集群安装部署

文章目录 一、概述1.官方文档2. 克隆服务器3.安装说明4.安装准备4.1.安装 JDK 114.2.安装 Python4.3.下载文件 二、安装部署1.配置 Cassandra2.启动 Cassandra3.关闭Cassandra4.查看状态5.客户端连接服务器6.服务运行脚本 开源中间件 # Cassandrahttps://iothub.org.cn/docs/m…

3.2 Beautiful Soup 的使用

目录 一、Beautiful Soup 的简介 二、解析器 三、基本使用 四、节点选择器 1 选择元素 2 获取名称、属性、文本内容 五、方法选择器 1 find_all 传入 name 节点名 传入 attrs 属性 传入 text 2 find 六、CSS 选择器 1 实例 2 获取属性 3 获取文本 七、结语 一…

从政府工作报告探计算机行业发展(在医疗健康领域)

从政府工作报告探计算机行业发展 政府工作报告作为政府工作的全面总结和未来规划&#xff0c;不仅反映了国家整体的发展态势&#xff0c;也为各行各业提供了发展的指引和参考。随着信息技术的快速发展&#xff0c;计算机行业已经成为推动经济社会发展的重要引擎之一。因此&…

暴雨信息:可持续转型更需要“以人为本”

数字化正在开启新的商业模式和价值流&#xff0c;为企业与组织带来巨大收益。其中&#xff0c;“人 (People)”这一因素至关重要。 提供更好的工作与生活体验&#xff0c;应对人口老龄化、劳动力短缺等挑战。对于企业而言&#xff0c;解决这些问题既是社会责任&#xff0c;也是…

代码随想录算法训练营第五十五天| 583. 两个字符串的删除操作 、72. 编辑距离

文章目录 1.两个字符串的删除操作2.编辑距离 1.两个字符串的删除操作 给定两个单词 word1 和 word2&#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步可以删除任意一个字符串中的一个字符。 示例 1&#xff1a; 输入: word1 “sea”, word2 “eat” 输出: 2 …

山景BP1048 烧录器烧写

1.首先确保硬件连接没问题&#xff0c;烧写器不能亮红灯&#xff0c;亮红灯说明硬件没正确连接。硬件连接如下&#xff1a; 2.点击Flash Burner 3.编程目标闪存选择SDK包自带的烧写驱动器&#xff0c;闪存映像档选择编译好的bin文件。 4.点击刻录 5.看见有进度条在跑&#x…

计算机网络——计算机网络体系结构

计算机网络——计算机网络体系结构 计算机网络体系结构的由来正确认识分层协议与层次划分著名的几个体系结构OSI体系结构TCP/IP体系结构5层体系结构 我们今天来了解一下计算机网络体系结构&#xff1a; 计算机网络体系结构的由来 俗话说&#xff0c;“没有规矩&#xff0c;不…

深入理解与应用Keepalive机制

目录 引言 一、VRRP协议 &#xff08;一&#xff09;VRRP概述 1.诞生背景 2.基本理论 &#xff08;二&#xff09;VRRP工作原理 &#xff08;三&#xff09;VRRP相关术语 二、keepalive基本理论 &#xff08;一&#xff09;基本性能 &#xff08;二&#xff09;实现原…

FreeRTOS操作系统学习——中断管理

中断管理介绍 嵌入式实时系统需要对整个系统环境产生的事件作出反应。这些事件对处理时间和响应时间都有不同的要求。事件通常采用中断方式检测&#xff0c;中断服务例程(ISR)中的处理量应当越短越好。ISR是在内核中被调用的&#xff0c; ISR执行过程中&#xff0c;用户的任务…

解决代理IP无法连接特定网站的问题

目录 一、问题原因分析 二、解决方案 三、案例与代码示例 四、总结 在网络爬虫、数据抓取、或者是网络加速等场景下&#xff0c;使用代理IP是一个常见的做法。然而&#xff0c;在实际使用过程中&#xff0c;有时会遇到代理IP无法连接特定网站的问题&#xff0c;这不仅影响了…

计讯物联智慧合杆在智慧城市中的应用

随着智慧城市数字化的建设与发展&#xff0c;5G智慧合杆不仅成为智慧城市感知网络体系的重要载体&#xff0c;也是发展智慧城市IoT的重要基础。在今年两会中&#xff0c;全国政协委员提出&#xff0c;探索“智慧灯杆5G基站”“多杆合一”试点示范&#xff0c;实现社会资源共享。…

微信小程序问题定位——sourcemap文件

使用sourceMap在微信小程序中进行线上问题定位&#xff0c;主要可以通过以下步骤实现&#xff1a; 下载微信开发者工具首先&#xff0c;确保已经安装了微信开发者工具&#xff0c;这是进行小程序开发和调试的基础。登录微信公众平台并下载sourceMap文件&#xff1a;登录微信小…

Windows系统下载安装Emby结合内网穿透实现公网访问本地影音网站

文章目录 1.前言2. Emby网站搭建2.1. Emby下载和安装2.2 Emby网页测试 3. 本地网页发布3.1 注册并安装cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar内网穿透本地设置 4.公网访问测试5.结语 1.前言 在现代五花八门的网络应用场景中&#xff0c;观看视频绝对是主力应用场景之一&…

(差分)胡桃爱原石

琴团长带领着一群胡桃准备出征&#xff0c;进攻丘丘人&#xff0c;出征前&#xff0c;琴团长根据不同胡桃的战力&#xff0c;发放原石作为军饷&#xff0c;琴团长分批次发放&#xff0c;每批次会给连续的几个胡桃发放相同的原石&#xff0c;琴团长最后想知道给每个胡桃发放了多…