C语言博客作业--数据类型
一、PTA实验作业
题目1: 倒顺数字串
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(用代码表示扣分)
- 首先输入一个数字判断是否为1的特殊情况,如是则直接输出。
- 不是则先进入一个for循环从1输到这个数字,将循环变量i减2进入一个以循环变量i递减的for循环输出每次递减的i知道i=1为止。
- 对于行末不能有空格问题只要判断第二个循环中当i=1时另外输出数字末尾无空格就好了。
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
- 多输出了一个中间最大的数字。
通过调试得知是在第一个循环出来后循环变量i比输入的值多一,后来将i的值减二,才正确
题目2: 掉入陷阱的数字
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(用代码表示扣分)
- 定义一个计算数字的每个位数和乘3+1的函数,在主函数输入第一个数字进入for循环先调用函数计算得出值付给result,判断与前面的数是否相等是则退出循环,不是则再调用函数循环计算直到有两值相等.
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
-
刚开始总想把所有过程在函数中完成,但后来发现比较麻烦
-
后来改变想法,用函数进行计算将得出的值返回到主函数在主函数内用一个重复赋值,再调用函数计算,再比较两值是否相等解决问题
题目3: 判断合法标识符
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(用代码表示扣分)
- 先输入repeat的值在用一个getchar吸收回车
- 用for语句进行repeat次运算,令flag=0并用getchar输入第一个字符,判定是否为字母或下划线开头
- 不是则进入一个while循环重复输入其余字符并令flag++当输入回车时跳出,判断flag时否为0不为0则输出No
- 是为字母或下划线开头,进入一个while循环重复输入其余字符并判断字符是否为字母数字或下划线是则继续输入其余字符,不是则令flag++,输入回车则结束循环,在最后判断flag的值是否为0来输出Yes或No
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
-
1.开始没有把输入repeat的值后的回车吸收,导致直接跳出
-
2.没有将flag的数据重置导致flag都不为0,输出结果都为no,老火
-
3.格式错误是因为没有换行......
二、截图本周题目集的PTA最后排名。(2分)
三、本周学习总结(3分)
1.你学会了什么?
1. 一维数组如何定义、初始化?
定义:类型名 数组名 [数组长度]
初始化:类型名 数组名 [数组长度] = {初值表};
1.2 一维数组在内存中结构?可画图说明。数组名表示什么?
内存结构
数组名是数组变量的名称,是一个合法标识符
1.3 为什么用数组?
在程序中使用数组可以让一批相同类型的变量使用同一个数组变量名,优点是:表达简洁,可读性好,便于使用循环结构。
1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.
-
1.冒泡法:先输入数组元素的个数,经过一个for循环输入所有元素,用嵌套循环,外循环控制排序趟数,n个数排n-1趟,内循环为每趟的比较次数(随着外循环趟数的增加而减少),用if进行相邻元素比较,逆序则交换,最后再用一个for循环来输出排序后的结果。
-
2.选择法:先输入数组元素的个数,经过一个for循环输入所有元素,用嵌套循环,外循环控制趟数,n个数选n-1趟,假设当前趟的第一个数为最值,记在k中,从下一个数到最后一个数之间找最值若其后有比最值更大的则将其下标记在k中,若k不为最初的i值,说明在其后找到比其更大的数,则交换最值和当前序列的第一个数,最后再用一个for循环来输出排序后的结果。
-
3.直接插入排序:先输入数组元素的个数,经过一个for循环输入所有元素,用嵌套循环,外循环控制趟数,n个数从第2个数开始到最后共进行n-1次插入,将待插入数暂存于变量t中,在有序序列(下标0 ~ i-1)中寻找插入位置,若未找到插入位置,则当前元素后移一个位置,找到插入位置,完成插入,最后再用一个for循环来输出排序后的结果。
1.5 介绍什么是二分查找法?它和顺序查找法区别?
- 对于数组进行比较的时候,比较数组大小的中间值,当发现数据大于该中心数据,就在后面的一个区间进行比较,
如果小于该中心数据,就在前面一个区间进行比较,在新的区间里,再次使用之前的大小中间比较法,比较,直到最后找到该数据为止
- 顺序查找法是从表的一端开始的,二分法是从中间开始的
1.6 二维数组如何定义、初始化?
二维数组的定义:类型名 数组名 [行长度] [列长度] ;
初始化 :类型名 数组名 [行长度] [列长度] = {{初值表0} , ··· , {初值表k} , ··· };
1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明
- 上三角 :i<=j
- 下三角 :i>=j
- 主对角线:i==j
- 副对角线 :i+j==n-1
1.8 二维数组一般应用在哪里?
- 应用于矩阵方面
2.本周的内容,你还不会什么?
- 对于本周的期中考试,自己十分不满意,感觉离开电脑写编程题有点力不从心,总是会遗漏一些东西,对于课本知识掌握还是不够熟练,没有认真看课本,课后没有认真复习巩固
- 对于PTA的第9题打了很久还是感觉代码打出来很乱,有的时候会把自己弄迷糊
- 对于直接插入排序法还是有点弄不清楚