PTA-练习9

目录

实验10-4 递归实现顺序输出整数

实验10-10 十进制转换二进制

实验10-6 递归求简单交错幂级数的部分和

实验11-1-2 输出月份英文名

实验11-1-6 指定位置输出字符串

实验11-1-8 查找子串


递归的基本思路:

  1. 推出递归的条件或者进入递归的条件
  2. 每层递归需要执行的代码

第一种简单的就是:像Fabonacci数列和求阶乘这样,只需要判断递归推出的条件,然后递归加或者乘

int f( int n ){
    if(n==0){
        return 0;
    }
    if(n==1){
        return 1;
    }
    return f(n-1)+f(n-2);
}

第二种复杂一点就是,满足条件进入递归,直到最深层后不满足条件,然后依次推出递归执行相应的操作,比如依次输出123456的数字

void printdigits( int n ){
    
    if (n / 10 > 0)
        printdigits(n / 10);
    
    printf ("%d\n", n % 10);
}

实验10-4 递归实现顺序输出整数

void printdigits( int n ){
    
    if (n / 10 > 0)
        printdigits(n / 10);
    
    printf ("%d\n", n % 10);
}

 实验10-10 十进制转换二进制

void dectobin( int n ){
    if(n/2!=0){
        dectobin(n/2);
    }
    printf("%d",n%2);
}

 实验10-6 递归求简单交错幂级数的部分和

#include <stdlib.h>
double fn( double x, int n ){
    if(n==0){
        return 0;
    }
    return pow(-1,n-1)*pow(x,n)+fn(x,n-1);
}


实验11-1-2 输出月份英文名

强调一下,函数里面如果要返回函数里面的形式参数,需要使用指针形式

  • 如果这里使用char str[12][100]定义二维字符串数组的话,参数传递不出函数就会被释放,所以使用指针字符串
  • 还有就是,指针指向的内容为空的话,NULL表示
//好好好,考英语是吧
#include <string.h>
char *getmonth( int n ){
    if(n<1||n>12){
        return NULL;
    }
    char *str[12]={"January","February","March","April","May","June","July","August","September","October","November","December"};
    
    return str[n-1];
}

如果不想这么麻烦直接直接:

char *getmonth( int n ){
    switch(n){
        case 1: return "January";
        case 2: return "February";
        case 3: return "March";
        case 4: return "April";
        case 5: return "May";
        case 6: return "June";
        case 7: return "July";
        case 8: return "August";
        case 9: return "September";
        case 10: return "October";
        case 11: return "November";
        case 12 :return "December";
        default: return NULL;
    }
}

实验11-1-6 指定位置输出字符串

#include<string.h>
#include <stdlib.h>
char *match( char *s, char ch1, char ch2 ){
    int n=strlen(s);
    char *a=(char*)malloc(sizeof(char)*n);
    int j=0;
    int i=0;
    for(i=0;i<n;i++){
        if(s[i]==ch1){
            while(s[i]!=ch2){
                a[j]=s[i];
                j++;
                i++;
            }
            a[j]=ch2;
            j++;
            break;
        }//of if;
        
    }
    printf("%s\n",a);
    for(;i+1<n;i++){
        a[j]=s[i+1];
        j++;
    }
    return a;
    
}

实验11-1-8 查找子串

返回数组中某个元素的指针,直接使用数组名a+元素的下标就可以了

比如求char a[100]="dhdssjsjbsdd",中求元素字符‘b’的地址指针,直接b+8就可以了

#include <stdlib.h>
#include <string.h>
//sjdhjdhdj
//dhd
/*char *search( char *s, char *t ){
    int n=strlen(s);
    int j=0;
    int i=0;
    int m=strlen(t);
    for(i=0;i<n;i++){
        if(s[i]==t[j]){
            j++;
        }else if(s[i]!=t[j]){
            j=0;
        }
        if(j==m){
            return s+i-m+1;
        }
        
    }
    return -1;
}
*/
#include <string.h>

char *search(char *s, char *t) {
    int n = strlen(s);
    int m = strlen(t);
    for (int i = 0; i < n; i++) {
        int j = 0;
        while (j < m && s[i + j] == t[j]) {
            j++;
        }
        if (j == m) {
            return s + i;
        }
    }
    return NULL;
}

