苏嵌项目实战 学习日志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");
}
}
今日开发中出现的问题汇总
- 数据结构知识难理解。
今日开发收获
- 了解了进栈与出栈的原理与操作。
自我评价
- 任务完成较为困难,需要更加努力学习。