1.本章思考总结
1.1思维导图
1.2本章学习体会及代码量学习体
1.2.1学习体会
这几个星期,我们用了很长一段时间学习了数组,一方面是因为这方面的知识比较多,而且复杂,一维二维字符三个方面的题都很多而且具有一定难度:一维方面要掌握许多排序的方法,二维则与数学方面的矩阵相联系,并且有一系列的与生活实际联系的应用。在我看来,字符则更加复杂一些,在编程方面有了一些新语法,考虑的更全面也更有深度。另一方面则是因为数组是c语言很重要的思想与应用,一个数组可以承载同一类型的许多数,并且与后面学到的指针、结构类型、文件都会联系起来使用。数组的应用是重要而广泛的,同时题也是很难的,学了数组,好几个题集一起来了,还难,编程量还多,恰逢线代期末考试,这段时间过得就很艰难。现在线代考试结束,我也要趁这段时间好好学习一下数组这方面的知识,夯实基础。
1.2.2代码累计
2.PTA总分
2.1得分与排名:
2.2我的总分:182
3.PTA实验作业
3.1PTA题目1
给定两个整型数组,本题要求找出不是两者共有的元素。
3.1.1算法分析
1.int main
int i;
int an,bn,cn;
int a[an];
int b[bn];
//定义两个数组,一个a,一个b
然后定义一个函数并调用DiffArray(a,an,b,bn);
2.void DiffArray
int c[lenc]; //定义一个具有两个数组长度的数组,用来存放a和b 数组的集合
int flag[i];//定义flag 数组用来存放相同的数
用for循环嵌套遍历lenc数组,利用flag找到是否存在相同的数
for(i=0;i<lenc;i++)
{
if(flag[i]) continue;
for(j=i+1;j<lenc;j++)
{
if(c[i]==c[j] && i<an && j>=an) //same in array a and b
{
flag[j]=1;
flag[i]=1;
}
if(c[i]==c[j] && j<an)//same in array a
flag[j]=1;
if(c[i]==c[j] && j>=an)//same in array b
flag[j]=1;
}
if(flag[i]==0)
c[k++]=c[i];
} //c数组用来存放不同的数,最后printf输出
3.1.2代码截图
3.1.3PTA提交列表及说明
Q1:编译错误?
A1:无法找到思路,并不懂得如何将相同的数存入数组,而且第一开始没有想到用一个数组存放两个数组之后遍历。
Q2:答案错误?
A2:flag数组位置错误
3.2PTA题目2
上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。
本题要求编写程序,判断一个给定的方阵是否上三角矩阵。
3.2.1算法分析
1.定义输入矩阵的个数T,和循环中会用到变量i,j,k
2.for i 到T //是个大循环,在最外层,用来输出循环的个数
3.在大循环里
int a[n][n];
for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
scanf("%d",&a[j][k]);
} //输出矩阵
3.for(j=0;j<n;j++)
{
for(k=0;k<n;k++)
{
if(j>k)
{
if(a[j][k]!=0)
flag=0;
}
}
} //判断上三角形矩阵
3.2.2代码截图
3.2.3PTA提交列表及说明
Q1:编译错误?
A1:日常粗心问题,中英文标点搞混了。
Q2:答案错误
A2:前几次是flag的位置不对,后来改了很多,发现是条件语句错了,应该有两个if
3.3PTA题目
一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。
3.3.1算法分析
1.int main()
char ch
ChangeIp //在主函数中先定义一个字符数组,用于存放二进制数,然后调用IP地址转换的函数
2.在ChangeIp函数中
for(i=0;i<32;i++)
{
number=number*2+ch[i]-'0';
if(i%8==7)
{
printf("%d",number);
if(i!=31)
printf(".");
number=0; //循环加判断,实现IP地址的转换
3.3.2代码截图
3.3.3PTA提交列表及说明
Q1:编译错误?
A1:我函数掌握的不是很熟练,在调用数组时,形参实参发生了调用错误。
Q2:答案错误?
A2:if条件不对,怎么都无法得出正确答案,直到我看了 大佬的代码,觉得这个if判断的很机智非常简单。
4代码互评
4.1代码截图
同学代码
我的代码
4.2评论
1.该同学的IP地址转换代码与我的不同,我在其中用了函数,而她是直接在main函数中写的
2.我们的判断条件不同,我是取余8得7,她是i+1取余7得0
3.在“.“的处理上不同,她用了if else判断,而我是直接不等于31