【C/PTA】函数专项练习(四)
本文结合PTA专项练习带领读者掌握函数,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。
目录
- 6-1 计算A[n]=1/(1 + A[n-1])
- 6-2 递归实现顺序输出整数
- 6-3 自然数的位数(递归版)
- 6-4 分治法求解金块问题
- 6-5 汉诺塔
- 6-6 重复显示字符(递归版)
- 6-7 显示平行四边形(右)(递归版)
6-1 计算A[n]=1/(1 + A[n-1])
函数 fun 的功能是:根据整型形参 n,计算某一数据项的值。
A[1]=1, A[2]=1/(1 + A[1]), A[3]=1/(1 + A[2]), …,A[n]=1/(1 + A[n-1])
例如,若 n=10,则应输出:A10=0.617977。
函数接口定义:
float fun(int n);
其中n是用户传入的参数,函数须返回第n项的值。
裁判测试程序样例:
#include <stdio.h>float fun(int n);int main( ){ int n ;scanf("%d", &n ) ;printf("A%d=%f\n", n, fun(n) ) ;return 0;}/* 请在这里填写答案 */
输入样例:
10
输出样例:
A10=0.6180
float fun(int n)
{if(n==1)return 1;else return 1/(1+fun(n-1));
}
6-2 递归实现顺序输出整数
本题要求实现一个函数,对一个整数进行按位顺序输出。
函数接口定义:
void printdigits( int n );
函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。
裁判测试程序样例:
#include <stdio.h>void printdigits( int n );int main(){int n;scanf("%d", &n);printdigits(n);return 0;}/* 你的代码将被嵌在这里 */
输入样例:
12345
输出样例:
1
2
3
4
5
void printdigits( int n )
{if(n/10==0)printf("%d\n",n);else{printdigits(n/10);printf("%d\n",n%10);}
}
6-3 自然数的位数(递归版)
请编写函数,求自然数的位数。
函数原型
int NumDigit(int number);
说明:参数 number 为非负整数。函数值为 number 的位数。若 number 为零,则函数值为零。
裁判程序
#include <stdio.h>int NumDigit(int number);int main(){int n;scanf("%d", &n);printf("%d\n", NumDigit(n));return 0;}/* 你提交的代码将被嵌在这里 */
要求:不使用循环语句,用递归方法完成函数的设计。
输入样例
25173
输出样例
5
int NumDigit(int number)
{if(number==0)return 0;else if(number/10==0)return 1;else{return NumDigit(number/10)+1;}
}
6-4 分治法求解金块问题
分数 10
作者 张泳
单位 浙大城市学院
老板有一袋金块(共n块,2≤n≤100),两名最优秀的雇员每人可以得到其中的一块,排名第一的得到最重的金块,排名第二的则得到袋子中最轻的金块。
输入一个正整数N(2≤N≤100)和N个整数,用分治法求出最重金块和最轻金块。
本题要求实现2个函数,分别使用分治法在数组中找出最大值、最小值。
函数接口定义:
int max(int a[ ], int m, int n); int min(int a[ ], int m, int n);
递归函数max用分治法求出a[m]~a[n]中的最大值并返回。
递归函数min用分治法求出a[m]~a[n]中的最小值并返回。
裁判测试程序样例:
#include <stdio.h>#define MAXN 101int max(int a[ ], int m, int n); int min(int a[ ], int m, int n);int main(void){int i, n; int a[MAXN]; scanf ("%d", &n); if(n >= 2 && n <= MAXN-1 ){for(i = 0; i < n; i++){ scanf ("%d", &a[i]); }printf("max = %d\n", max(a, 0, n-1));printf("min = %d\n", min(a, 0, n-1));}else{printf("Invalid Value.\n"); }return 0;}/* 请在这里填写答案 */
输入样例:
6
3 9 4 9 2 4
输出样例:
max = 9
min = 2
int max(int a[ ], int m, int n)
{int max=a[0];for(int i=m;i<=n;i++){if(max<a[i])max=a[i];}return max;
}
int min(int a[ ], int m, int n)
{int min=a[0];for(int i=m;i<=n;i++){if(min>a[i])min=a[i];}return min;
}
6-5 汉诺塔
分数 10
作者 黄龙军
单位 绍兴文理学院
汉诺(Hanoi)塔问题是一个经典的递归问题。
设有A、B、C三个塔座;开始时,在塔座A上有若干个圆盘,这些圆盘自下而上,由大到小地叠在一起。要求将塔座A上的圆盘移到塔座B上,并仍按同样顺序叠放。在移动过程中要求遵守如下规则:
每次只能移动一个圆盘;
任何时刻都不允许将较大的圆盘压在较小的圆盘之上;
在满足前两条规则的前提下,可将圆盘移至A、B、C中任何一塔座上。
例如,3个圆盘的初始状态如下:

