C语言博客作业--数据类型

一、PTA实验作业

题目1:区位码输入法

1. 本题PTA提交列表

2. 设计思路

Begin
1.输入zone_bit_code //int zone_bit_code,high,low
2.high←zone_bit_code/100
3.low←zone_bit_code%100
4.输出字符high+160
5.输出字符low+160
End

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

忘记将输入的区位码变成两个字节,导致错误。

改正:利用取余的方式将区位码变成两个字节,并分别加上160,然后输出,结果正确。

题目2:倒顺数字串

1. 本题PTA提交列表

2. 设计思路

Begin
1.输入n //int n,i,flag
2.for i←1 to n
1)then if flag→1 输出空格
2)输出i
3)flag←1
3.for i←n-1 to 1
1)then if flag→1 输出空格
2)flag←1
3)输出i
End

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

(1)忘记输出要空格

(2)在加上空格后,忽略了题中所说两个数字之间有一个空格,但首尾没有空格

改正:用flag对空格输出做控制

题目3:简单计算器

1. 本题PTA提交列表

2. 设计思路

Begin
1.输入N //N,i,sum,flag皆为整型变量,op为字符型变量
2.sum←0
3.flag←0
4.sum←N
5.while op!='='
1)do 输入op
2)if op→'=' then break
3)输入 i
4)sum←calculate(sum,op,i)
5)if op→'/' and i→0 then flag←1
6)if op!='+' and op!='-' and op!='/' and op!='' then flag←1
6.if flag→1
1)then 输出“ERROR”
7.else
1)输出 sum
8.calculate(a,op,b) //定义整型函数calculate(int a,char op,int b)
1)if op→'+' then Sum←a+b //定义整型变量Sum
2)elseif op→'-' then Sum←a-b
3)elseif op→'
' then Sum←a*b
4)elseif op→'/' then if b!=0 then Sum←a/b
5)返回 Sum
End

3.代码截图


4.本题调试过程碰到问题及PTA提交列表情况说明。

1.题目理解错误,将结果与上一个计算结果相加

改正:sum=calculate(sum,op,i);

2.没考虑只输入一个数的情况

改正:在输入N时,对sum做处理

补充:多个重复错误是为了看错误提示。

二、截图本周题目集的PTA最后排名。

三、本周学习总结

1.你学会了什么?

1.1 一维数组如何定义、初始化?

  • 定义的一般形式:类型名 数组名 [数组长度]; 数组长度必须是一个常量
  • 初始化的一般形式:类型名 数组名 [数组长度]={初值表};
  • 注意
    1.静态数组如果没有初始化,系统自动给所有的数组元素赋0
    2.数组的初始化可以只针对部分元素
    3.数组初始化时,如果对全部元素都赋了初值,就可以省略数组长度,系统会根据初值的个数自动给出数组的长度。

1.2 一维数组在内存中结构?可画图说明。数组名表示什么?

  • 数组名表示该数组所分配连续内存空间中第一个单元的地址
  • 数组名是一个地址常量,不允许修改。

1.3 为什么用数组?

数组是一组相同类型数据的集合,用数组名和下标可以唯一地确定数组元素,管理数据十分方便。

1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.

  • 选择法:

for i ← 1 to n-1 //n为数组长度
key ← a[i]
k = i
for j ← i+1 to n
if A[j] < key
k = j
exchange A[i] and A[k]

  • 冒泡法:

for i = 1 to n //n为数组长度
for j = n to i+1
if A[j] < A[j-1]
exchane A[j] and A[j-1]

  • 插入法:

for i ← 1 to n-1
for j ← i-1 to 0
if a[i] > a[j] break
if j!=i-1
temp ← a[i]
for k ← i to j+2
a[k] ← a[k-1]
a[j+1] ← temp

1.5 介绍什么是二分查找法?它和顺序查找法区别?

  • 二分查找法:假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。
  • 与顺序法的区别:二分查找的一定是从小到大排列好的表,二分查找法的查找速度快,效率高;
    顺序查找是从头到尾逐个查找,与二分法比较,效率较低。

1.6 二维数组如何定义、初始化?

  • 二维数组的定义:类型名 数组名[行长度][列长度];
  • 初始化:类型名 数组名[行长度][列长度]={{初值表0},...,{初值表k},...};
    - 二维数组的初始化也可以只针对部分元素;
    - 顺序赋初值:根据数组元素在内存中的存放顺序,把初值表中的数据依次赋给元素,如果只对部分元素赋初值,要注意初值表中数据的书写顺序;
    - 二维数组初始化时,如果对全部元素都赋了初值,或分行赋初值时,在初值表中列出了全部行,就可以省略行长度。

1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。

  • 矩阵转置:定义数组a[i][j],那么数组b[j][i]就是数组a[i][j]的转置矩阵;
  • 下三角:i>=j
  • 上三角:i<=j
  • 对称矩阵:i=j

1.8 二维数组一般应用在哪里?

需要输入一组二维数据的时候要用到二维数组,比如数学中的矩阵。

2.本周的内容,你还不会什么?

  • 本周PTA数据类型的题目,第八题,对控制条件不是很了解,修改多次,要么判断都是“yes”,要么都是“no”;
  • 第九题还没来得及做;
  • 关于数组的自定义函数,好像明白,但是写的时候又写不来;
  • 关于期中考:看代码找错的能力有点弱,还有手写代码果然要加强。
posted @ 2017-11-26 22:54  看尽长安花  阅读(307)  评论(5编辑  收藏  举报