1.本章学习总结(2分)
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
数组的题目太多了,然后这周又线代考试,因为线代上课的时候没有专心听讲,所以花了很多的时间去补回来,导致题目集才完成了大概三分之一,然后我对字符数组的理解不够深,主要还是字符的输入和储不太懂,所以之前卡在字符数组上,做不下去,字符数组感觉比较抽象。不好理解。导致二维数组还没开始做,字符数组引入了一些定义,去搜了也不太理解。老师有要求尽量用函数的方法去做,对字符传参不太理解,所以都没去用函数的方法去做。作业感觉挺多的,数组pta题目数太多。也是我对数组这块不太会的原因。导致进度缓慢,卡了一题能卡很久。
1.2.2代码累计
2.PTA总分
2.171+53+10
2.2我的总分 234
3.PTA实验作业
3.1PTA题目1
给定两个整型数组,本题要求找出不是两者共有的元素。
3.1.1算法分析
int 定义数组a 数组a储存第一行数据
int 定义数组b 数组b储存第二行数据
int 定义数组c 数组c储存不同的数据
两个for循环将数输入数组a和b
for(j=0;j<n1;j++)
flag=0; 定义控制变量flag=0
for(i=0;i<n2;i++)
if(a[j]==b[i]) flag=1; 如果两数列有相等的就让控制变量flag=1
if(flag==0)
int h,flag1=0; 如果flag=0 定义变量h,flag1=0
for(h=0;h<=count;h++) 声明数组c的数组长度
if (c[h]==a[j])
flag1=1; 令flag1=1
if(flag1==0) 如果flag==0即没有相等的
{
c[count]=b[j]; 将b[j]赋给c数组
count++;
}
下面类似
3.1.2代码截图
3.1.3 PTA提交列表及说明
一开始一直没什么思路,一开始都是答案错误,然后发现自己没办法把c中重复的删了,后面看了一下同学的答案,改正了,devc可以过,pta一个测试点一直过不了,我卡了好久,后面放弃了,今天再来提交一遍,发现又能过了。
3.2题目二
输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。
3.2.1算法分析
int number=0,i,count=0,flag=0; 定义转换的十进制数初值为0,count判断是否出现过十六进制数,flag判断是否在第一个十六进制数出现后一位为负号
char str[100]; 定义数组str
定义i=0
for(i=0;str[i]!=' ';i++)
用三个if判断输入的数的范围。
if(count==1) 判断count是否为1 ,如果为1则代表此时只出现一个十六进制数
printf("-");
printf("%d",number); 最后输出结果
3.2.2代码截图
3.3.3PTA提交列表及说明
这个是因为那个负号,我一开始条件写成只要第一个十六进制出现,之后就打印一个负号,然后没有发觉,一直是这个测试点错。后面今天检查了一下发现了问题,改了一下就过了。这个其实不难。
3.3题目三
对于给定的一个四则运算表达式,请把她的每个token切分出来。
3.3.1算法分析
int i=0,flag=0;
int a[41]; 定义数组
while((a[i]=getchar())!='
') 输入数组a
i++;
a[i]=' '; 结束符
i=0; 初始化i
if(a[i]=='-'||a[i]=='+') 如果读到的是正or负号
{
if(i==0) 如果第一个读到的是正or负号
{
printf("%c%c
",a[i],a[i+1]); 输出正or负号和后面的一个数字
i++; 递增i
}
后面再跟几个else if分别讨论当出现正or负号后面和前面出现的字符是什么
再根据题目条件输出
3.3.2代码截图
3.3.3PTA提交列表及说明
我就只提交了一次,后面不知道怎么过第四个测试点,我pta上那个测试点我用了1+(-3)*3在devc上测试过了,不知道第四个测试点怎么过。。。
4.代码互评
4.1代码截图
4.2二者的不同
她没用二分法去查找数字,而我用到了二分法。