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
  如果flag
0
   输出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=number
2+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的学习?

  • 及时复习学过的内容,扎实基础;
  • 多锻炼自己阅读代码的能力,并提高阅读速度
posted @ 2017-12-03 22:19  梁才玉  阅读(313)  评论(1编辑  收藏  举报