多文件编辑作业(2023.1.9)

2023-11-05

第一题:

main.c:

#include"head.h"
int main(int argc, const char *argv[])
{
    char str[10]={"abcdefg"};
    MyStrRev(str);
    char a[]="hello";
    StrRevRec(a,strlen(a));
    printf("\n");
    char dest[20]="xjx";
    char src[]="xjj";
    char *p=MyStrcat(dest,src);
    printf("%s\n",p);
    char str1[20]="xdbdubsfd";
    char str2[10]="love";
    int n;
    MyStrcmp(str1,str2);
    if((n=MyStrcmp(str1,str2))==0)
    {
        printf("str1=str2\n");
    }
    else if(n>0)
        printf("str1>str2\n");
    else
        printf("str1<str2\n");
    char str3[20]="wsadgud";
    char str4[10]="hello";
    MyStrcpy(str3,str4);
    puts(str3);
    char str5[10]="xjxxjj";
    int len=Mystrlen(str5);
    printf("len=%d\n",len);
    return 0;
}

head.h:

#ifndef __HEAD_H__
#define __HEAD_H__

#include<stdio.h>
#include<string.h>
void MyStrRev(char *p);
void StrRevRec(char a[], int len);
char *MyStrcat(char *dest,const char *src);
int MyStrcmp(const char *s1,const char *s2);
char *MyStrcpy(char *dest,const char *sec);
long Mystrlen(const char *s1);
#endif

test.c:

#include"head.h"
void MyStrRev(char *p)
{
    int n=strlen(p)-1,i=0;
    char t;
    while((p+i)<(p+n))
    {
        t=*(p+i);*(p+i)=*(p+n);*(p+n)=t;
        i++;n--;
    }
    puts(p);
}
void StrRevRec(char a[], int len)
{
    if(len==1)
    {
        printf("%c",a[len-1]);
    }
    else
    {
        printf("%c",a[len-1]);
        StrRevRec(a,len-1);
    }
}
char *MyStrcat(char *dest,const char *src)
{
    char *p=dest;
    while(*dest!='\0')
        dest++;
    while(*src!='\0')
    {
        *dest=*src;
        dest++;
        src++;
    }
    *dest='\0';
    return p;
}
int MyStrcmp(const char *s1,const char *s2)
{
    while(*s1==*s2)
    {
        if(!(*s1))
        {
            break;
        }
        else
        {
            s1++;
            s2++;    
        }
    }
    return *s1-*s2;
}
char *MyStrcpy(char *dest,const char *sec)
{
    while(*sec)
    {
        *dest=*sec;
        dest++;
        sec++;
    }
    *dest='\0';
    return dest;
}
long Mystrlen(const char *s1)
{
    long count=0;
    while(*s1)
    {
        count++;
        s1++;
    }
    return count;
}

第二题:

main.c:

#include"head.h"
int main(int argc, const char *argv[])
{
    char str[]="AGAB%Sr67gs5ffwt+%";
    int n=strlen(str);
    Sort(str,n);
    printf("%s\n",str);
    char *p[4]={DaXie(str,n),ShuZi(str,n),XiaoXie(str,n),TeShu(str,n)};
    char t[100];
    for(int i=0;i<4;i++)
    {
        strcat(t,p[i]);
    }
    puts(t);
    return 0;
}

head.h:

#ifndef __HEAD_H__
#define __HEAD_H__

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

    void Sort(char *p,int n);
    char *DaXie(char *p,int n);
    char *ShuZi(char *p,int n);
    char *XiaoXie(char *p,int n);
    char *TeShu(char *p,int n);

#endif

test.c:

#include"head.h"
void Sort(char *p,int n)
{
    int i,j;
    char t;
    for(i=1;i<n;i++)
    {
        for(j=0;j<n-i;j++)
        {
            if(*(p+j) > *(p+j+1))            
            {
                t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;
            }
        }
    }
}
char *DaXie(char *p,int n)
{
    static char dx[20]="";
    static char *q=dx;
    int i=0,j=0;
    while(*(p+i))
    {
        if(*(p+i)>='A'&&*(p+i)<='Z')
        {    
            *(q+j)=*(p+i);
                j++;
        }
        i++;
    }
    *(q+j)='\0';
    return q;
}
char *ShuZi(char *p,int n)
{
    static char sz[20]="";
    static char *q=sz;
    int i=0,j=0;
    while(*(p+i))
    {
        if(*(p+i)>='0'&&*(p+i)<='9')
        {    
            *(q+j)=*(p+i);
                j++;
        }
        i++;
    }
    *(q+j)='\0';
    return q;
}
char *XiaoXie(char *p,int n)
{
    static char xx[20]="";
    static char *q=xx;
    int i=0,j=0;
    while(*(p+i))
    {
        if(*(p+i)>='a'&&*(p+i)<='z')
        {    
            *(q+j)=*(p+i);
            j++;
        }
        i++;
    }
    *(q+j)='\0';
    return q;
}
char *TeShu(char *p,int n)
{
    static char ts[20]="";
    static char *q=ts;
    int i=0,j=0;
    while(*(p+i))
    {
        if(!((*(p+i)>='A'&&*(p+i)<='Z')||(*(p+i)>='0'&&*(p+i)<='9')||(*(p+i)>='a'&&*(p+i)<='z')))
        {    
            *(q+j)=*(p+i);
            j++;
        }
        i++;
    }
    *(q+j)='\0';
    return q;
}

