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判断