您的位置:首页 > 编程语言 > C语言/C++

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

2017-12-10 22:44 232 查看

一、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表示大写的,考完问了同学。

做数组元素的删除做的时候时间不够了。有点乱,部分正确。还没有改对,我会继续修改的!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: