【PTA-C语言】实验八-函数与指针II

news2024/11/20 0:44:45
  • 如果代码存在问题,麻烦大家指正 ~ ~
  • 有帮助麻烦点个赞 ~ ~

    目录——实验八-函数与指针II

    • 6-1 移动字母(分数 10)
    • 6-2 删除字符(分数 10)
    • 6-3 函数实现字符串逆序(分数 10)
    • 6-4 递归计算Ackermenn函数(分数 10)
    • 6-5 递归计算P函数(分数 10)
    • 6-6 使用函数求Fibonacci数(分数 10)
    • 6-7 字符定位(最后一次找到的字符)(分数 10)

6-1 移动字母(分数 10)

作者 张泳
单位 浙大城市学院

本题要求编写函数,将输入字符串的前3个字符移到最后。

函数接口定义:

void Shift( char s[] );

其中char s[]是用户传入的字符串,题目保证其长度不小于3;函数Shift须将按照要求变换后的字符串仍然存在s[]里。

裁判测试程序样例:

#include <stdio.h>
#include <string.h>

#define MAXS 10

void Shift( char s[] );

void GetString( char s[] ); /* 实现细节在此不表 */

int main()
{
    char s[MAXS];

    GetString(s);
    Shift(s);
    printf("%s\n", s);
    
    return 0; 
}

/* 你的代码将被嵌在这里 */

输入样例:

abcdef

输出样例:

defabc

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

void Shift( char s[] )
{
    int len=strlen(s);
    if(len>2) {
    int i, t=0;
    char temp[100];
    for(i=0; i<3; i++)
        temp[i] = s[i];
    for(i=3; i<len; i++)
        s[t++] = s[i];
    for(i=0; i<3; i++)
        s[t++] = temp[i];
    }
}

6-2 删除字符(分数 10)

作者 C课程组
单位 浙江大学

本题要求实现一个删除字符串中的指定字符的简单函数。

函数接口定义:

void delchar( char *str, char c );

其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。

裁判测试程序样例:

#include <stdio.h>
#define MAXN 20

void delchar( char *str, char c );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */

