C语言博客作业--数据类型
一、PTA实验作业
题目1:倒顺数字串
1. 本题PTA提交列表
2. 设计思路
- 定义变量n,i,j
- 输入n
- i的值 for 1 to n,输出i,如果i<n,再输出空格,i自增
- j的值for n-1 to 1,输出空格,再输出j,j自减
- 返回0
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
发现输出了两个6
因为j的初值取到n,所以还会重复输出一个6
题目2: 打印菱形图案
1. 本题PTA提交列表
2. 设计思路
- 定义变量。。。。
- 输入一个值存入n
- 第一个循环打印1~(n+1)/2行的图案
- a=n+1-2i,b=2i-1
- j的值for 1 to a 输出空格
- k的值for 1 to b 输出*和空格
- 换行 end
-第二次循环打印(n+3)/2~n行图案 - c=2i-n-1,d=2(n-i)+1
- l的值for 1 to c输出空格
- m的值for 1 to d输出*和空格
- 换行 end
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
运行发现跟PTA的图案一模一样,但是提交却出现了格式错误,认真看下题目发现每个*后面都要空格,太惯性思维了
然后改了代码还是有格式错误,输入3发现
第二次循环的图案打印出现问题
用3调试第二次的循环
发现c的值为负数。。。。。。 在草稿上把输入的7当为特例写代码导致不具有普遍性,应该改正c的赋值
题目3:掉入陷阱的数字
1. 本题PTA提交列表
2. 设计思路
- 定义变量
- 输入一个数存入N
- i的值for 1 to 某个数(当N=N1时退出循环)
- 把N赋值给M和number
- 只要number!=0,number=number/10,n自增,循环结束得出N的位数n
- j的值for 1 to n, a=M%10, M=M/10,sum=sum+a,j自增 先得出sum的值
- N1=sum*3+1,得出新的数N1
- 输出 i:N1
- 如果N=N1直接退出循环,否则 把N1赋值给N,把sum赋值0,换行 end
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
第一次就进入死循环而且还没有换行,而且把计算N的位数n的循环放在外面,所以n的值不变了,我修改
改正后格式正确但是从第二个数开始就不正确了
发现第一次循环后sum的值不是0,会继续加上去,在大循环后面重新给sum'赋值为0
二、截图本周题目集的PTA最后排名
三、本周学习总结
1.1 一维数组如何定义、初始化
- 1.定义一个数组需要明确数组的变量名,数组元素的类型和数组的大小,一般类型为 类型名 数组名[数组长度].
1.2 一维数组在内存中结构?可画图说明。数组名表示什么?
- 数组名是一个地址常量,存放数组内存空间的首地址
1.3 为什么用数组?
- 在程序运行期间其值可以改变的量。其实理解得简单一点,变量就是一块小内存的名字,这块内存的大小由这个变量的类型决定,同时也决定了这块内存能存放数据的大小范围
1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.
选择法:
- for 0 to n-1 控制外循环个数
- 令k=i for i+1 to n 找下一个数到最后一个数中寻找最大值
- 若后面有比最大值更大 则k=j
- 否则用temp=a【k】,a【k】=a【i】,a【i】=temp 交换位置
冒泡法
- for 0 to n 控制循坏次数
- for 0 to n-j 内循环个数
-if 这个数大于下个数,则用temp=a【i】,a【i】=a【i+1】,a【i+1】=temp 进行交换位置
插入法
- i的值for 1 to n 控制外循环次数
- j的值for i-1 to n
- temp=a[i],a[j+1]=a[j],a[j+1]=temp 进行插入
1.5 介绍什么是二分查找法?它和顺序查找法区别?
- 假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找; 若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。
- 相对于循序法效率更高
1.6 二维数组如何定义、初始化?
- 类型名 数组名 [行长度] [列长度] = {{初值表0},…,{初值表k}…}
1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。
- 下三角 i>=j;上三角i<=j;对称矩阵i=j
1.8 二维数组一般应用在哪里?
应用于某些有一定的位置逻辑的元素,如矩阵
2.本周的内容,你还不会什么?
- 多种的排序法掌握并不精,虽然算法逻辑可以想出来,但是一旦用代码敲出来又是另一番光景