数据结构

一、PTA实验作业(5分)

本周要求挑3道题目写设计思路、调试过程。
必须在7-8,7-9,7-10中选一题介绍设计思路。
具体书写内容及格式如下:

题目1:交换a和b的值

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(用代码表示扣分)

1、定义a、b用于存放输入的两个值
2、输出时 先输出b的值 在输出a的值
scanf(“%d,%d”,b,a)

3.代码截图

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

1.一开始想法太复杂,想着在引入变量,引入数组,引入函数等做法,发现要写很久,于是直接交换两个数的值就完成了
2.在输出的时候格式错误,调试后发现多了空格变量
PTA提交列表中的每个错误详细说明为什么及如何解决。

题目2:区位码输入法

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(用代码表示扣分)

1.定义number、m、n用于存放准备输出汉字的横和列值
2.m=number%10+((number/10)%10)10+160;
n=((number/100)%10)+((number/1000)%10)
10+160;
3.putchar(m)putchar(n)得到结果

3.代码截图

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

1.刚开始做时运行发现汉字不对,后发现是m、n的值赋反了
2.不能用printf输出 否则得不到答案。

题目3:简单计算器

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(用代码表示扣分)

1.定义i,sum,t=0;//i存放输入数字;sum存放和;t存放错误输出的表达
2.输入sum
3.while(ch!=‘=’),输入i
switch(ch){
case'+':sum+=i;break;
case'-':sum-=i;break;
case'':sum=i;break;
case'/':if(i!=0)sum/=i;else t++;break;
default:t++;break;
4.如果ch是等于,退出循环
5.如果t为0,输出sum
6否则输入ERROR

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

1.在写代码的时候没想到如何去说明表达式错误,后引入一个t,当t不为0的时候错误
2.当时没意识到如果除数为0时应该为错误,于是一直部分正确

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

PTA排名

三、本周学习总结(3分)

1.你学会了什么?

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

定义, int arr[10];
初始化 int arr[]={1,2,3,4,5,6,76};

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

一维数组再内存中结构是连续的,线性的,数组名表示首元素的地址

1.3 为什么用数组?

节省内存,没定义一个变量,系统就会在内存中划分一个空间来存放该数据

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

1.选择法
初始序列:{49 27 65 97 76 12 38}
  第1趟:12与49交换:12{27 65 97 76 49 38}
  第2趟:27不动 :12 27{65 97 76 49 38}
  第3趟:65与38交换:12 27 38{97 76 49 65}
  第4趟:97与49交换:12 27 38 49{76 97 65}
  第5趟:76与65交换:12 27 38 49 65{97 76}
  第6趟:97与76交换:12 27 38 49 65 76 97 完成
2.冒泡法
87 12 56 45 78
87和12交换:12 87 56 45 78
87和56交换: 56 87 45 78
87和45交换: 45 87 78
87和78交换: 78 87
3.直接插入排序
待排序记录 R1,R2,… ,Rn–1, Rn
第一步:R1
第二步:(R1 ), R2
第三步:(R1 , R2), R3
……
第 j 步:(R1,R2,… ,Rj–1), Rj
……
第 n 步: (R1,R2,… ,Rn–1), Rn.

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

二分查找的特点就是从表中间开始查找目标元素。如果找到一致元素,则查找成功。如果中间元素比目标元素小,则仍用二分查找方法查找表的后半部分(表是递增排列的),反之中间元素比目标元素大,则查找表的前半部分。
对比顺序查找的特点就是从表的第一个元素开始一个一个向下查找,如果有和目标一致的元素,查找成功;如果到最后一个元素仍没有目标元素,则查找失败。

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

方法(1)
int arr1[2][3] = { { 1, 2, 3 }, { 4, 5, 6 } };

方法(2)
int arr2[2][3];
int num = 1;
for (int i = 0; i < 2; i++){
for (int j = 0; j < 3; j++){
arr2[i][j] = num++;
}
}

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

设A为m×n阶矩阵(即m行n列),第i 行j 列的元素是a(i,j),即:A=a(i,j),定义A的转置为这样一个n×m阶矩阵B,满足B=a(j,i),即 b (i,j)=a (j,i)(B的第i行第j列元素是A的第j行第i列元素),记A'=B。(有些书记为AT=B,这里T为A的上标)直观来看,将A的所有元素绕着一条从第1行第1列元素出发的右下方45度的射线作镜面反转,即得到A的转置。
下三角:i>=j
上三角:i<=j
对称矩阵:i=j

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

矩阵

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

1.pta字符型变量的题做的很吃力
2.二维数组的使用不流畅
3.约瑟夫环的做法不是很精通

posted @ 2017-11-26 17:38  林怡鹏  阅读(301)  评论(4编辑  收藏  举报