C语言博客作业--字符数组
一、PTA实验作业
题目1:7-3 找最长的字符串
1. 本题PTA提交列表
2. 设计思路(伪代码或流程图)
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 原来我是这么写的
因为一直都只有一个点对,然后在比较字符串长度的时候有点儿乱,所以我就请教了一下做完这题的同学,发现我的很麻烦,我定义了一个二维数组来放多个字符串,再计算长度,再将长度进行比较,然后输出行下标。而同学的定义一维的就可以了,改掉之后出现
直接就答案错误了,后来检查出是b[ ]定义时长度不够,改成与第一个数组相同的长度80就对了
题目2:7-8 字符串的冒泡排序
1. 本题PTA提交列表
2. 设计思路(伪代码或流程图)
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
刚开始的时候不知道要怎么交换两行字符串,定义了一个整型数字变量int t,让t=str[j]; str[j]=str[j+1]; str[j+1]=t;然后提示整型和字符数组不能赋值,然后我就又定义了一个c[11]数组用于交换,然后提示交换无效,我就去网上查了一下怎么让两行字符串进行交换,改成了这个样子,这样之后运行出来就是对的了,但是pta一直只有一个点对,最后我把判断条件改了就对了。这道题学会了strcmp和strcpy的使用,strcmp用于比较字符串的长度很方便。
题目3:7-12 IP地址转换
1. 本题PTA提交列表
2. 设计思路(伪代码或流程图)
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 开始的想法是直接一个循环for i=0 to 31,然后在循环里判断i+1、是不是8的倍数,结果不对,想一想就32个分四次就可以了,分开后pow不能运行(用pow函数计算2的幂次方),就想到用循环计算2的幂次方,但是四个循环嵌在里面很麻烦也不美观,我就加了一个fact函数用来计算2的幂次方
代码修改
原先太过于繁琐,且需要知道具体位数,需要多次调用循环,效率低!这个代码更加简单,效率更高
二、截图本周题目集的PTA最后排名。
PTA排名
三、同学代码结对互评
1.互评同学名称
- 梁才玉
2.我的代码、互评同学代码截图(此处截图核心代码就好,不一定截图全部代码,图上指明是谁的代码。)
- 我的代码
- 梁才玉代码
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
- 我的代码多了一个数组来存放结果,才玉的代码通过记住字符相等时的数组下标,进行循环输出,更加节省空间。我更喜欢她的代码。
四、本周学习总结
1.你学会了什么?
1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?
- 定义:数据类型 * 指针名
1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?
- 两个指针指向数组是 *(p+i)=a[i];
- 两个指针变量不能相加
1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?
1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?
- 指针变量做函数形参:
- 函数实参表示:
- 指针变量做函数形参好处:可以直接改变地址,返回多个值。
1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。
(不知道为什么提交后没有显示完整,选择了又显现出来。)
1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?
- 指向数组int a[10]; *p=a;
- 指向数组元素*(p+i)=a[i]
1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?
- char *p; char str[10] = "afjkfdhsjk"; p = str或者char str[10] = "afjkfdhsjk" , *p=str;
- 指针p指向字符串str的首地址,*p=str[0]
1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?
- 指针表示字符的好处:直接操作地址,效率更高。C语言中字符串的地址是按顺序存放的,用指针指向字符串的首地址,然后取出这个地址里面的值,然后指针加一,取出里面的值,这样就能输出整个字符串了。
2.本周你不会内容有什么?
2.1 课堂派错题罗列及如何订正。
当时没有搞懂加*号和不加到底有什么区别,后来看书,然后做题的时候有使用,就会了。
忘记是实参,习惯性加了int,第二个,写的时候没注意到指针和数字不能进行比较,改成p+10就对了
2.2 其他不会的?打算怎么解决
- 很多概念混了,再看看书,然后还有课堂派题目里的代码很好,可以借鉴,多做题多做题多做题。
3.数组上机考试小结
3.1 那题错了,请罗列?
6-2 jmu-c-二维数组转置并按列排序
7-2 jmu-c-十进制转16进制
7-4 数组元素的删除
3.2 错题如何订正,为什么错了?
- 二维数组的题,转置函数对了,排序函数一直不对,做了很久,考前我也觉得我的排序不会,就去看了好几遍,考试的时候还是不确定,我觉得还是要多做几题排序的题目才能记住!然后就是差错能力太差了。
- 十六进制的,大小写错了。原来一直都不知道原来%x表示小写,%X表示大写的,考完问了同学。
- 做数组元素的删除做的时候时间不够了。有点乱,部分正确。还没有改对,我会继续修改的!