第8周编程总结

这个作业属于哪个课程 C语言程序设计Ⅱ
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-class2-2018/homework/3074
我在这个课程的目标是 常用的字符串处理函数,指针实现内存动态分配
这个作业在哪个具体方面帮助我实现目标 string.h函数,strcpy,strcat应用
参考文献 C语言程序设计第8章
函数实现字符串逆序 (15 分)
结队感想:有些东西靠一个人是不能完成,有时候会陷入一种误区,没走出误区就一直在绕弯,还是要多把自己的疑问和同学一起讨论,把问题解决.
本题要求实现一个字符串逆序的简单函数。
函数接口定义:
void f( char *p );

函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。
裁判测试程序样例:

#include <stdio.h>
#define MAXS 20

void f( char *p );
void ReadString( char *s ); /* 由裁判实现,略去不表 */

int main()
{
    char s[MAXS];

    ReadString(s);
    f(s);
    printf("%s\n", s);

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

Hello World!

输出样例:

!dlroW olleH

实验代码

void f( char *p )
{
	int i=0,a=0,b,c;
	while(p[i]!='\0')
	i++;
	b=i-1;
	while(a<=b)
	{
		c=p[a];
		p[a]=p[b];
		p[b]=c;
		a++;
		b--;
	 }
	 return;
 } 

实验思路:用函数f判断字符串的结束,并且把字符串进行逆序操作
错误截图:
遇到问题:当我在博客上看了一些解题, 忽略字符串里面有\0作为结束标志
解决方法:把字符串的长度减去1个,此时它的长度等于s[MAXS]
正确截图:
流程图:

字符串的连接 (15 分)

本题要求实现一个函数,将两个字符串连接起来。
函数接口定义:

char *str_cat( char *s, char *t );
函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址。
裁判测试程序样例:
#include <stdio.h>
#include <string.h>

#define MAXS 10

char *str_cat( char *s, char *t );

int main()
{
    char *p;
    char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'};

    scanf("%s%s", str1, str2);
    p = str_cat(str1, str2);
    printf("%s\n%s\n", p, str1);

    return 0;
}

/* 你的代码将被嵌在这里 */
输入样例:

abc
def

输出样例:

abcdef
abcdef

实验代码

char *str_cat( char *s, char *t )
{
	s = strcat(s,t);
	return s;
 }

实验思路:利用string.h函数的strcat语句,把t中的元素给s
错误截图:
遇到问题:这个题目只要上课听了,看书也可以写出来,但是返回值被我给了p
解决方法:把返回的结果改成s,s中才是要输出的字符串
正确截图:
流程图:

posted @ 2019-04-18 22:27  我畏时光不惧  阅读(117)  评论(0编辑  收藏  举报