C语言博客作业04--数组

0.展示PTA总分

1.本章学习总结

1.1 学习内容总结

  • 数组中如何查找数据,有哪些做法
    1.首先,定义数组,并对数组元素进行赋值
    2.输入位置值,输出相应的元素值(先判断位置是否合法,不合法,则输出位置错误,请重新输入:位置合法,则把位置值转为数组下标,通过下标来确定数据,进行输出,如:第一个元素的下标为0,第二个为1等等
    3.输入一个数值,输出相应的下标循环遍历数组,检查数组中的各位数据是否与待查数值相等(如果相等,则提前结束循环:break;否则,继续循环,检查下一个数)
    4.遍历完所有数组元素后,结束循环循环结束后,检查循环变量值是否超过数组元素总数,如果未超过,表示找到了相应数据,输出其下标位置,否则,输出未找到相应元素。

  • 数组中如何插入数据,怎么做,可以写个伪代码或动态图展示方法
    1.输入一个数据x,将数组中的数据与x逐一比较,如果大于x,记录下数据的下标,然后此数据下标和其后的数据的下标都加一,相当于都向后挪一位,然后将x赋值给数组的那个下标;

    2.改段代码是从PTA题目上的一维数组来的,改题则就是简化的插入排序的题目
    这个就很好的理解这个插入数据的意思了。

  • 数组中如何删除数据,这个有多种做法.
    1.数组删除想到了如下:

    2.改段代码是从PTA上的题目集

  • 数组中目前学到排序方法,主要思路?
    1.冒泡排序法


2.选择排序法


  • 数组做枚举用法,有哪些案例?
    枚举变量用法中是默认第一个变量的数值为0,之后的变量依次累加。所以枚举的方式可以表达数组的下标。
    二维数组的PTA还不太熟,就从一维数组看了一下.

  • 哈希数组用法,目前学过哪些案例,举例展示。
    哈希数组不太懂是什么,就从PTA找了一个,哈希数组没有怎么听到过.


1.2 本章学习体会

  • 学习数组的时候,到现在也停留在一维数组的懵懂上面,在二维数组和字符数组还是很不熟悉,在昨天的PTA数组上机考试中,一维数组的题目都差不多有写,而二维数组的只是部分得分,在字符数组那里连思路都没有;本章学习的话,感觉数组还没有懂就已经进入到了指针的魔爪中,听老师说指针是C语言的灵魂,所以也是很紧张的。我感觉老师的上课方式是很好的,互动的时间不仅可以了解同学们的听课效率,还可以让那些走神的或者是没有跟上节奏的同学们迅速调整回来;老师知道我的上课效率比较低,就是下课后就不知道怎么做了,所以老师也经常提问我,这样能提高的自己的警惕性。所以关于数组就是要多刷代码,林老师说的就是没错,只有代码刷的够多,才能做对。

  • 计算这两周代码量,是否达到目标。

    从代码量上面看,字符数组的题目还没有深刻的进行理解,一维数组刚学的完,所以这周代码量目标没有达到,希望在下一周的时间补回来。

2.PTA实验作业

2.1 数组循环左移

2.1.1 伪代码

- 定义整形变量m,n,i,j;
- 定义数组a[100];
- 输入题目数值n m;
- for(i的循环到i<n累加)
  { 
    输入a[i];
  }
- for(i的循环到i<m累加)
  {
   定义temp为a[0];
   for(i的循环到i<n-1累加)
        a[j]=a[j+1];/*数组左移*/
        a[n-1]=temp;
   }
- for (i = 0; i < n; i++)
   if (i)
	printf(" ");
   printf("%d", a[i]);

2.1.2 代码截图

2.1.3 造测试数据

2.1.4 PTA提交列表及说明


1.格式错误
这个格式错误,是因为答案的格式与测试数据的格式不同,主要原因就是空格的存在与否。
解决方式:
用VS测试了好几次,看着都对,可是就是弄不出来,后来就加了这个,以来防止最后一个也打出空格。
2.格式错误
这个题目主要是格式的问题,难度不是很大,在VS上面直接调试到成功。


2.2二维数组每列排序

2.2.1伪代码

- 定义二维数组a[4][5],i,j,temp,k;
- 进行两重循环输出a[i][j];
- for (i = 0; i < 5; i++)
      for (k = 0; k < 3; k++)
           for (j = 0; j < 3 - k; j++)
                if(前面的数比后面的大)
                  { 
                       就将两个数进行交换;
                   }
- 最后运用双重循环将a[i][j]输出
- 最后得到结果

2.2.2 代码截图

2.2.3 造测试数据

2.2.4 PTA提交列表及说明

  • 格式错误,这个错误一直都是很小的错误,就是刚开始在VS做的时候看就对了,但是忘了把数字前面的三个空格加进去.
    改正:后来直接用%4d的方法写就可以了.
  • 这个题目林老师在PTA上机课上有讲过了,所以错误比较少.

2.3 查电视节目受欢迎程度

2.3.1伪代码

 - 定义n;以及数组a,定义i,j;
 - 并且定义并初始化n1到n9值为0;
 - 输入n;
 - for (i = 0; i < n; i++)
    每次循环都输入一次a[i];
     switch(a[i])
      { 
        case 1:
		n1++; break;
	case 2:
	        n2++; break;
        case 3:
		n3++; break;
        case 4:
		n4++; break;
	case 5:
		n5++; break;
	case 6:
		n6++; break;
	case 7:
		n7++; break;
	case 8:
		n8++; break;
         }
 - 最后输出:
        printf("   1%4d\n", n1);
	printf("   2%4d\n", n2);
	printf("   3%4d\n", n3);
	printf("   4%4d\n", n4);
	printf("   5%4d\n", n5);
	printf("   6%4d\n", n6);
	printf("   7%4d\n", n7);
	printf("   8%4d\n", n8);
}

2.3.2 代码截图


2.3.3 造测试数据

2.3.4 PTA提交列表及说明

  • 1.部分正确:是因为答案在n1到n9的循环中出现了错误,n7的计算弄成了n7--,所以导致计算错误,所以部分正确
    改正就是改成n7++;
  • 2.编译错误:就是在第一个错误要改正的时候,由n7--改成n7++是不小心把逗号删除掉了
  • 3.编译错误:接上一个,在添加逗号时,没有换成英文的逗号,所以出现了错误;

3.阅读代码

  • 首先改段代码在定义也是一样的,先定义a[20]a[20];然后接受字符getchar();

  • 这一块对字符串的应用可以好好吸收,因为我字符串还是比较弱的
  • 该代码好好地利用了index的定义来应用于题目的解题
  • 这段代码其实并不是很长,他将所有的条件全部放在一个while的循环里面,再用if-else的语句进行分类来解题,思路一看就很清晰,非常的让人容易理解。
posted @ 2019-11-17 20:55  吴奕恒  阅读(232)  评论(0编辑  收藏  举报