int main()
{
    char str[MAXN], c;

    scanf("%c\n", &c);
    ReadString(str);
    delchar(str, c);
    printf("%s\n", str);
    
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

a
happy new year

输出样例:

hppy new yer

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

void delchar( char *str, char c )
{
    char *a=str;
    int i, j=0;
    for(i=0; *(str+i)!='\0'; i++)
        if(*(str+i) != c) {
            *(str+j) = *(str+i);
            j++;
        }
    *(str+j) = '\0';
}

6-3 函数实现字符串逆序(分数 10)

作者 张泳
单位 浙大城市学院

本题要求实现一个字符串逆序的简单函数。

函数接口定义:

void f( char *p );

函数fp指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。

裁判测试程序样例:

#include <stdio.h>
#define MAXS 20

void f( char *p );
void ReadString( char *s ); /* 由裁判实现,略去不表 */

int main()
{
    char s[MAXS];
    
    ReadString(s);
    f(s);
    printf("%s\n", s);
    
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

Hello World!

输出样例:

!dlroW olleH

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

void f( char *p )
{
    int count=0,i;
    char *temp=p, t;
    while(*temp != '\0'){
        count++;
        temp++;
    }
    for(i=0; i<=(count/2-1); i++) {
        t = p[i];
        p[i] = p[count-1-i];
        p[count-1-i] = t;
    }
}

6-4 递归计算Ackermenn函数(分数 10)

作者 C课程组
单位 浙江大学

本题要求实现Ackermenn函数的计算,其函数定义如下:

在这里插入图片描述

函数接口定义:

int Ack( int m, int n );

其中mn是用户传入的非负整数。函数Ack返回Ackermenn函数的相应值。题目保证输入输出都在长整型

范围内。

裁判测试程序样例:

#include <stdio.h>

int Ack( int m, int n );

int main()
{
    int m, n;
    
    scanf("%d %d", &m, &n);
    printf("%d\n", Ack(m, n));
    
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

2 3

输出样例:

9

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

int Ack( int m, int n )
{
    if(m==0)
        return n+1;
    if(m>0 && n>0)
        Ack(m-1, Ack(m, n-1));
    if(n==0 && m>0)
        Ack(m-1, 1);
}

6-5 递归计算P函数(分数 10)

作者 C课程组
单位 浙江大学

本题要求实现下列函数 P ( n , x ) P(n,x) P(n,x)的计算,其函数定义如下:

在这里插入图片描述

函数接口定义:

double P( int n, double x );

其中n是用户传入的非负整数,x是双精度浮点数。函数P返回 P ( n , x ) P(n,x) P(n,x)函数的相应值。题目保证输入输出都在双精度范围内。

裁判测试程序样例:

#include <stdio.h>

double P( int n, double x );

int main()
{
    int n;
    double x;
    
    scanf("%d %lf", &n, &x);
    printf("%.2f\n", P(n,x));
    
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

10 1.7

输出样例:

3.05

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

double P( int n, double x )
{
    double result;
    if(n==0)
        return 1.0;
    else if(n == 1)
        result = x;
    else
        result = (2*n-1) * P(n-1, x) - (n-1) * P(n-2, x);
    return result/n;
}

6-6 使用函数求Fibonacci数(分数 10)

作者 颜晖
单位 浙大城市学院

本题要求实现求Fabonacci数列项的函数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。

函数接口定义:

int fib( int n );

函数fib应返回第nFibonacci数。题目保证输入输出在长整型范围内。

裁判测试程序样例:

#include <stdio.h>

int fib( int n );

int main()
{
    int n;

    scanf("%d", &n);
    printf("%d\n", fib(n));

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

7

输出样例:

13

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

int fib(int n)
{
    int a=1, b=1, i, res;
    if(n<3)
        return 1;
    else
        for(i=1; i<n-1; i++) {
            res = a+b;
            a = b;
            b = res;
        }
    return res;
}

6-7 字符定位(最后一次找到的字符)(分数 10)

作者 张泳
单位 浙大城市学院

本题要求定义一个函数,在字符串中查找字符,并定位在最后一次找到的位置。

函数接口定义:

char * match(char *s, char ch);

其中s是字符串首地址,ch是要查找的字符。要求函数在字符串s中查找字符ch,如果找到,返回最后一次找到的该字符在字符串中的位置(地址);否则,返回空指针NULL

裁判测试程序样例:

#include <stdio.h> 
char *match(char *s, char ch); 

int main(void )
{
    char ch, str[80], *p = NULL;

    scanf("%s", str);
    getchar();                 /* 跳过输入字符串和输入字符之间的分隔符 */
    ch = getchar();          /* 输入一个字符 */
    p = match(str, ch);     /* 调用函数match() */
    if( p != NULL ){        /* 找到字符ch */
        printf("%s\n", p);
    }else{ 
        printf("Not Found.\n");
    }

    return 0;
}

/* 请在这里填写答案 */

输入样例1:

program
r

输出样例1:

ram

输入样例2:

program
x

输出样例2:

Not Found.

代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB

参考代码

char * match(char *s, char ch)
{
    int i;
    char *pos = NULL;
    for(i=0; s[i]!='\0'; i++)
        if(s[i]==ch)
            pos = s+i;
    return pos;
}

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

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

相关文章

CTFshow web入门web127-php特性30

开启环境: extract() 函数从数组中将变量导入到当前的符号表&#xff0c;使用数组键名作为变量名&#xff0c;使用数组键值作为变量值 举例就是?a2&#xff0c;就会变成$a2&#xff0c;这里ctf_show有个_需要构造&#xff0c;前面说过php中变量名只有数字字母下划线&#xff…

BIND-DNS配置介绍

一、主要配置文件 /etc/named.conf options { //Option 段全部配置 listen-on port 53 { 127.0.0.1; };//表示BIND将在53端口监听&#xff0c;若需要对所有IP进行监听&#xff0c;则修改为// listen-on port 53 { any; }; directory "/var/named"…

WPF+Halcon 培训项目实战(11):HS组件封装

文章目录 前言相关链接项目专栏运行环境匹配图片封装组件新增类库项目选择依赖顺序并添加Nuget修改原本矩形方法运行结果&#xff1a; 对矩形进行抽象封装抽象基类矩形抽象改造 圆形抽象封装代码运行结果 前言 为了更好地去学习WPFHalcon&#xff0c;我决定去报个班学一下。原…

leetcode2487.从链表中移除节点

文章目录 题目思路复杂度Code 题目 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 1&#xff1a; 输入&#xff1a;head [5,2,13,3,8] 输出&#xff1a;[13,8] 解释&#xff1a;需要移除的节点是 5 &#xff0…

1.2作业

温湿度数据通过中断处理显示到数码管中 main.c #include "spi.h"#include"si7006.h"int main(){int i0,j0,m0,n0;int num[10] {0xFC,0x60,0xDA,0xF2,0x66,0xB6,0x3E,0xE0,0xFE,0xF6};SPI_init();unsigned short hum;short tem;//进行si7006的初始化si700…

关于我花费六千多组了台window+Linux主机

一边学习&#xff0c;一边总结&#xff0c;一边分享&#xff01; 写在前面 我在2023年12月组了一台“洋垃圾”的主机&#xff0c;一边当做台式机使用&#xff0c;一边当做服务器使用。这个方案算是相对比较划算的方案。我开始是打算直接单做服务器使用的&#xff0c;以及内存…

【react-taro-canvas】用canvas手写一个数字、字母混合的行为验证码

用canvas手写一个数字、字母混合的行为验证码 实现效果源码 实现效果 源码 import Taro from "tarojs/taro"; import { View, Canvas, Input, Button } from "tarojs/components"; import { useState, useEffect } from "react"; // 画随机线函…

Android14之禁掉Selinux的两种方式(一百七十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

安装elasticsearch、kibana、IK分词器、扩展IK词典

安装elasticsearch、kibana、IK分词器、扩展IK词典 后面还会安装kibana&#xff0c;这个会提供可视化界面方面学习。 需要注意的是elasticsearch和kibana版本一定要一样&#xff01;&#xff01;&#xff01; 否则就像这样 elasticsearch 1、创建网络 因为我们还需要部署k…

cJSON代码解读

1、背景 cJSON用了很久&#xff0c;但是对它一直不太了解。这次向添加对long long类型的支持&#xff0c;一直出问题。因为有以前添加两位小数float的经历&#xff0c;我觉得会很轻松&#xff0c;没想到翻车了。于是有了这边文档&#xff0c;阅读了部分博主对cJSON的解析&…

安装VS Code到AWS EC2 Linux 2

文章目录 小结问题及解决参考 小结 本文记录了安装VS Code到AWS EC2 Linux 2。 问题及解决 安装VS Code到AWS EC2 Linux 2采取了以下步骤&#xff1a; 更新VS Code的YUM源&#xff1a; [ec2-userip-100-92-28-119 ~]$ sudo rpm --import https://packages.microsoft.com/k…

LOG滤波器原理探究---计算机视觉和特征检测

先来看几个滤波器公式&#xff1a; 高斯滤波器&#xff1a; G ( x , y ; σ ) 1 2 π σ 2 e − x 2 y 2 2 σ 2 G(x,y;\sigma) \frac{1}{2 \pi \sigma^2} e^{-\frac{x^2 y^2}{2\sigma^2}} G(x,y;σ)2πσ21​e−2σ2x2y2​ 图像的二阶导数&#xff1a; ∇ 2 f ∂ 2 f ∂…

案例086:基于微信小程序的影院选座系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

CTF流量分析经典例题详解

目录 入门题型 题目&#xff1a;Cephalopod(图片提取) 题目&#xff1a;特殊后门(icmp协议信息传输) 题目&#xff1a;手机热点(蓝牙传输协议obex,数据提取) 题目&#xff1a;想蹭网先解开密码(无线密码破解) 进阶题型 题目&#xff1a;抓到一只苍蝇(数据包筛选,数据提…

JAVAEE初阶相关内容第二十弹--HTTP协议

写在前&#xff1a;2024年啦&#xff01;新的一年要努力学习啦 本篇博客围绕HTTP协议&#xff0c;对HTTP协议进行了解&#xff0c;需要理解其工作过程&#xff0c;对HTTP协议格式要清楚&#xff0c;通过抓包工具进行协议分析&#xff0c;认识“方法”、“请求报头”&#xff0c…

什么是安全信息和事件管理(SIEM),有什么用处

安全信息和事件管理&#xff08;SIEM&#xff09;对于企业主动识别、管理和消除安全威胁至关重要。SIEM 解决方案采用事件关联、AI 驱动的异常检测以及机器学习驱动的用户和实体行为分析 &#xff08;UEBA&#xff09; 等机制来检测、审查和应对网络安全威胁。这些功能使 SIEM …

OpenCV图像处理——C++实现亚像素尺寸标定板边缘轮廓提取

前言 标定模板&#xff08;Calibration Target&#xff09;在机器视觉、图像测量、摄影测量以及三维重建等应用中起着重要的作用。它被用于校正相机的畸变&#xff0c;确定物理尺寸和像素之间的换算关系&#xff0c;并建立相机成像的几何模型。通过使用相机拍摄带有固定间距图…

基于simiulink的flyback反激型电路建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1 Flyback反激型电路的基本原理 4.2 Flyback反激型电路的数学建模 4.3 Flyback反激型电路的仿真方法 5.完整工程文件 1.课题概述 flyback反激型电路建模与仿真。反激变换器在开关管导通时电源将电能…

IDEA2023 最新版详细图文安装教程(安装+运行测试+汉化+背景图设置)

IDEA2023 最新版详细图文安装教程 名人说&#xff1a;工欲善其事&#xff0c;必先利其器。——《论语》 作者&#xff1a;Code_流苏(CSDN) o(‐&#xff3e;▽&#xff3e;‐)o很高兴你打开了这篇博客&#xff0c;跟着教程去一步步尝试安装吧。 目录 IDEA2023 最新版详细图文安…

LiveGBS流媒体平台GB/T28181常见问题-如何配置快照目录快照存储默认目录目录如何配置

LiveGBS流媒体平台GB/T28181常见问题-如何配置快照目录快照存储默认目录目录如何配置 1、快照目录2、指定快照目录3、搭建GB28181视频直播平台 1、快照目录 部署LiveGBS后&#xff0c; 再查看通道播放后 或是 获取通道快照后&#xff0c;就会在LiveSMS部署的服务器里面存储对应…