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

一、PTA实验作业

题目1:7-5 BCD解密

1. 本题PTA提交列表

2. 设计思路

  • 1.输入十进制数number
  • 2.输出十六进制数number

3.代码截图

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

第一次用了比较复杂的方法,虽然写对了,但是效率低。后来听说有这种方法,就试了一下。

题目2:7-8 判断合法标识符

1. 本题PTA提交列表

2. 设计思路

  • 1.整型repeat为计算次数,i,j军为循环变量
  • 2.定义字符型数组a【80】,输入字符数组a
  • 3.做repeat次运算,从a【0】开始,如果a【j】=1输出yes,否则输出no
  • 4.档j=repeat-1时end

3.代码截图

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

这题不会做

题目1:7-2 区位码输入法

1. 本题PTA提交列表

2. 设计思路

  • 1.area为区码,bit为位码,number为输入的数
  • 2.输入number
  • 3.将number看成一个四位数,把number分为两部分,area为千位和百位,bit为个位和十位
  • 4.分别+160,输出字符型常量

3.代码截图

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

刚开始我把number分为四个部分,个十百千,但是区码和位码都为两位数,并且我定义area和bit为整型变量

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

三、本周学习总结

1.你学会了什么?

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

  • 定义:数组类型+数组名+下标
  • 初始化:初始化时可以只对一部分元素赋初值也可以全部赋值

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

  • 连续的,详见课本149-150页
  • 数组名是一个地址常量,存放数组内存空间的首地址

1.3 为什么用数组?

  • 节省内存

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

1.选择法

如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次相邻元素的两两比较,在第j趟比较中要进行n-j次两两比较。比较的顺序从前往后,经过一趟比较后,将最值沉底(换到最后一个元素位置),最大值沉底为升序,最小值沉底为降序。

  • 1.定义循环变量i,j和总个数n,以及中间量k,temp.数组a[n]
  • 2.进入for(i = 0; i < n-1; i++)控制循环次数,n个数需要n-1次循环。
  • 3.k赋值为i,在进入内循环for (j=i+1; j < n; j++) ,循环内判断a[j] < a[k],若是则赋值k等于j.
  • 4.重复第3步,直到j=n.
  • 5.若k != i,temp赋值为a[k],a[k]赋值为a[i],a[i]赋值为temp,来交换a[k],a[i]的值。
  • 6.重复第2步,直到i=n-1,结束循环。

2.冒泡法

每趟选出一个最值和无序序列的第一个数交换,n个数共选n-1趟。第i趟假设i为最值下标,然后将最值和i+1至最后一个数比较,找出最值的下标,若最值下标不为初设值,则将最值元素和下标为i的元素交换。

  • 1.定义循环变量i,j,总个数n和数组a[n].中间量temp
  • 2.进入for(i=0;i<10-1;i++)控制循环次数,n个数需要n-1次循环。
  • 3.在进入内循环for(j=0;j<9-i;j++)每次比较n-i次,if判断a[j]>a[j+1],若为真,temp赋值为a[j],a[j]赋值为a[j+1],a[j+1]赋值为temp,来交换a[j],a[j+1]的值。
  • 4.重复第3步,直到j=9-i.结束内循环。
  • 5.重复第2步,直到i=10-i.结束循环输出数组内的数

3.直接插入法

将序列分为有序序列和无序列,依次从无序序列中取出元素值插入到有序序列的合适位置。初始是有序序列中只有第一个数,其余n-1个数组成无序序列,则n个数需进n-1次插入。寻找在有序序列中插入位置可以从有序序列的最后一个数往前找,在未找到插入点之前可以同时向后移动元素,为插入元素准备空间。

  • 1.从第一个元素开始,temp=a[i],i为循环变量表示不断往后取数,并赋值给temp
  • 2.取出下一个元素,在已经排序的元素序列中从后向前判断,并利用j==1标记它的初始位置
  • 3.找到新元素小于已排序的元素,即temp<a[j-1],就将已排序的该元素移到下一位置 ,将新元素插进去,j--
  • 4.重复步骤3,直到找到新元素大于或者等于已排序的元素的位置,即temp>=a[j-1]
  • 5.将新元素插入到该位置中,将a[j-1]的值赋给a[j],将temp的值赋给a[j]
  • 6.重复步骤2,直至将所有数据取完

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

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

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

  • 定义:类型名 数组类型 数组名 [数组行长度][数组列长度]
  • 初始化:类型名 数组类型 数组名[数组行长度][数组列长度]={ { 初值表1},···,{ 初值表k},···}

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

上三角:i > = j;下三角:i < = j;转置后,上三角:i < = j;下三角:i > = j;
对角矩阵:i=j

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

方阵矩阵等行列数目较多的情况

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

PTA数据类型第八题
正确思路

  • 1.定义整形变量repeat,flag,字符变量op
  • 2.输入循环次数repeat
  • 3.当repeat为真时进入循环
  • 4.输入字符op
  • 5.当第一个字符在a-z,A-Z或者_时进入判断语句
  • 6.flag=1表示是合法变量
  • 7.当op不读入回车时进入循环
  • 8.如果为合法字符,继续循环,不然则让flag=0
  • 9.如果flag==1,输出yes,不然输出No
  • 10.继第5步,如果不进入判断语句,则直接输出No
posted @ 2017-11-26 20:14  折原临也  阅读(265)  评论(3编辑  收藏  举报