#苏嵌项目实战 学习日志2

苏嵌项目实战 学习日志2


姓名:张丽娜

日期: 2018/09/04


今日学习任务

  • 学习数据结构
  • 进栈出栈的代码编写。
  • 字符串处理函数编写

今日任务完成情况

  • 完成进栈出栈的代码编写
  • 了解数据结构的基本概念。

今日作业

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

#define MAXSIZE 1000

//---------------第一题 将一个字符串逆序------------------//
void InvertedString(char *pstr)
{
    char str[MAXSIZE];
    int i;

    for (i = 0; i < strlen(pstr); i++)
    {
        str[i] = *(pstr + i);
    }
    while (i--)
    {
        *pstr++ = str[i];
    }
    *pstr = '\0';
}

//---------------第二题 整数转为任意进制的字符串输出------------------//
void NumToString(int Num, char *pstr, int System)
{
    char *dest = pstr;
    int temp = Num;

    if (Num < 0)
    {
        Num = -Num;
    }
    while (Num > 0)
    {
        if (Num % System <= 9)
        {
            *pstr++ = Num % System + '0';
        }
        else
        {
            *pstr++ = Num % System + 7 + '0';
        }
        Num /= System;
    }
    if (temp < 0)
    {
        *pstr++ = '-';
    }
    *pstr = '\0';
    InvertedString(dest);
}

//---------------第三题 计算字符串中子串出现的次数------------------//
int SearchSubstring(void)
{
    int frequency = 0;
    char str[MAXSIZE], substr[MAXSIZE];
    char *deststr = str, *destsubstr = substr;

    printf("please input strings:");
    scanf("%s", str);
    printf("\n");

    printf("please input substrings:");
    scanf("%s", substr);
    printf("\n");

    while (*deststr != '/0')
    {
        while (*deststr != *destsubstr)
        {
            deststr++;
            if (*deststr == '\0')
            {
                return frequency;
            }
        }
        while (*deststr != '\0')
        {
            if (*deststr == *destsubstr)
            {
                deststr++;
                destsubstr++;
            }
            else
            {
                deststr++;
                destsubstr = substr;
            }
            if (*destsubstr == '\0')
            {
                frequency++;
                destsubstr = substr;
            }
        }
        if (*deststr == *destsubstr)
        {
            frequency++;
        }
    }
    return frequency;
}

//---------------第四题 将句子中的单词位置倒置------------------//
void StringHalder(char *pstr)
{
    char str[MAXSIZE];
    char *destpstr = pstr;
    char *temp;
    int Length, i = 0;

    Length = strlen(pstr);

    while (*(++destpstr));
    while (i < Length)
    {
        while (*destpstr != ' '&&destpstr>=pstr)
        {
            destpstr--;
        }
        temp = destpstr - 1;
        destpstr++;
        while (*destpstr != ' '&&*destpstr != '\0')
        {
            str[i++] = *destpstr++;
        }
        if (i != Length)
        {
            str[i++] = ' ';
        }
        else
        {
            str[i++] = '\0';
        }
        destpstr = temp;
    }
    strcpy(pstr, str);
}

//---------------第五题 将该字符串中合法的帧识别出来------------------//
void SearchFrame(void)
{
    char str[MAXSIZE], framehead[MAXSIZE],frametail[MAXSIZE],dest[MAXSIZE];
    char *pstr, *phead, *ptail;
    int strLength, headLength, tailLength;
    int i, stopsign = 0;

    printf("Please input String:");
    scanf("%s", str);
    printf("\n");

    printf("Please input FrameHead:");
    scanf("%s", framehead);
    printf("\n");

    printf("Please input FrameTial:");
    scanf("%s", frametail);
    printf("\n");

    strLength = strlen(str); 
    headLength = strlen(framehead); 
    tailLength = strlen(frametail);
    pstr = str;
    while (*pstr&&stopsign == 0)
    {
        for (i = 0; i < headLength; i++)
        {
            dest[i] = *pstr++;
        }
        dest[i] = '\0';
        if (!strcmp(dest, framehead))
        {
            i = 0;
            phead = pstr - headLength;
            while (*pstr&&stopsign == 0)
            {
                for (i = 0; i < tailLength; i++)
                {
                    dest[i] = *pstr++;
                }
                dest[i] = '\0';
                if (!strcmp(dest, frametail))
                {
                    i = 0;
                    stopsign = 1;
                    ptail = pstr;
                }
                else
                {
                    pstr -= tailLength;
                    pstr++;
                }
            }
        }
        else
        {
            pstr -= headLength;
            pstr++;
        }
    }
    if (i==0)
    {
        for (i = 0; i < (ptail - phead); i++)
        {
            dest[i] = *(phead + i);
        }
        dest[i] = '\0';
        printf("The Frame Is:\n%s\n", dest);
    }
    else
    {
        printf("No Effective Frame!\n");
    }
}

今日开发中出现的问题汇总

  • 数据结构知识难理解。

今日开发收获

  • 了解了进栈与出栈的原理与操作。

自我评价

  • 任务完成较为困难,需要更加努力学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值