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

1.本章学习总结

1.1 思维维导图

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

1.2.1 学习体会

这周主要学习了数组,一维数组,二维数组和字符数组等,在一些基本的操作方面,如定义,引用等这三种数组并没有太大的区别,只是不同数组稍微有点改变,就像字符数组中就加入了一个结束符‘’.除了有学到一些数组的基本应用,还学到了冒泡排序法和选择法以及二分查找法等应用型方法。
随着对C语言的深入学习,数组这一章还是蛮难的,虽然上课有认真听课,大部分也能够听懂,但是课后做题也还是没有头绪,以后还是要多花时间在做题上。

1.2.2代码累计

2.PTA总分

2.1三次题集分数截图



2.2我的总分

一维数组得分:164分
二维数组得分:50分
字符数组的分:40分
总分:254分

3.PTA作业

3.1 题目一

本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序

3.1.1 算法分析

.定义i,j.x.n
.输入n,定义数组a[n]
.for from i=0  to  i<n  then  do 
   输入a[i];
.当a[i]<x且i<n时  do
    i++
.for from j=n-1  to  j>=i   then  do
   a[j+1]=a[j];
.把x赋给a[i]   a[i]=x;
.循环输出新的序列a[i];
.end

3.1.2 代码截图

3.1.3 提交列表及分析

Q1:循环的结束点通常搞不懂在哪里
Q2:插入新的数之后,其后面的每个数的位置都会向右移动一个位置,不懂怎么用代码表达出来

3.2 题目二

本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。

3.2.1 算法分析

.定义两个字符数组 str1[N],str2[N];
  定义ch,temp;
 定义 len1=0;
 定义循环变量 i,j;
 定义 k=0,flag;
.输入字符串   ch=getchar();
.for  from  i=0  to   ch!='
'     then do
    str1[i]=ch;
    len1++;    //计算字符串长度
    ch=getchar();
.for  from  i=0  to  i<len1   then do
     flag=0;   //没有重复字符时置flag=0;
     for  from  j=0  to  j<i   then do
           判断:如果有相同字符  then do
                flag=1
           否则   str2[k++]=str1[i];
.使用冒泡排序法来排序
.for from i= to k-1  then do
      for from j=0  to  k-i-1  then do
            判断str2的前一个数是否大于后一个数
            大于时交换位置  do     temp=str2[j];  str2[j]=str2[j+1];   str2[j+1]=temp;
.循环输出str2[i]
.换行
.end

3.2.2 代码截图


3.2.3 提交列表及分析


Q:我的绝望已经体现在我长长的提交列表上了,一直部分正确是因为有很多的小问题没有处理好
Q2:ASCII码值的大小比较错误

3.3 题目三

本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。

3.3.1 算法分析

.定义n,i,j;
.定义count=0,以及两个数组 a[10],b[10];
.输入n
.for  from i=0  to  i<n  then do
      输入n个数
.for  from j=n-1  to j>=0  then do
      b[count]=a[j];
       count++;
.循环输出数组b[ ]
.end

3.3.2 代码截图

3.3.3 提交列表及分析


Q:这个题目比较简单,一开始输出的格式没控制好,还没发现;

4.代码互评

4.1 代码截图

同学的代码截图


我的代码截图


4.2 二者异同

同:代码行数都差不多
异:flag的使用不同;我定义了两个flag,该同学定义了一个flag做变量;
我是使用的方法是先遍历第一个数组,再遍历第二个数组,看是否有相同的元素
该同学是把两个数组的元素合并成为一串,再用flag判断
原文地址:https://www.cnblogs.com/112Ada/p/10012216.html