您的位置:首页 > 编程语言 > C语言/C++

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

2017-11-26 22:54 639 查看

一、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”;

第九题还没来得及做;

关于数组的自定义函数,好像明白,但是写的时候又写不来;

关于期中考:看代码找错的能力有点弱,还有手写代码果然要加强。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: