C语言--第四次作业--数组

1.本章学习总结

1.1 思维导图

1.2本章学习体会及代码量学习体会

1.2.1学习体会

不知不觉都快学习C语言结束了,自从开始了数组的学习就感觉难度瞬间几何级上升鸭(让人头大,感觉到了各种绝望),做题时候有时候思路到是想得出,可是就是自己很难把他实现。还有就是测试点有些过不了难度是真的感觉有点大。因为要复习线性代数,打代码的时间一少,再打代码的时候会发现很容易忘记课堂上老师说过的知识。有一些本来感觉记住的东西,开始打代码的时候还是会忘记,果然实践出真知。
在做课堂派的时候让我记忆比较深刻的就是二分法,感觉这个找想要的数好快鸭。数组题目需要的逻辑思考感觉更复杂,还要考虑到更多的方面。这次课程老师还提到了好多的头文件,emmmm看来需要背书了....

1.2.2代码累计

2.PTA总分

2.1截图PTA中函数得分及排名



  • 函数总分: 326分

3.PTA实验作业

3.1PTA题目1

3.1.1算法分析

- int n, int插入数字x,int 循环变量i和j
- int a[10]存放输入的有序数列
- for(i=0到n)挨个输入数组存入a数组中,scanf( x )
- for(0到n)对a[n]中的数字进较,ifx<a[i],记住这个数字对应的i
- for(n到i)依次a[j]=a[j-1],将数组往后挪一位,令a[i]=x
- scanf插入后的数组

3.1.2 代码截图

3.1.3 PTA提交列表及说明


Q1:为何总是有两个测试点不过(最大N插在最后,最小N)
A1:一开始为了比较完整,将第一个循环的上限值设置为n+1,导致第二个循环里面的i+1,在遇到最大n时,会出现由后往前挪位的循环出现崩溃例如: for(i=n;i=n+1; i--)
A2:之前一直找不到问题所在,冷静下来代数字进循环内找才发现这个问题

3.2PTA题目2

3.2.1算法分析

- int a[6][6],int n,scanf(n)
- int 循环变量i j,for(0到n)加内循环for(0到n)将输入的数字存入二维数组中
- int x=0,y=0,z=0,讨论特殊的情况if(n=1)printf(0 0)
- else for( i=0到n)加内循环对每一行全部元素进行比较,
if( a[i][x]<=a[i][z])则将x=z,使得最大数能被标记出来
- 同第四步,将每一列的最小数标记出来,if标记的最大,最小数是同一个数,则flag=0, break跳出最开始的循环找到鞍点
- if(flag=0) printf(对应下标i x) else printf(none)

3.2.2 代码截图


3.2.3 PTA提交列表及说明


Q1:一开始是找不到思路的,emmmm老师原本上课有讲过这个题目不过忘了老师的思路,于是参考了网上的一个做法
A1:自己去看了之后下来按照那个思路打发现并不是想象的那么顺利,于是在部分正确之间徘徊许久....

3.3PTA题目3

3.3.1算法分析

- int a[11000],b[11000];int 循环变量i,j
- int flag;gets a,b;len1, 2=strlen(1, 2)
- for(0到len1)
        for(0到len2)
- if(a[i]==b[j])flag改变,break;
- if(flag!=0)
    printf(a[i]);

3.3.2 代码截图

3.3.3 PTA提交列表及说明


Q1:一开始对那个A-B的理解是删除对应字符就可以了,不过自己实现不了自己的想法
A1:于是换了个思路,对两个字符串进行比较最后,输出不相等字符
A2:提交倒数第二遍的时候发现有两个点运行超时,后面加大了数组长度得以解决

4.代码互评

4.1代码截图

  • 别人的代码
  • 自己的代码

4.2两者的不同

- 从开头来看我们两个对于字符串输入,以及循环上限的确定方法都是一样的
- 不一样的是在这位同学是当出现相同的字符把a字符串该字符删去 其余统统左移,我的是用一个flag来标记判断是否相同,对相同的字符标记,在循环的同时进行比较后后的字符串进行输出,而他是在建立一个循环进行输出 

原文地址:https://www.cnblogs.com/asings/p/10089532.html