第四次作业----数组

1.本章学习总结

1.1 思维导图

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

1.2.1 学习体会

本周学习比较吃力,pta 打得特别慢,还总被其他科目的复习和其他活动转移注意力,使得pta久久没有进展,我也实实在在的发现,自己找代码错误的能力特别弱。这不但减慢了平时的速度还很打击积极性。自己的专业知识特别薄弱,还需要努力,并且还要争取熟练掌握调试并提高自己找错的能力。

1.2.2 代码累计

2.PTA总分

2.1截图PTA三次题目集



2.2 我的总分:

195+89+130=414

3.1 PTA题目1

二分查找法

3.1.1 算法分析

int i,key;
int flag=0;
int a[]={1,2,3,4,5,6,7,8,9,10};
scanf("%d",&key);
for i from 0 to 10 do
     if(a[i]==key)    flag=1   break  
if(flag==0)    printf("not found");
if(flag==1)   printf("weizhi:%d",i);

3.1.2 代码

3.1.3 PTA提交列表及说明


这道题其实比较简单,主要是它给了下标也是一个可以表现出来的数值这种给我对数组这一语句更深入的理解吧

  • 这题的错误主要是自己在打代码的时候有些东西懒得再打一遍,复制黏贴了赋值中的,忘记修改下标了

3.2 PTA题目2

判断上三角矩阵,即以下的元素都为0的矩阵

3.2.1 算法分析

int n,i,j,num,k;
int flag=0;
int a[10][10];
scanf("%d",&n);
int b[100]={0};
for k from 0 to n
  scanf("%d",&num);
     for i from 0 to num
       for j from 0 to num
          scanf("%d",&a[i][j]); 
 for i from 0 to num
   for j from 0 to num
     if(j<i&&a[i][j]!=0)   flag++;
 if(flag==0)   b[k]=1;              //用另一个数组来输出结果
 flag=0;
 for k from 0 to n
 if(b[k]==1) 	printf("YES\n");
 else 	  printf("NO\n");  

3.2.2 代码


3.2.3 PTA提交列表及说明


  • 第一张图是自己之前做的,将输出条件数组的赋值写在对二维数组的循环里面,导致错误

  • 第二张是写伪代码时,又看了一遍自己写的代码,发现自己代码有些废话,试着删了一下,删的时候手有点劈叉,不是删多了,就是不小心多打了写符号。

  • 感觉换个时间再去看自己的代码会有些不一样吧

3.3 PTA题目3

A-B
从字符串A中把字符串B所包含的字符全删掉

3.3.1 算法分析

char a[100000]    char b[100000]   char c[100000];
int i,j,k=0,flag=0;
gets(a)     gets(b);
for i from 0 to a[i]!='\0' do
  flag=0;
  for(j=0;b[j]!='\0';j++)
    if(a[i]==b[j])
flag=1;
    break;        //删除重复字符
if(flag==0)
 c[k++]=a[i];      
k='\0';
for(i=0;c[i]!='\0';i++)      printf("%c",c[i]);

3.3.2 代码

3.3.3 PTA提交列表及说明


  • 在尝试修改的时候反应一直是运行时错误,跟之前的答案错误啊之类的都不一样,稍微考虑了下是不是在定义数组时长度太小了,就稍微改大了一下就好了,就数组定义时尽量大一下。

4.代码互评

4.1 代码截图

同学代码截图。

自己的代码截图

4.2 二者的不同

  • 从代码的算法上已经完全不一样了,同学是找到两个数组相同的进行删除,左移等步骤使得相同字母删除;而我是将其需要的部分直接保存在新的数组中,从而得到想要的结果
  • 同学借助string.h得到数组长度,看起来就很不一样
  • 同学的注释非常详实丰富,非常直观

posted on 2018-12-08 22:52  白居过隙巍澜可期  阅读(178)  评论(0编辑  收藏  举报

导航