C语言博客作业--字符数组
一、PTA实验作业
7-2 统计一行文本的单词个数
1. 本题PTA提交列表
2. 设计思路(伪代码或流程图)
定义i用于循环,count用于计算数量,flag用于条件,定义字符串ch[1000]
while((ch[i]=getchar())!='\n')//字符的输入
i++;
ch[i]='\0';
for i=0 to ch[i]!='\0'
若ch[i]=' '且i=0
flag=1;//以空格为首的情况
若ch[i]=' '且ch[i+1]!=' '且ch[i+1]!='\0'//有两个空格且不是在最后
count++;
end
若flag=1
输出count//开头有空格时,count值等于单词数
若flag=0
输出count+1//开头没有空格count会偏小1
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
自己一开始打的时候思考比较局限,放上pta显示部分正确
随后自己考虑一开始有空格和出现多个空格的情况,加上了flag,会好很多,但还是不完整
自己思考后加了条件ch[i+1]!='\0'
7-3 找最长的字符串
1. 本题PTA提交列表
2. 设计思路(伪代码或流程图)
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
输出虽有最大输出却没有输出最早达到的
自己的自己代码有问题i-temp会满足也增加
修改输出正确后放到pta
自己的字符数组定义太小,题目问题,重新思考
自用两个数组循环比较,重新思考,一开始忘记条件的清0,改正后正确
7-6 Jack cheng的烦恼2
1. 本题PTA提交列表
2. 设计思路(伪代码或流程图)
定义i用于循环,n,代表括号数量,flag1与flag用于数值转换,判断条件,count,count1用于数量的满足性
定义字符数组ch[99999]
输入n的值
用getchar()吸收换行符
gets(ch)//字符赋值
for i=0 to ch[i]!='\0'
若i!=0且ch[i]=')'
flag1=0;count--//满足flag的赋值,顺序问题,保证count的对应
若i!=0且ch[i]='}'
flag=0;count1--
若ch[i]='('
flag1=1;count++
若ch[i]='{'
flag=1;count1++
end
若flag=0且flag1=0且count=0且count1=0//顺序没有错乱,数量对应正确
输出True
否则
输出False
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
自己对该题顺序的把握不够,有考虑到但不仔细,只能保证开始是对的,如果后来括号的位置出错就不对
自己最开始只能的保证数量对应相同的分,在考虑范围后,部分正确的分数有上升,自己对于顺序的问题在思考后觉得对自己flag的赋值进行对换改变,保证顺序的满足
二、截图本周题目集的PTA最后排名
三、同学代码结对互评
1.互评同学名称
刘艳钦
2.我的代码、互评同学代码截图(此处截图核心代码就好,不一定截图全部代码,图上指明是谁的代码。)
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题
我们的思路都是想要两两配对,数量顺序符合,艳钦的代码思路是一开始的第一个字符的比较与数目的要求另取条件判断,
后进行多数时的比较,她采用两两前后比较,罗列输入的可能情况并判断,把满足的以top的数量最后是否满足加减相配来确定是否满足数量上的要求,
这与我用count与count1来匹配()与{}数量上相似,但是对于输入的顺序问题,我采用的是利用flag,flag1来观察,一开始对}与)的计算我就要求不以第一个的情况累加
这就意味着一旦一开始的输出不对那么最后的数量会匹配不上,如果输入的数序是满足的话,那么flag与flag1的的值会交替变换,否则最后的数值会不满足替换结果
我认为艳钦的代码在一开始就考虑很周全,但是我的代码感觉更简洁更容易理解
我更喜欢我的代码
四、本周学习总结
1.你学会了什么?
1.1指针变量如何定义?
- 定义指针变量的一般形式: 类型名 *指针变量名
- 类型名必须是有效的数据类型:如int,float,char等
- 指针变量名是指针变量的名称,必须是一个合法标识符
- 定义指针变量要使用指针声明符
- 指针声明符 * 在定义指针变量时被使用,说明被定义的那个变量是指针
- 定义多个指针变量时,每一个指针变量前面都必须加上 *
1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?
指针不能随意进行加法运算,如定义指针P1,P2,P3,则P3=P1+P2为错,P1=P1+1为正确
1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?
指针会指向任意地址
1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?
用处:可以不用返回值,直接有数值的修改
1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。
void bubble (int *p ,int n)
{
int i,j,temp;
for(i=0;i<n;i++)
for(j=0;j<n-i;j++)
if(*p>*(p+1))
{
temp=*p;
*p=*(p+1);
*(p+1)=temp;
}
for(i=0;i<n;i++)
printf("%d",*(p+i));
}
1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?
将数组名赋给指针变量名
int a[10];
int *p;
p=a;
1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?
char *p
char str[80]="字符串"
p=str;
初始位置在首个字符
1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?
好处是不用再赋空间,在原有基础上直接赋入
2.本周你不会内容有什么?
2.1 课堂派错题罗列及如何订正。
p指针与*p变量要注意
注意数的交换形式,带数据进去运行考虑
返回值要返回首地址
2.2 其他不会的?打算怎么解决
pta的题目自己还有一些没打,冒泡的还不够理解,对指针使用不习惯
- 多回归课本,看看例题
- 多看看好的代码,找思路,学方法
- 多看看消化课堂派的代码
3.数组上机考试小结
3.1 那题错了,请罗列?
6-2 7-1 7-2 7-3 7-4
3.2 错题如何订正,为什么错了?
自己在前面较简单的题上就花费一些时间,后来都没什么时间,自己对数组的打代码练习时间确实不够,
很多知识点都没复习到位,课堂派的习题代码没有很好的消化,自己在上机时基础不够扎实,导致时间紧张的情况下容易犯错误,思维反应慢