/*
char *search( char *s, char *t )
{
  return strstr(s,t);
}

*/

 OKOK,以后字符串函数为四个了

  1. strlen(a),返回字符串a的长度
  2. strcpy(b,a),把字符串a赋值给字符串b(copy,不能使用=)
  3. strcmp(a,b),比较字符串a比的大小,a>b返回正数,等于返回0
  4. strstr(a,b),查找子串b在主串a中出现的位置,如果出现返回第一个字符的地址,如果没有则返回NULL

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你绘画原型图:Axure的安装使用

&#x1f341; 作者&#xff1a;知识浅谈&#xff0c;CSDN签约讲师&#xff0c;CSDN博客专家&#xff0c;华为云云享专家&#xff0c;阿里云专家博主 &#x1f4cc; 擅长领域&#xff1a;全栈工程师&#xff0c;大模型&#xff0c;爬虫、ACM算法 &#x1f492; 公众号&#xff…

DC-3靶机

一.环境搭建 下载地址&#xff1a; http://www.five86.com/downloads/DC-3-2.zip 下载不下来的可以用迅雷输入上面的网址进行下载 虚拟机配置&#xff1a; 切换连接桥接模式为nat模式&#xff0c;启动靶机&#xff0c;出现如下报错&#xff0c;进入虚拟机配置 选中CD/DVD&…

通过Appium和Xcode Accessibility Inspector获取iOS应用元素定位的方法

在 iOS 移动应用程序上使用选择器查找元素定位是我们在移动端 UI 自动化测试的先决条件。 但是&#xff0c;由于应用程序内容在原生 iOS 应用程序中的呈现方式&#xff0c;我们可以用来定位应用程序元素的选择器与 Web 浏览器元素有很大不同。 在本文中&#xff0c;我们将了解 …

百元开放式耳机怎么选?五款入手不亏的上乘产品推荐

耳机已经成为了我们生活中不可或缺的一部分&#xff0c;无论是通勤路上的音乐陪伴&#xff0c;还是家中观影的沉浸体验&#xff0c;一款优质的耳机都能为我们带来极大的享受。而在众多耳机类型中&#xff0c;开放式耳机因其独特的声场表现和舒适的佩戴体验&#xff0c;受到了越…

弹性伸缩 AS

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

JavaScript进阶5之垃圾回收(计算机组成、解释与编译、JavaScript引擎、垃圾回收、内存管理)、运行机制(浏览器进程分类、浏览器事件循环)

垃圾回收&运行机制 垃圾回收计算机组成解释与编译JavaScript引擎V8引擎 垃圾回收引用计数法标记清除&#xff08;mark-sweep&#xff09;算法 内存管理新生代 运行机制浏览器进程分类&#xff1a;浏览器事件循环宏任务微任务整体流程浏览器事件循环案例一案例二 垃圾回收 …

成都克鲁斯机器人电路板故障维修攻略,快来了解一下!

一、克鲁斯机器人电路板维修步骤 断开电源&#xff1a;在进行电路维修前&#xff0c;务必断开机器人的电源&#xff0c;确保安全。 拆卸电路板&#xff1a;根据电路图或维修手册&#xff0c;小心拆卸故障电路板。注意记录拆卸过程中的细节&#xff0c;以便后续重新安装。 更换损…

Linux中APP读取按键的4种方法

查询方式 驱动程序中构造、注册一个file_operations结构体&#xff0c;里面有对应的open,read函数。 APP 调用 open 时&#xff0c;导致驱动中对应的 open 函数被调用&#xff0c;在里面配置 GPIO 为输入引脚。APP 调用 read 时&#xff0c;导致驱动中对应的 read 函数被调用&a…

一个金融长期主义案例:金融壹账通的财务减亏与生产力创新之路

产业变革正在进入新一轮竞速期&#xff0c;社会对新质生产力的需求越来越迫切。在此背景下&#xff0c;金融业也正在坚定重塑自我、向外赋能的决心。 在微观的企业角度上&#xff0c;改变也正悄然发生。3月18日&#xff0c;在美港股双重上市的金融壹账通公布2023年年度业绩报告…

正则表达式不会用?一篇教你快速搞懂 !

