C语言博客作业--一二维数组
一、PTA实验作业
题目1:判断上三角矩阵
1. 本题PTA提交列表
2. 设计思路
定义整形变量T,t,n,flag,循环变量i,j。
输入T //T表示矩阵个数
for i=1 to i<=T //循环输出T个矩阵并判断是否为下三角矩阵
初始化flag=0
输入n
定义整型数组a[n][n]
for j=0 to j<n
for t=0 to t<n
scanf("%d",&a[j][t]);//输出二维矩阵
for(j=0;j<n;j++)
for t=0 to t<j
如果 a[j][t]!=0
flag=1 //矩阵不满足时
end j
如果 flag==0
输出YES //距阵满足时
否则
输出NO
end i
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
没有在第一个循环中令flag=0,第一次循环后的答案都是错的。
题目2:找鞍点
1. 本题PTA提交列表
2. 设计思路
定义整形变量n,max,min,flag,循环变量i,j。
输入n
定义整形数组a[n][n]
for i=0 to i<n
for j=0 to j<n
输入a[i][j] //输入数据存放在数组中
for i=0 to i<n
令max=0
for j=1 to j<n
如果a[i][j]>=a[i][max]
max=j //先找行中的最大值
令 min=0
for j=1 to j<n
如果a[j][max]<=a[min][max]
min=j //在前面找到的最大值所属的列中找最小值
如果imin
flag=1 //当最小值最大值为同一个数字时,找到该数
输出列下标min行下标max,并结束i循环 //输出该数的行列标
end i
如果flag0
输出NONE
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
- 开始写的时候误以为输出的max是行下标,min是列下表,调试的时候输出答案的时候才发现了错误。
- 在判断最大值和最小值的时候把max=j写成了a[max]=a[j]。
题目3:简化的插入排序
1. 本题PTA提交列表
2. 设计思路
定义整形变量 i,n,x,j,t;
输入n //n为数组长度
定义一个整形数组a[n];
for i=0 to i<n
输入a[i] //把数据存入数组
end i
输入x的值
如果a[0]>=x //讨论当x为数列中最小值的情况
则输出x
for i=0 to i<n
输出a[i]
end i //输出整个数组的值
如果a[n-1]<=x //讨论当x为数列中最大值的情况
for i=0 to i<n
输出a[i]
end i //输出整个数组
在最后输出x的值
当x位于中间时 //讨论x排在数列中间的情况
for i=0 to i<n
如果x>=a[i]且x<=a[i+1]
则for j=0 to j<=i
输出a[i]
end j
输出x
for t=i+1 to t<n
输出a[t]
结束循环
end i
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
第一次写时没分开讨论三种情况,只讨论了插在中间时的情况,最后通过pta上的提示改正了。
二、截图本周题目集的PTA最后排名。
PTA排名
三、同学代码结对互评
1.互评同学名称
林艺薇
2.我的代码、互评同学代码截图
我的代码
艺薇的代码
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?
- 我的代码是直接分分三种情况讨论,再分别分段输出数组中的数据;艺薇的代码是再定义一个新数组,找出数组前后数据位置变化,再把变化后的数据赋值给新数组保存,最后输出。
- 我的代码比较直接,虽然输出语句有点多,但很容易读懂。她的代码很简洁,输出语句很少,思路也很好。我更喜欢我的代码,因为我的代码不用找规律,不容易出错。
四、本周学习总结
1.你学会了什么?
1.1 C中如何存储字符串?
c语言将字符串作为一种特殊的一维数组来处理。将字符串存入字符数组时,要包括有效字符和字符串结束符'\0'。
1.2 字符串的结束标志是什么,为什么要结束标志?
结束标志为遇到结束符'\0',因为为要用结束标志来控制循环。
1.3字符串输入有哪几种方法?
方法:数据初始化、赋值和输入
1.4 数字字符怎么转整数,写个伪代码?
定义整形变量number,i,
定义字符数组a[10]
令i=0
while (a[i]=getchar())!=‘\n'
i++
end while//输入一个数组
记最后一个字符为a[i]='\0'//将结束符存入数组
for i=0 to a[i]!='\n'
number=a[i]-'0'//转换成数字
输出number
end i
end for
1.5 16进制、二进制字符串如何转10进制?写伪代码?
定义整形变量number,i,
定义字符数组a[80]
令i=0
while (a[i]=getchar())!=‘\n'
i++
end while//输入一个数组
记最后一个字符为a[i]='\0'//将结束符存入数组
for i=0 to a[i]!='\n'
number=number16+a[i]-'0'//将十六进制转换为十进制
或number=number2+a[i]-'0'将二进制转换为十进制
输出number
end i
end for
2.本周的内容,你还不会什么?
- 该题的代码读不懂它的目的
- pta题目集中这题写了很久还是没思路
3.期中考试小结
3.1 你认为为什么没考好?
- 很多基础没掌握好;
- 学过的知识点没能及时复习,很容易遗忘。
- 读编程题的能力差。
- 写题的速度太慢,不够时间。
3.2 罗列错题。
选择题
考试时有些符号的优先级忘记了。
填空题
这题太粗心了,没注意到ch还没有输入语句输入,直接填了ch。
改错题
这题没找到ruturn b改为return这个错误,在程序中当结束循环时b的值是0,所以b不可能是返回值。
编程题
编程题的第二题求解一元二次方程把a,b,c,这几个变量定义成了整形。输出结果时没有换行。代码写得有点乱,没有注释。
3.3 下半学期要怎么调整C的学习?
- 及时复习学过的内容,扎实基础;
- 多锻炼自己阅读代码的能力,并提高阅读速度