第三题:

判断一维字符数组是否存在回文字符串

例如: char a[] [10]={"asd","asa","werew","yuyu"};

提示存在回文字符串,回文字符串对称

main.c:

#include"head.h"
int main(int argc, const char *argv[])
{
    char a[][10]={"asd","asa","werew","yuyu"}; 
    int n=sizeof(a)/sizeof(a[0]);
    int z=LoopStr(a,n);
    if(z==1)
        printf("存在回文字符串\n");
    if(z==0)
        printf("不存在回文字符串\n");
    return 0;
}

head.h:

#ifndef __HEAD_H__
#define __HEAD_H__

#include<stdio.h>
#include<string.h>
int LoopStr(char a[][10],int n);
int HuiWen(char *p);

#endif

test.c:

#include"head.h"
int LoopStr(char a[][10],int n)
{
    int i;
    for (i=0;i<n;i++)
    {
        int z=HuiWen(a[i]);
        if(z==1)
            return 1;
    }
    return 0;
}
int HuiWen(char *p)
{
    char *q=p;
    int i=0;
    int j=strlen(p)-1;
    char t;
    while(i<j)
    {
        if(*(q+i)!=*(p+j))
            return 0;
        else
        {
            i++;
            j--;
        }
    }
    return 1;
}

课堂练习:

main.c:

#include"head.h"
int main(int argc, const char *argv[])
{
    Fibonacci();
    FibonacciArr();
    int i;
    for(i=1;i<=10;i++)
    {
        int num=FibonacciRec(i);
        printf("%d\t",num);
    }
    printf("\n");
    return 0;
}

head.h:

#ifndef __HEAD_H__
#define __HEAD_H__

#include<stdio.h>
#include<string.h>
void Fibonacci();
void FibonacciArr();
int FibonacciRec(int n);

#endif

test.c:

