一、PTA实验作业
题目1:7-3 倒顺数字串
1. 本题PTA提交列表
2. 设计思路
定义整型变量n存放输入的数字,i、j用于循环
输入一个数值n
for i=1
输出i的值,i=i+1
如果n!=1,输出空格
当i>n时,结束循环
for j=n-1
输出j的值,j=j-1
如果j!=n-1,输出空格
当j<=0时,结束循环
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
最开始忽略了空格的问题,输出最后一个数的时候,它的后面还有一个空格,与题目要求不符合
题目2:7-6 掉入陷阱的数字
1. 本题PTA提交列表
2. 设计思路
定义整型变量n存放输入的自然数,n2存放新产生的自然数,sum=0(sum存放各位数字相加之和),count=0(count存放n掉入陷阱的步数),a存放n的值
输入n的值
do
如果count!=0,将n2的值赋值给n
将n的值赋值给a
do
求sum的值
n=n/10
当n==0时,结束循环
步数count=count+1
求出新的自然数n2
输出count和n2的值
如果上一个数a跟n2不相等,输出\n
sum=0为下一次循环做准备
当a==n2时,结束循环
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
刚开始写完代码,运行的时候发现程序进入了死循环出不来,不能在4的时候就结束程序,用dev c调试时,发现自己的条件用错了,这里的n应该要改成a,因为n的值在前面改变了,等于0,所以永远也不会等于n2的值
题目3:7-10 简单计算器
1. 本题PTA提交列表
2. 设计思路
定义整型变量n1,n2,result=0,flag=0(flag=0说明除法分母为0或有非法运算符),count=0
定义字符型变量op
输入第一个操作数n1和第一个字符op
当op!='='时,
如果count!=0,n的值赋值给result,输入另一个op
switch(op)
输入n2
根据不同的op,做出相应的运算,flag=1,count=count+1。如果op为‘/’,并且n2为0时,flag=0
如果op=='='并且count==0时,
result=n1的值,flag=1
如果flag==1
输出result的值
否则输出ERROR
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明
输出最后结果时的判断条件错误,导致出现了第二个图的情况,输出ERROR的情况应该是存在非法字符和除法时n2为0时的时候,而不是n2等于0的时候都输出ERROR
二、截图本周题目集的PTA最后排名。
三、本周学习总结
1.你学会了什么?
1.1 一维数组如何定义、初始化?
定义
一维数组定义的一般形式:
类型名 数组名 [数组长度];
int a[10]
初始化
1.在定义数组时,可以对数组元素赋初值
int a[10]={1,2,3,4,5,6,7,8,9,10};
2.也可以只针对部分元素
int a[10]={1,2,3,}
3.如果对全部元素都赋了初值,就可以省略数组长度。如果只对部分元素初始化,数组长度是不能省略的。
1.2 一维数组在内存中结构?可画图说明。数组名表示什么?
数组名表示该数组所分配连续内存空间中第一个单元的地址,即首地址。数组名是一个地址常量,不允许修改
1.3 为什么用数组?
可以让同一批相同类型的变量使用同一个数组变量名,表达简洁,可读性好,便于使用循环结构
使用数组会让程序变的简单,而且避免了定义多个变量的麻烦。
1.4 介绍选择法、冒泡法、直接插入排序如何排序?伪代码展示.
选择法:
- 定义整型变量i,index,k,n,temp
- 定义数组a[10]
- 输入n的值,输入这n个数
- for i=0
- 将输入的数依次赋值给数组a的元素
- i>n时结束循环
- for k=0
- 最小值的小标index=k
- for i=k+1
- 如果a[i]<a[index],index=i;i=i+1
- 当i>=n时,结束循环
- 最小元素与下标为k的元素交换,k=k+1
- 当k>=n-1时,结束循环
- for i=0
- 输出经过排序后的数字a[i],i=i+1
- 当i>=n时,结束循环
冒泡法:
-定义整型变量i,k
-定义数组
- 输入n的值,输入这n个数
- for i=0
- 将输入的数依次赋值给数组a的元素
- i>n时结束循环
- for i=n-1
- for k=0
- 如果a[k]>a[k+1],将两个的数值交换
- k=k+1
- 当k>n时,结束循环
- i=i-1
- 当i<0时,结束循环
- for i=0
- 输出经过排序后的数字a[i],
- i=i+1
- 当i>=n时,结束循环
直接插入法:
- 输入n个数
- for i=1,i<n,i++
- a[i]跟前面的数比较大小,如果小于前面的数,继续往前比较,直到找到一个比它小的数,插在这个数后面
-
重复上面的步骤,直到i大于等于n
1.5 介绍什么是二分查找法?它和顺序查找法区别?
一组数据按顺序排列,先算出它的中间数,跟所要查找的数比较一下大小,看是在中间数的左边还是右边,进入相应的区间,重复以上的步骤
区别:当数据多时,二分查找法效率高,顺序查找法效率低
二分查找法要求数据是有序的,而顺序查找法则没有这个要求1.6 二维数组如何定义、初始化?
定义
二维数组的定义形式为:
类型名 数组名 [行长度] [列长度]int a [3] [2];
初始化
1.全部赋值
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
2.部分赋值
static int b[4][3]={{1,2,3},{},{4,5};
等价于
static int b[4][3]={1,2,3,0,0,0,4,5};
1.7 矩阵转置怎么实现?方阵中:下三角、上三角、对称矩阵的行标i列标j的关系?请说明。
a[i][j]中的下标i、j互换一下成a[j][i]就可以实现转置
下三角:i>=j
上三角:i<=j
对称矩阵:i==j1.8 二维数组一般应用在哪里?
主要用于表示二维表和矩阵
2.本周的内容,你还不会什么?
数组该如何定义还不是很熟练,在还不知道数组长度的时候就定义数组
对于各种符号的优先级还没记好,做题时需要翻书看,特别是^符号,老是会忘记这个符号是干嘛
自己阅读程序的能力挺差的,考试的时候好几题错了