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

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

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

相关文章

后端代码1

// 新增 public JsonResultVo<?> create(ApiIgnore RequestAttribute(ConstVal.REQ_USER) BaseUser baseUser,RequestBody IUTradeBuyPreserveVo iuTradeBuyPreserveVo) {//权限判断if (!baseCompanyService.dataPermission(baseUser, iuTradeBuyPreserveVo.getCompanyi…

资深用户力荐:山海鲸可视化五大常用图表解析

作为一名资深的山海鲸可视化用户&#xff0c;我在长期的数据分析和可视化过程中&#xff0c;深刻体会到了山海鲸可视化平台中各类图表的强大功能和实用性。下面&#xff0c;我将为大家介绍山海鲸可视化中常用的五个可视化图表&#xff0c;并分享我的使用心得。 一、柱状图 柱…

数据安全之路:Databend 用户策略指南

在 Databend 中&#xff0c;我们致力于保护用户的数据安全。除了身份认证之外&#xff0c;我们还提供了多种访问策略&#xff0c;包括网络策略&#xff08;Network Policy&#xff09;、密码策略&#xff08;Password Policy&#xff09;和数据脱敏策略&#xff08;Masking Pol…

全网最详细的 Ubuntu 18.04 安装Livox mid-360驱动,测试 fast_lio2

目录 一、前言 二、依赖的环境 三、 安装Livox-SDK2&#xff0c;fast_lio2 和 livox_ros_driver2 (1) 安装Livox-SDK2 (2) 安装 fast_lio2 和 livox_ros_driver2 四、mid-360 设备硬件设置 五、运行设备 六、topic信息查看 一、前言 Livox mid-360需要使用Livox-SDK2…

我们常用Linux命令总结

Linux作为一种自由和开放源代码的操作系统&#xff0c;广泛应用于各种计算机系统中&#xff0c;尤其是服务器环境。在Linux系统中&#xff0c;命令行是管理和操作系统的主要方式之一&#xff0c;熟练掌握常用的Linux命令对于系统管理员、开发人员和其他使用者来说都是至关重要的…

算法6.4-6.6DFS

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky Li Email : 3435673055qq.com Time of completion&#xff1a;2024.03.27 Last edited: 2024.03.27 目录 算法6.4-6.6DFS 第1关&#xff1a;算法6.5采用邻接矩阵表示图的深搜 任务描述 相关知识 编程要求…

阿里CICD流水线Docker部署,将阿里镜像私仓中的镜像部署到服务器中

文章目录 阿里CICD流水线Docker部署&#xff0c;将阿里镜像私仓中的镜像部署到服务器中一、CICD流水线的初步使用可以看我之前的两篇文章二、添加部署任务&#xff0c;进行Docker部署&#xff0c;创建一个阿里的试用主机1、选择主机部署&#xff0c;并添加服务主机2、创建免费体…

OpenHarmony之媒体组件模块简介

源码 本文基于OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;3.2 Release源码foundation目录下的player_framework&#xff0c;在OpenHarmony 2.0 Release版本当中&#xff0c;这个模块的名字叫媒体组件模块&#xff0c;为了方便理解我们在本文中仍旧延…

Python Flask-Mail实现邮件发送

一、邮件发送的扩展 关于如何找到flask发送邮件的插件&#xff1f;&#xff0c;上一篇已经分享了如何找到第三方插件&#xff0c;也找到了插件flask-mail的使用文档&#xff0c;那我们就来实战吧 二、根据文档&#xff0c;总结发送邮件的流程 从文档中可以总结出发送邮件的步…

Java Web-Tomcat

Web服务器 Web服务器是一个软件程序,对HTTP协议的操作进行封装,使得程序员不必直接对协议进行操作,让Web开发更加便捷。主要功能是“提供网上信息浏览服务”。 Tomcat&#xff0c;是一个 HTTP 服务器。我们只需要在服务器中安装一个Web服务器如Tomcat&#xff0c;然后就可以将…

2024年3月GESP等级认证C++编程五级真题

2024年3月GESP认证C编程五级真题试卷 题目总数&#xff1a;27 总分数&#xff1a;100 选择题 第 1 题 单选题 唯⼀分解定理描述的内容是 ( ) ? A.任意整数都可以分解为素数的乘积 B.每个合数都可以唯⼀分解为⼀系列素数的乘积 C.两个不同的整数可以分解为相同…

3BUS213621-001通讯模块3BUS213621001

3BUS213621-001通讯模块3BUS213621001 3BUS213621-001通讯模块3BUS213621001 3BUS213621-001通讯模块3BUS213621001 产品编号&#xff1a;3BUS213621-001 ABB 型号名称&#xff1a;HKQCS PARTS ON LINE 目录描述&#xff1a;SBC 组件 ABB 型号名称&#xff1a;HKQCS PARTS …