#include"head.h"
void Fibonacci()
{
    int a=1,b=1,c;
    int n=10;
    printf("%d\t%d\t",a,b);
    for(int i=3;i<=n;i++)
    {
        c=a+b;
        a=b;
        b=c;
        printf("%d\t",c);
    }
    printf("\n");
}
void FibonacciArr()
{
    int arr[20]={1,1};
    int n=10;
    printf("%d\t%d\t",arr[0],arr[1]);
    for(int i=2;i<n;i++)
    {
        arr[i]=arr[i-1]+arr[i-2];
        printf("%d\t",arr[i]);
    }
    printf("\n");
}
int FibonacciRec(int n)
{
    if(n==1||n==2)
    {
        return 1;
    }
    else
        return FibonacciRec(n-1)+FibonacciRec(n-2);
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多文件编辑作业(2023.1.9) 的相关文章

随机推荐

  • java高并发处理 java处理高并发的几种方法

    一 背景综述 并发就是可以使用多个线程或进程 同时处理 就是并发 不同的操作 高并发的时候就是有很多用户在访问 导致系统数据不正确 糗事数据的现象 对于一些大型网站 比如门户网站 在面对大量用户访问 高并发请求方面 基本的解决方案集中在这样
  • Dubbo分布式日志追踪,多线程不能获取窜ID和IP问题

    接着上一篇日志 当用MDC或者ThreadContext来put或者get数据的时候 不同线程是获取不到的 他们都是ThreadLocal维护 所以线程独立 如果需要子线程获取则将参数传入 在Thread的run方法执行的时候将传入的ID和
  • Ubuntu & CentOS配置JAVA JDK环境

    Linux配置Java JDK 环境 下载地址 https www oracle com technetwork java javase downloads jdk8 downloads 2133151 html 根据系统相应版本进行下载
  • 程序流程图

    程序流程图又称程序框图 是以特定图形符号外加文字说明描述程序运行具体步骤的图示 它结合相应的算法 经由处理框 判断框 起止框 连接点 流程线等构成整个流程图 在工作过程中 流程图主要是说明某一特定过程 尤其对于产品经理和交互设计师来说 学会
  • Qt Creator登录对话框

    实现功能 在弹出对话框中填写用户名和密码 按下登录按钮 如果用户名和密码均正确则进入主窗口 如果有错则弹出警告对话框 实现原理 通过上节的多窗口原理实现由登录对话框进入主窗口 而用户名和密码可以用if语句进行判断 实现过程 1 先新建Qt4
  • 基于D-S证据理论的数据融合研究与应用

    1 课题背景及研究的目的和意义 1 1课题背景 证据理论源于20世纪60年代美国哈弗大学的数学家A P Dempster 利用上 下概率来解决多值映射问题方面的研究工作 后来他的学生G Shafer对证据理论引入了信任函数和似然函数的概念
  • 指针数组——元素为指针的数组

    说明 指针数组就是一个数组 这个数组的数组单元都是指针型数据 定义 int a 6 1 2 3 4 5 6 int p 6 数据类型符 变量名 常量表达式 用法 for i 0 i lt 6 i p i a i 就是一个元素为指针的数组 注
  • CTF比赛中常见的MISC解题方法(不涉及内存取证和流量分析)仅供菜鸟,大佬绕道

    我们在ctf比赛中 大多数时候签到题都是misc 会不会有小伙伴因为签到题而感到头痛 其实misc的签到题是非常简单的 不然怎么可能叫签到 好吧 废话不多说 直接说干货 1 题目直接给了编码 比如 前几天的第一届 长城杯 的misc签到题
  • 单片机学习 7-IO拓展(串转并)-74HC595

    I O拓展 串转并 74HC595芯片介绍 上面两张都是 74HC595 芯片管脚图 左侧的 1 脚是 QB 而右侧芯片的 1 脚是 Q1 左侧芯片的 11 脚是 SCK 而右侧芯片的 11 脚是 SH CP 还有很多其他管脚不一样 其实这
  • 【Linux命令详解

    文章标题 简介 一 参数列表 二 使用介绍 1 pwd命令的基本使用 2 pwd命令中的参数 3 pwd命令的工作机制 4 pwd命令的实际应用 总结 简介 pwd命令是Linux中的基础命令之一 使用该命令可以快速查看当前工作目录 在掌握
  • go 实现结构体的复制

    go 将一个结构体里面的数据全部复制到另一个结构体 import reflect func DeepFields ifaceType reflect Type reflect StructField var fields reflect S
  • KEIL Real view MDK中插入空操作NOP

    折腾了大半天 才搞明白一个空操作的指令 先在网上查有的说是 asm NOP 从intrins h里调用 可犄角旮旯全找了 也没看到什么intrint h的文件 如果直接用 就出现 error 1113 Inline assembler no
  • git获取本地用户名和密码命令

    1 查看本地 Git 配置文件 在使用 Git 的过程中 用户的用户名和邮箱地址都会被保存在本地 Git 配置文件中 因此 可以通过查看该配置文件来获取用户名和密码 打开 Git Bash 或者终端窗口 输入以下命令 查看用户名 git c
  • kaggle在output上;pytorch安装包下载后怎么装;(最全的安装包下载带cuda版本)DGL113下载;报错:UserWarning: NVIDIA GeForce RTX;fcntl报错

    1 kaggle在output上运行 可以从kaggle上查看https www kaggle com houzitest cake1111 因为input只能读 所以再output上运行 再执行 import torch print to
  • (C++)输入一行字符,分别统计出其中英文字母、空格、数字的个数

    include
  • echart 实现可以点击下钻的地图

    codescanbox 封装成了一个类 通过 getLoadMap 来获取对应的实例对象 一个是单纯的地图 一个是可以打点的地图 getLoadMap 需要 3 个参数 echarts 实例 registerMap 注册地图的api typ
  • ionic3之js(jQuary),css,图片的引入

    一 js文件 以jQuary为例 相信有很多朋友使用不习惯angularjs 所以想使用已经很熟悉的JQuary 在这里我就给出怎么引入jQuary文件 并使用 1 把要引入的jQuary文件放到app下的assets目录下 2 在src下
  • go 进阶 请求代理相关: 三. ReverseProxy 负载均衡

    目录 一 ReverseProxy 负载均衡 简单随机负载均衡示例 简单轮询负载均衡示例 加权负载均衡示例 一致性Hash 二 反向代理添加负载均衡功能 一 ReverseProxy 负载均衡 ReverseProxy 支持负载均衡功能 提
  • IO之字节字符转换流

    1 转换流概述 转换流 可以将一个字节流转换为字符流 也可以将一个字符流转换为字节流 OutputStreamWriter 可以将输出的字符流转换为字节流的输出形式 InputStreamReader 将输入的字节流转换为字符流输入形式 2
  • 多文件编辑作业(2023.1.9)

    第一题 main c include head h int main int argc const char argv char str 10 abcdefg MyStrRev str char a hello StrRevRec a st