当前位置: 首页 > news >正文

C语言函数

一、自己实现和库函数提供的strcpy以及strcat功能完全相同的函数(返回值是指针,并且可以直接使用puts(strcpy)输出拷贝结果)

  1. char *my_strcpy(char *dest,char *src)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int my_strcat(char *p1,char *p2)
{    
    int i=0,j=0;
    while(*(p1+i))
    {
        i++;
    }
    while(*(p2+j))
    {                                  
        *(p1+i)=*(p2+j);
        i++;
        j++;
     }
    *(p1+i)=*(p2+j);
}
int main(int argc, const char *argv[])
{
    char str1[52]="hello";
    char str2[20]="world";
    char *p1=str1;
    char *p2=str2;
    my_strcat(str1,str2);
    printf("%s\n",str1);
    printf("%p\n",strcat(str1,str2));
    printf("%p\n",str1);
    return 0;
}

           2.char *my_strcat(char *dest,char *src)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int my_strcpy(char *p1,char *p2)
{
    while((*p1))
    {
        *(p2)=*(p1);
        p1++;
        p2++;
    }
    *(p2)=*(p1);
}
int main(int argc, const char *argv[])
{
     char str1[7]="hh";
     char str2[8]="hhh";
     char *p1=str1;
     char *p2=str2;
     my_strcpy(str1,str2);
     printf("%s\n",str2);
     printf("%p\n",strcat(str1,str2));
     printf("%p\n",str2);
     return 0;
}                                        

二、实现一个可以返回数组中最大元素地址的函数

int *find_max(int *arr,int len)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int *find_max(int *arr, int len)
{
    int *max_p = arr;
    for (int i = 0; i < len; i++)
    { 
        if (*max_p < *(arr + i))
        {
            max_p = arr + i;
        }
    }
    return max_p;
}

int main(int argc, const char *argv[])
{
    int arr[] = {7, 8, 1, 1, 87, 78, 11};
    int len = sizeof(arr) / sizeof(arr[0]);
    int *max = find_max(arr, len);
    printf("数组中的最大元素是:%d\n",*max);
    return 0;
}                                                

三、实现一个函数实现删除字符串中空格的操作

char *del(char *s)

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char  *del(char *s)
{
    char *yuan = s;
    char *new = s;
    while(*yuan!='\0')
    {
        if(*yuan != ' ')
        {
            *new = *yuan;
             new++;
        }
        yuan++;
    }
    *new ='\0';
    return s;
}
int main(int argc, const char *argv[])
{
    char str[100];
    char jg[100];
    char *yuan =str;
    char *new = jg;
    printf("请输入一个字符串:");
    gets(str);
    char *zh  =del(str);
    printf("删除空格后的字符串:%s\n",zh);
    return 0;                               
}

  1. 有以下定义,说明哪些量可以改变哪些不可以改变?

const char *p;

const (char *) p;

char *const p;

const char* const p;

char const *p;

(char *) const p;

char const* const p;

定义指针指向能否改变指针指向的内容能否改变
const char *p;char const *p;不能
const (char *) p;(char *) const p;char * const p;不能
const char* const p;char const* const p;不能不能

    四、将前面循环时写的打怪兽的小游戏,每一个功能封装成函数

#include <stdio.h>
#include <stdlib.h>
int a = 10000;  // 怪兽血量
int b = 0;       // 攻击次数
int j[] = {50, 70, 90};  // 技能攻击值
int z[] = {5, 3};        // 装备攻击值
int g = 0;       // 当前攻击力
void cd();
void jxz(int choice);
void zxz();
void gs();
void jg();
void cd()
{
    printf("请选择技能:\n");
    printf("'1':技能一(%d攻击值),'2':技能二(%d攻击值),'3':技能三(%d攻击值),'4':拾取装备,'5':退出游戏\n",
           j[0], j[1], j[2]);
}
void jxz(int choice)
{
    switch (choice)
    {
        case 1: g = j[0]; break;
        case 2: g = j[1]; break;
        case 3: g = j[2]; break;
    }
}
void zxz()
{
    int z_choice;
    printf("请选择装备:\n");
    printf("'1':刀+5攻击值,'2':木棍+3攻击值\n");
    scanf("%d", &z_choice);

    if (z_choice == 1)
    {
        g += z[0];
    }
    else if (z_choice == 2)
    {
        g += z[1];
    } else
    {
        printf("无效的选择,已忽略。\n");
    }
}
void gs()
{
    a -= g;
    b++;
    printf("怪兽剩余血量:%d\n", a);
    g = 0;
}
void jg()
{
    printf("怪兽被杀死!一共攻击了%d次。\n", b);
}
int main()
{
    int choice;
    while (a > 0)
    {
        cd();
        scanf("%d", &choice);

        switch (choice)
        {
            case 1:
            case 2:
            case 3:
                jxz(choice);
                break;
            case 4:                                                                                          
                zxz();
                break;
            case 5:
                printf("退出游戏。\n");
                return 0;
            default:
                printf("无效选择,请重新选择。\n");
                continue;
        }

        gs();
    }
    jg();
    return 0;
}

    六、’写一个函数实现对二维数组中元素的输出

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void pt(int arr[][3],int hang,int lie )
{
    for(int i=0;i<hang;i++)
    {
        for(int j=0;j<lie;j++)
        {
            printf("%4d",arr[i][j]);
        }
        printf("\n");
    }
}
int main(int argc, const char *argv[])
{
    int arr[2][3]={{1,7,8},{9,8,87}};
    pt(arr,2,3);
    return 0;
}                                       

相关文章:

  • ThingsBoard移动应用详细讲解
  • Redis简介
  • 支付宝沙箱支付报错“订单信息无法识别,建议联系卖家”
  • NOIP2017提高组.宝藏
  • 【强化学习】Deep Reinforcement Learning: A Survey综述学习
  • fast_pow(),c语言幂函数
  • 性能比拼: Go(Gin) vs Python(Flask)
  • 按规则批量修改 txt/html/json/xml/csv/记事本等文本文件内容
  • 【企业级Web应用中的文件下载处理:从S3预签名URL到压缩状态管理】
  • 24、网络编程基础概念
  • Appscan下载及安装教程
  • Vue3中的Icon理方案
  • OCR第三个方案:PP-OCRv4的初步探索
  • 2015年国家队选拔赛试题改编题
  • 基于卷积神经网络的眼疾识别系统,resnet50,efficentnet(pytorch框架,python代码)
  • 什么是开发者社区(Developer Communities)?
  • OCCT(2)Windows平台编译OCCT
  • 【大模型】微调一个大模型需要多少 GPU 显存?
  • 论文阅读《P​roximal Curriculum for Reinforcement Learning Agents》——提升智能体学习速度的
  • 11 配置Hadoop集群-免密登录
  • 展示型网页设计/搜索引擎优化指南
  • 浙江建设监理协会网站/关键词排名优化系统
  • 专门做相声的网站/什么网站可以发布广告
  • 网站魔板大全/百度seo有用吗
  • 个人网站备案拍照/网站产品推广
  • 做网站的公司需要哪些资质/湖南seo优化公司