C语言博客作业--字符数组

一、PTA实验作业

题目1:统计一行文本的单词个数

1. 本题PTA提交列表:

2. 设计思路

3.代码截图

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


一开始的思路是这样的,提交上去多种错误,提示段错误把数组范围改大了,其他错误一直不知道怎么办,后来问了看了做完同学的代码,他写的很简洁,发现自己没有认真审题,题目说是用空格分隔,那就只要计算每个单词第一个首字母的个数和即可,方法巧妙。

题目2:删除字符串中的子串

1. 本题PTA提交列表:

2. 设计思路

	定义字符数组s1[80],s2[80];
	定义a存放s1长度,b存放s2长度,i,j,k控制循,flag标记相同字母位置
	输入第一个字符串s1
	输入第二个字符串s2
	调用strlen函数分别计算S1、S2字符串的长度a,b
	for  i=0  to i=a-1
		如果第二个字符串第一个字符等于第一个字符串中字符
			flag=0;
			for j=0 to j=b-1
				如果第二个字符串不在第一个字符串中  flag=1;
			如果 flag==0
				字符串s1长度为s1长度减去s2的长度
				for k=i to k=a-1
                                     删去字符后后面字符往前移动
				s1[a]='\0';
                                end for

	输出删去字母后字符串(考虑不全面思路)

3.代码截图

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

不知道如何过最后两个测试点,,现在的思路无法实现第一个字符串删去第二个字符串的内容同时删去字符间的空格,还是不太有思路,希望得到指点!后续会再找找问题问问同学。

题目3:藏头诗

1. 本题PTA提交列表:

2. 设计思路

	定义字符数组str[4][80]存放诗句,first[80]存放首字
	定义i控制循环
	for i=0 to i=3
		输入四行诗
	for i=0 to i=3 
		将四行的首字放入数组first中
        给first字符串存入结束符
	输出首字                                                       

3.代码截图

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

百度后才知道怎么输出中文,如何做到一个字两个字符的输出,还有个错误点是字符串的结束下标多加了1,答案错误,可是不知道为什么deve c输出答案却是正确的,翻书验证下标出错改正后答案才在PTA通过。

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

三、同学代码结对互评

1.互评同学名称:龚顺德

2.我的代码、互评同学代码截图

我的

龚顺德同学的

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

不同:两个人的思路不一样。我是用一个二维数组分别存放行数和字符个数,通过遍历数组比较得到最长字符串,而顺德是用两个数组分别存放字符串和最长字符串,他没有存放每个数组的长度,而是直接将每次输入字符串的长度和上一次字符串长度进行比较,较长的字符串保存在数组b里。我认为他的做法更简单些,就是代码的缩进有点奇怪。

四、本周学习总结

1.你学会了什么?
1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?

  • 类型名 *指针名

1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?

指针加法只运用在地址的偏移,如*p=a+1
两个指针变量不能相加,否则会出现编译错误

1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?

无法运行。

1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?

  • int *intpart 和 float *fracpart 将指针intpart 和指针fracpart作为形参.
  • 实参用地址表示.
  • 可以直接修改内存改变实参的值,可以返回多个值

1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。

    void bubblde(int *p,int n)
     {
       int i,j,t;
      for(i=1;i<=n;i++) 
        for(j=0;j<n-i;j++)
            if(*(p+j)>*(p+j+1)){
                t=*(p+j);
                *(p+j)=*(p+j+1);
                *(p+j+1)=t;
            }
}                                           

1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?

  • 定义指针时指向数组名. 如, int a[10],*p=a.
  • 用 *(p+i) 表示 a[i].

1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?

如 char *s="apoint".
初始位置为字符串首元素的地址,如char *s="apoint" 中 , s 指向 a.

1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?

可以实现对主函数的数据传递.,返回多值

2.本周你不会内容有什么?

2.1 课堂派错题罗列及如何订正。

这题二三空错了,没注意到found为标记符,导致连错

输出整数小数的这题输出的时候没注意变量类型导致值输不出来

2.2 其他不会的?打算怎么解决

这周PTA写的很慢思路也不太清晰,需要多阅读一些好同学的代码找思路来提高效率。还有就是指针的函数调用格式不太熟悉,如何调用指针经常要翻书确认,需要多加实践。

3.数组上机考试小结

3.1 那题错了,请罗列?

6-2排序没写出来,7-1.2.3.4有思路但没写对

3.2 错题如何订正,为什么错了?

考完当天就回去在PTA上重做并写出了正确答案,发现像进制转换是书上之前的小知识点不该错;排序考试的时候没有用三维数组做下去,不然应该可以做出来,也是书上排序方法不熟吧;IP地址的转换上课讲过只有印象,自己没有运用过考试也不知道怎么写,以后代码要多自己运行试试;倒二可能思路真的比较乱,回来也做了好久才做出来,最后一题题目没有认真看清思路偏了,以后要多多练习字符串的题目,多看看大佬代码。

posted @ 2017-12-10 22:44  evfun  阅读(249)  评论(1编辑  收藏  举报