目录 前言一、基础字符二、一系列常用的字符&#xff1b;1、一些元字符&#xff08;Meta-characters&#xff09; 三、一些高级概念1、贪婪与懒惰匹配2、两个实例加深理解1.颜色值的匹配&#xff1a;RGBS值2.ipv4 地址匹配 四、正则表达式常用语法**1.Flags&#xff08;标志符或…

测试开发工程师(QA)职业到底需要干些什么?part5:性能测试工程师QA

工作职责 性能测试工程师&#xff08;Performance Testing Engineer&#xff09;是负责评估和优化软件、应用程序或系统在不同负载和压力条件下的性能的专业人员。他们的工作职责包括以下几个方面&#xff1a; 性能测试计划&#xff1a;性能测试工程师与开发团队、产品团队和系…

工作的第二天

昨天的进度 写今天思路如何做评论表的增删该查评论表的增加 选择用户和商品 弹出框出现了问题 检查代码 结构没有问题 定义变量也没有问题 控制太中也没有报错信息 问题解决了 出现的问题在哪里定义的变量都有问题应该现在 setup 上面 定义一个 变量 const ref ref(fals…

Autosar-CanNm、Nm配置详解(免费)-2

3.5NM配置项 3.5.1NmGlobalConstants NmNumberOfChannels Nm管理几个Can通信&#xff0c;通信我们只有智能进入网需要网络管理&#xff0c;因此一般这里只需要填1。 NmNumberOfClusters 如果NM需要与几个CanNm进行协同处理的话&#xff0c;那需要把这些配置为Cluster,即组…

让 AI 帮你写代码,开发提效神器来了

如今&#xff0c;大量程序员已经习惯在 AI 辅助下进行编程。据调研&#xff0c;AI 编码工具将程序员工作效率提升 50% 以上。 通义灵码是目前国内最受开发者喜爱的 AI 编码助手&#xff0c;可以提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、…

设置http响应报文

一、总结&#xff1a; (1)设置响应状态码&#xff1a; response.statusCode (2)设置响应状态描述&#xff1a; response.statusMessage() 使用的极少 (3)设置响应头信息&#xff1a; response.setHeader(头值,头名) (4)设置响应体&#xff1a; response…

一文详解CDGA证书含金量,非常详细!

在信息技术飞速发展的今天&#xff0c;数据已成为企业宝贵的资产。正确地管理和治理这些数据&#xff0c;对于企业实现数据价值最大化、保障数据安全和合规至关重要。这也使得数据治理领域的专业人才需求持续增长。CDGA&#xff08;Certified Data Governance Architect&#x…

【并发】第三篇 Hash冲突的解决方法

导航 一. 简介二. 解决Hash冲突的方法1. 开放地址法1.1 线性探测再散列1.2 二次探测再散列1.3 伪随机探测再散列2. 链地址法3. 再哈希法一. 简介 哈希(hash)是将任意长度的输入数据转化为固定长度的输出数据的算法。哈希函数会将输入数据压缩并映射为一个固定长度的哈希值,…

Trello国内替代工具有哪些?分享5款

盘点5款类似Trello的本地部署项目管理工具&#xff1a;1.PingCode&#xff1b;2.Worktile&#xff1b;3.Teambition&#xff1b;4.redmine&#xff1b;5.TAIga.io。 Trello是一款杰出的协作与工作管理应用&#xff0c;专为追踪团队项目、凸显当前活动任务、分配责任人&#xff…

面试题 之 webpack

1.说说你对webpack理解&#xff1f;解决什么问题&#xff1f; Webpack 是实现前端项目的模块化&#xff0c;用于现代 JavaScript 应用程序的静态模块打包工具&#xff0c;被webpack 直接引用的资源打包进 bunde.js的资源&#xff0c;当webpack 处理应用程序时,它会在内部构建一…

Charles for Mac 强大的网络调试工具

Charles for Mac是一款功能强大的网络调试工具&#xff0c;可以帮助开发人员和测试人员更轻松地进行网络通信测试和调试。以下是一些Charles for Mac的主要特点&#xff1a; 软件下载&#xff1a;Charles for Mac 4.6.6注册激活版 流量截获&#xff1a;Charles可以截获和分析通…