zoukankan      html  css  js  c++  java
  • 实验2

    p193:

    7题:

    编写函数 delstr(char *pc,int im,int in),删除字符串中制定位置im处开始的in个字节,删除成功函数返回被删字符串,否则返回空值。

    #include<stdio.h>
    #include<string.h>
    char *delstr(char *pc,int im,int in);
    int main()
    {
        char str[50];
        int a,b;
        char *p;
        printf("请输入一串字符:
    ");
        gets(str);
        printf("请输入删除的位置和个数:
    ");
        scanf("%d%d",&a,&b);
        p=delstr(str,a,b);
        if(p==NULL)
        {
            printf("超出范围。"); 
        }
        else
        {
            puts(p);
        }
        return 0;
    }
    char *delstr(char *pc,int im,int in)
    {
        char *temp1=pc+im-1,*temp2=temp1+in-1;
        char *end=NULL,*p;
        static char a[50];
        int len=0,i=0; 
        len=strlen(pc);
        end=pc+len-1;
        if(temp1>end||temp2>end)
            return NULL;
        else
        {
            for(;temp1<=temp2;temp1++)
            {
                a[i++]=*temp1;
                *temp1=' ';
            }
        }
        p=a;
        return p;
    }

    8题:

    编写函数strlink(char *pv1,char *pc2),把字符串pc2连接到pc1的后面,形成一个完整的字符串。

    #include<stdio.h>
    void strlink(char *pc1,char *pc2);
    int main()
    {
        char a[50]={"hello world"};
        char b[10];
        puts(a); 
        printf("请输入一串字符,将连接到上面字符串中:");
        gets(b);
        strlink(a,b);
        puts(a);
        return 0;
     } 
     void strlink(char *pc1,char *pc2)
     {
         for(;*pc1!='';pc1++);
         for(;*pc2!='';pc1++,pc2++)
         {
             *pc1=*pc2;
         }
         *pc1='';
     }

    9题:

    编写函数char *huiwen(char *pc),检查字符串pc是否是回文,如果是返回字符串“yes”,否则返回“no”.如:abcba是回文。

    #include<stdio.h>
    #include<string.h>
    char *huiwen(char *pc);
    int main()
    {
        char a[50];
        char *link=NULL;
        printf("请输入一串字符,将判断其是否是回文:
    ");
        gets(a);
        link=huiwen(a);
        puts(link);
        return 0;
    }
    char *huiwen(char *pc)
    {
        int len=0,flag=1;
        char *temp=NULL,*str=NULL;
        len=strlen(pc);
        temp=pc+len-1;
        for(;pc!=temp;pc++,temp--)
        {
            if(*pc!=*temp)
                flag=0;
        }
        if(flag)
        {
            str="yes";
        }
        else
        {
            str="no";
        }
        return str; 
    }

    总结: 

     1 .char a[]="hello world";
    这里数组是字符串变量,是可以改变的。
    但是 char *str="hello world";  "hello world"是字符串常量,用一个指针指向了字符串常量,但是,常量值是不能改变的,所以,你要修改它的值就会出错。 
    2.编写连接函数时,被连接的字符串数组要定义的足够长,不然会越界。
    3.在返回指针时,如果指针指向的是常量,则可以返回成功,否则当函数调用结束后,栈被释放,无法找到指针指向的内容。
  • 相关阅读:
    2020牛客暑期多校(三)
    贪心算法
    高级搜索题集
    状态压缩dp
    [kuangbin带你飞]专题二 搜索进阶
    [kuangbin带你飞]专题一 简单搜索
    HDU 1695 GCD(求两区间的互质数对+容斥原理)
    UVA 10200 Prime Time(简单素数判定预处理)
    HDU 1452 FZU 1053 Happy 2004(逆元函数+因子和函数+大指数取模化简公式)
    低三位的数是8的倍数就可以被8整除
  • 原文地址:https://www.cnblogs.com/TX980502/p/6560581.html
Copyright © 2011-2022 走看看