C博客作业--指针

Posted 惊梦不知归处

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C博客作业--指针相关的知识,希望对你有一定的参考价值。

一、PTA实验作业

题目1:判断回文

1. 本题PTA提交列表

2. 设计思路

}
bool palindrome( char *s ){
	定义变量i,j,l,flag=0;
	计算数组s的长度存于l中;
	for  i=0,j=l-1; to i<j{
		if s[i]是否不等于s[j]{
			flag=1;break; 
		} 
	}
	if flag==1  return flase;
	else return true
 } 

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

循环结束后的判断条件错误,少了一个等号

题目2: 过滤字符串只保留串中的字母字符

1. 本题PTA提交列表

2. 设计思路

{
	定义 i,j;
	for i=0 to ptr[i]
		判断是否为字母
			若不为字母,for j=i to ptr[j] 
				ptr[j]=ptr[j+1] //将后面的字母前移,覆盖掉非字母  
				end for
			i--; //令下一次循环再次从该处开始 
	end for 
	计算重组后的数组长度,并返回值 
 } 

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明

碰到的问题:移动数组后,没有i--,导致有连续两个非字母字符时,第二个非字母字符会被跳过

解决办法:移动后i--

题目3:使用函数实现字符串部分复制

1. 本题PTA提交列表

2. 设计思路

{
	定义 i=0,j=0,len;
	计算数组t长度存于len中;
	if len<m  s[i]=0;
	else  	
		for i=m-1 to t[i]
			s[j++]=t[i],重构数组 
		end for
	end else
	添加结束符s[j]=0; 
}

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明

本题没有碰到问题

二、截图本周题目集的PTA最后排名

三、阅读代码

1.蛇形填数。在nn方阵填入1,2···,nn,要求填成蛇形,例如,n=4时

10 11 12 1
9 16 13 2
8 15 14 3
7 6 5 4
代码截图:

优点:

  • 这段程序充分利用了C语言简洁的优势。赋值x=0和 y=n-1 后马上把它们作为数组的下标,同时tot 和 a[0][n-1]都赋值为1,这些都合并完成。这样就用一条语句完成了多件事情。
  • 4条while 语句有些难懂,以第一句为例,原则是:先判断,再移动,而不是走一步发现越界后退回来。这样则需要“预判”是否越界,越界只需判断 x+1<n ,因为y的值没有修改;下一个格子是(x+1,y),因此只需简写为“!a[x+1][y]”。

2.求子串在母串中最后一次出现的地址

代码截图:

本题最开始是用数组做,但是在输出时出现问题,最后百度。
优点:每次遍历是都让p,q重新指向;判断母串中是否有子串相同时也简便了许多,最后找到子串时直接用a指向此时s的地址,这样返还a就行,不用像数组一样要重构,体现了指针的灵活性。

四、本周学习总结

1.自己总结本周学习内容。

1.本周我学会了strstr (char *s,char *t),strchr(char *s,char e),strcmp(char *s,char *t),tolower,toupper,这些库函数。strstr的功能是在字符串s中查找字符串t首次出现的地址,可用了在母串中寻找子串;strchr在字符串s中查找字符e首次出现的地址;strcmp的功能是比较两个字符串的大小,用于字符串排序;tolower和toupper用于大小写字母的转化。

2.结构体的定义以及结构变量的使用

struct 结构名{
	类型名 结构成员名1;
	类型名 结构成员名2;
	……
	类型名 结构成员名n; 
}结构变量1,结构变量2,……;

结构变量使用时要用结构成员操作符‘.’,如s1.name

3.结构指针,即指向结构类型变量的指针
例如:

    struct student s1 = {101,"zhang"},*p;
    p=&s1;

4.指向运算符-> ,用于访问指针指向的结构成员
例如:当指针p指向s1时

p->num=101

上面语句等价于

s1.num=101;
(*p).num=101;

2.罗列本周一些错题。

1


本题有两个错误。第一,大小写字母差值为32;第二,若用(p-1)-32会将不是字母的字符也转化,所以应该按照题目给的toupper((p-1))

2

本题错误是没有注意到函数的返还值。

3


本题做的时候没有考虑到删除x后,输出时数组的长度改变了,所以最后一个空没有填出来

以上是关于C博客作业--指针的主要内容,如果未能解决你的问题,请参考以下文章

C博客作业--指针

C博客作业--指针

C博客作业--指针

C博客作业--指针

C博客作业--指针

C博客作业--指针