则移动过程如下:
A->B
A->C
B->C
A->B
C->A
C->B
A->B
要求实现一个递归函数,模拟输出n(1<=n<=8)个圆盘从塔座A借助塔座C移动到塔座B上的过程(用A->B表示将圆盘从A移到B,其他类似)。
函数接口定义:
void hanoi(int n, char from, char to, char by);
其中参数 n是圆盘数 、from是原来叠放圆盘的塔座 、to是最终叠放圆盘的塔座 、by是可借助的塔座。
裁判测试程序样例:
#include<iostream>using namespace std;//将n个圆盘借助by从from移到tovoid hanoi(int n, char from, char to, char by);//输入n,输出将原来在A上的n个圆盘借助C移动到B上的移动过程,控制到文件尾int main() {int n, cnt=0;while(cin>>n) {cnt++;if (cnt>1) cout<<endl;hanoi(n, 'A', 'B', 'C');}return 0;}
输入样例:
3
4
输出样例:
A->B
A->C
B->C
A->B
C->A
C->B
A->B
A->C
A->B
C->B
A->C
B->A
B->C
A->C
A->B
C->B
C->A
B->A
C->B
A->C
A->B
C->B
void hanoi(int n, char from, char to, char by)
{if(n==1){printf("%c->%c\n",from,to);return;}else{hanoi(n-1,from,by,to);printf("%c->%c\n",from,to);hanoi(n-1,by,to,from);}
}
6-6 重复显示字符(递归版)
请编写递归函数,重复显示字符。
函数原型
void Show(int number, char symbol);
说明:参数 number 为重复次数,symbol 为显示字符。函数将在屏幕上重复显示 number 个 symbol 字符。若 number ≤ 0,则不输出。
裁判程序
#include <stdio.h>void Show(int number, char symbol);int main(){int n;char s;scanf("%d %c", &n, &s);Show(n, s);putchar('\n');return 0;}/* 你提交的代码将被嵌在这里 */
输入样例1
-3 #
输出样例1
输入样例2
5 *
输出样例2
要求:不使用循环语句。
void Show(int number, char symbol)
{if(number<=0)return;else{printf("%c",symbol);Show(number-1,symbol);}
}
6-7 显示平行四边形(右)(递归版)
分数 10
作者 李祥
单位 湖北经济学院
请编写递归函数,显示平行四边形(向右)。
函数原型
void RtPara(int width, int height, char symbol);
说明:参数 width、height 分别为平行四边形的底和高,symbol 为显示字符。函数将在屏幕上显示底宽为 width、高度为 height 由字符 symbol 组成的平行四边形(向右)。若 width, height ≤ 0,则不输出。
裁判程序
#include <stdio.h>void Show(int number, char symbol);void RtPara(int width, int height, char symbol);int main(){int w, h;char s;scanf("%d %d %c", &w, &h, &s);RtPara(w, h, s);putchar('\n');return 0;}....../* 你提交的代码将被嵌在这里 */
提示:需要利用前面作业中的 Show 函数,此外需要增加自用的内部函数。
输入样例1
-3 0 #
输出样例1
输入样例2
20 5 *
输出样例2
********************************************************************************
********************
要求:不使用循环语句,用递归方法完成函数的设计。
关联习题:重复显示字符(递归版)。
void PrintSpaces(int number)
{if(number<=0)return;else{printf(" ");PrintSpaces(number-1);}
}void RtPara(int width,int height,char symbol)
{if(width<=0||height<=0)return;else{PrintSpaces(height-1); // 打印平行四边形上方的空格Show(width,symbol); // 打印平行四边形第一行putchar('\n'); // 换行RtPara(width,height-1,symbol); // 递归调用,打印剩余行数的平行四边形}
}
相关文章:
【C/PTA】函数专项练习(四)
本文结合PTA专项练习带领读者掌握函数,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。 目录 6-1 计算A[n]1/(1 A[n-1])6-2 递归实现顺序输出整数6-3 自然数的位数(递归版)6-4 分治法求解金块问题6-5 汉诺塔6-6 重复显示字符(递归版)…...
广西柳州机械异形零部件三维扫描3D抄数全尺寸测绘建模-CASAIM中科广电
一、背景介绍 复杂机械异形零部件具有不规则的形状和复杂的结构,给生产制造带来了很大的检测难度。为了确保零部件的制造质量和精度,需要对零部件进行全面的尺寸检测和分析。 CASAIM三维扫描仪在机械异形零部件全尺寸检测应用可以实现对机械异形零部件…...
(四)C语言之符号常量概述
(四)C语言之符号常量概述 一、符号常量概述 一、符号常量概述 在程序中使用像300,20等这样的等类似的“幻数”不是一个好的习惯,它们无法向阅读该程序的人提供更多有用的信息,从而使得修改程序变得困难。处理这种幻数的一种方法是…...
springboot -sse -flux 服务器推送消息
先说BUG处理,遇到提示异步问题 Async support must be enabled on a servlet and for all filters involved in async request processing. This is done in Java code using the Servlet API or by adding "<async-supported>true</async-supported&…...
js进阶笔记之原型,原型链
目录 1、原型对象 constructor 属性 对象原型 2、原型链 3、instanceof 4、原型继承 1、原型对象 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了。 面向对象是把事务分解成为…...
【DevOps】Git 图文详解(四):Git 使用入门
本系列包含: Git 图文详解(一):简介及基础概念Git 图文详解(二):Git 安装及配置Git 图文详解(三):常用的 Git GUIGit 图文详解(四)&a…...
Jquery ajax 同步阻塞引起的UI线程阻塞的坑(loading图片显示不出来 )
Jquery ajax 同步阻塞引起的UI线程阻塞的坑(loading图片显示不出来,layer.load延迟)jax重新获取数据刷新页面功能,因为ajax属于耗时操作,想在获取数据且加载页面时显示加载遮罩层,结果发现了ajax的好多坑。…...
读书笔记——《黑猩猩的政治》
前言 弗朗斯德瓦尔(Frans de Waal)的代表作《黑猩猩政治》成书于1982年,是它的首部书籍作品,也是美国国会新任议员的被推荐读物。之前看的他另一部作品的《万智有灵》是2016年的作品,时间跨度居然这么大。《万智有灵》介绍了许多…...
此处不允许使用特性namespace
1.DOCTYPE 后面改成 mapper 2.PUBLIC一行中的Config改为Mapper 3.将下一行config变为小写的mapper <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.or…...
随笔记录-springmvc_ResourceHandlerRegistry+ResourceHttpRequestHandler
环境:springboot-2.7.5 配置文件配置静态资源映射 springboot配置静态资源映射方式是通过 WebMvcAutoConfiguration 实现的 spring: # resources: # # 自springboot 2.5.5之后,该属性已经被废弃,使用spring.web.resources.static-locat…...
Redis面试内容,Redis过期策略,Redis持久化方式,缓存穿透、缓存击穿和缓存雪崩,以及解决办法
文章目录 一、redis什么是RedisRedis使用场景1、缓存2、数据共享[分布式](https://so.csdn.net/so/search?q分布式&spm1001.2101.3001.7020)3、分布式锁4、全局ID5、计数器6、限流7、位统计 Redis有5中数据类型: SSHLZRedis中一个key的值每天12点过期ÿ…...
爱上C语言:scanf、gets以及getchar输入字符串你真的懂了吗
🚀 作者:阿辉不一般 🚀 你说呢:不服输的你,他们拿什么赢 🚀 专栏:爱上C语言 🚀作图工具:draw.io(免费开源的作图网站) 如果觉得文章对你有帮助的话,还请点赞…...
ubuntu Setforeground 前台应用切换
场景分析 有这样一个系统,一个服务主进程用于接收指令,其它服务是独立的gui 程序,服务进程根据命令将对应的gui 程序切换到前台。 windows 平台有Setforeground 这个api,可以根据进程ID,将某个应用的窗口切换到前台。…...
【Java 进阶篇】从Java对象到JSON:Jackson的魔法之旅
在现代的软件开发中,处理数据的能力是至关重要的。而当我们谈及数据格式时,JSON(JavaScript Object Notation)通常是首选。为了在Java中轻松地将对象转换为JSON,我们需要一种强大而灵活的工具。这时,Jackso…...
HarmonyOS ArkTS语言,运行Hello World(二)
一、认识DevEco Studio界面 进入IDE后,我们首先了解一下基础的界面。整个IDE的界面大致上可以分为四个部分,分别是代码编辑区、通知栏、工程目录区以及预览区。 代码编辑区 1、中间的是代码编辑区,你可以在这里修改你的代码,以…...
四、文件包含漏洞
一、文件包含漏洞 解释:文件包含漏洞是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行;其还能够使得服务器上的源代码被读取,在PHP里面我们把可重复使用的函数写入到单个文件中&#x…...
Java中基于SSM框架的数据保存方法与日期处理
一、详解 在SSM框架中,保存数据通常涉及到服务层和数据访问层。服务层处理业务逻辑,而数据访问层负责与数据库进行交互。 二、代码 Override public void save(Student student) { Date date new Date(); SimpleDateFormat format new Sim…...
编译器核心技术概览
编译技术是一门庞大的学科,我们无法对其做完善的讲解。但不同用途的编译器或编译技术的难度可能相差很大,对知识的掌握要求也会相差很多。如果你要实现诸如 C、JavaScript 这类通用用途语言(general purpose language),…...
本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴)
按照固有思维方式,深度学习的训练环节应该在云端,毕竟本地硬件条件有限。但事实上,在语音识别和自然语言处理层面,即使相对较少的数据量也可以训练出高性能的模型,对于预算有限的同学们来说,也没必要花冤枉…...
守护进程的理解
什么是守护进程 daemon False # 是否以守护进程方式运行,True守护,False 非守护 在这段代码中,daemon 变量的值决定了进程是否以守护进程方式运行。如果 daemon 的值为 True,则表示进程将以守护进程方式运行,否则为…...
芯片面积快被SRAM占了一半?资深工程师教你从DFT/BIST到形状规划的五大实战遴选心法
芯片SRAM面积优化实战:从架构设计到物理实现的五大决策法则 当一颗7nm芯片中SRAM占比突破40%时,工程师面对的早已不是简单的存储单元选择问题,而是一场关于PPA(性能、功耗、面积)的精密博弈。某次流片后分析显示&#…...
你的论文“说人话”,评委才听得进去:好写作AI的答辩PPT,不是“做”出来的,是“翻译”出来的
你有没有经历过这种时刻:论文写了五万字,文章查重过了,盲审也过了,导师说“内容很扎实”,你长舒一口气。然后导师补了一句:“下周答辩,你做个PPT。” 完了。 不是不会做PPT,是不知…...
精通Metasploit Framework:网络安全攻防实战与全链路渗透解析
一、手把手教学:永恒之蓝漏洞攻防实战详解1.1 漏洞背景与核心原理漏洞编号:MS17-010(CVE-2017-0144)影响范围:Windows Vista/7/8.1/10,Windows Server 2008/2012/2016漏洞类型:SMB协议远程代码执…...
在VMware里装Manjaro 24.0,顺便把开发、办公、影音软件都配齐了(保姆级避坑指南)
VMware虚拟机中打造全功能Manjaro 24.0开发娱乐环境实战指南 对于渴望体验Arch Linux强大功能又担心影响宿主系统的技术爱好者来说,在VMware Workstation Pro中部署Manjaro无疑是最佳选择。本文将带你从零开始构建一个集开发、办公、影音娱乐于一体的完整Linux桌面环…...
AI 驱动 API 敏感数据检测:从架构设计到工程化落地全指南
2025年Verizon数据泄露调查报告给出了一个触目惊心的数字:API相关数据泄露占比首次突破47%,超越传统Web注入攻击,成为全球第一大数据泄露来源。更令人担忧的是,其中83%的泄露事件中,企业部署的传统敏感数据检测系统完全…...
告别数据焦虑:用MixMatch半监督算法,让你的小样本图像分类模型也能起飞
告别数据焦虑:用MixMatch半监督算法,让你的小样本图像分类模型也能起飞 在工业质检、医疗影像分析等领域,数据标注成本往往成为AI落地的最大瓶颈。想象一下:你需要在两周内开发一个缺陷检测系统,但产线只能提供200张标…...
应急响应实战:用Sysinternals AutoRuns揪出潜伏的恶意启动项(附VT扫描技巧)
应急响应实战:用Sysinternals AutoRuns揪出潜伏的恶意启动项(附VT扫描技巧) 在网络安全攻防对抗中,攻击者常通过持久化机制确保恶意代码在系统重启后仍能运行。作为应急响应工程师,我们需要像侦探一样系统性地排查每一…...
SILMA RAGQA V1.0:大语言模型RAG问答评估框架解析
1. 项目背景与核心价值SILMA RAGQA V1.0是当前大语言模型(LLM)评估领域的重要基准测试框架,专门针对检索增强生成(RAG)问答场景设计。这个项目解决了行业内的一个关键痛点:传统LLM评估往往聚焦于通用能力&a…...
LED改造卤素台灯:节能高效技术解析
1. 卤素台灯LED改造的价值与背景传统卤素台灯作为办公和家居照明的常见选择,其核心问题在于能效低下。一颗50W的卤素灯泡实际光效仅为14-18流明/瓦,这意味着超过80%的电能转化成了无用的热能。我曾用红外测温仪实测过工作中的卤素灯泡表面温度——轻松突…...
XXMI Launcher终极指南:一站式游戏模组管理器快速上手教程
XXMI Launcher终极指南:一站式游戏模组管理器快速上手教程 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 你是否厌倦了为每个米哈游游戏单独安装不同的模组管理器&a…...
