1.学习总结(2分)
2.PTA实验作业(4分)
题目1:7-1 jmu-字符串是否对称
2.2 设计思路
函数参数 str[]为原字符串 s为str[]入栈的栈
自定义类型变量 e 存放栈顶元素
for i=0 to str[i]为空
将str[i]进栈s
end for
for i=0 to str[i]为空
Pop函数出栈(e=原栈顶)
if str[i] 不等于 e
返回false
end if
end for
完全遍历,返回true
2.3 代码截图
2.4 PTA提交列表说明(提交了好多个段错误)
主要的区别在于字符数组的赋值与判断str[i]无内容的条件不同---------还是上学期gets和getchar的用法以及‘\0’和'\n'的用法还不太清楚
0分:
满分:
2.1 题目2:7-3 表达式转换
2.2 设计思路
传参 栈指针类型 s ,ElemType类型 e传当前字符, c传前一个字符
定义 ElemType类型 变量x存放栈头,a存放出栈元素
if 栈不为空
x 等于 gettop(s)函数取栈头
if e 等于 ')'
while x 不等于 '(' 且 队列不为空
弹出并输出栈顶
end
将栈顶的 ( 弹出
end if
else if e 等于 ( 进栈
else if e 等于 * 或 /
while 栈顶 x 等于 * 或 /
弹出并输出栈顶
end
e 进栈
end
else if e 等于 +
while 栈顶 x 等于 * 或 x 等于 / 或 x 等于 + 或 x 等于 -
弹出并输出栈顶
end
if c 为数字 或 c 等于 )
e 进栈
end
else if e 等于 -
while x 等于 * 或 x 等于 / 或 x 等于 + 或 x 等于 -
x=gettop(s);
pop出栈存于a
输出 空格 a
end
if c 为数字
e 进栈
else
输出 空格 a
flag 等于0
end
end if
else if e 等于 -
输出 e
else
进栈
2.3 代码截图
主函数
栈的基本操作
’
该题主要函数
2.4 PTA提交列表说明。
1.嵌套括号格式错误
错误测试:当开头为多个括号时,第一个输出的数字前会多一个空格
修正 :增加全局变量flag=0 ,第一次输出后令flag=1,通过对flag的值判断是否输出空格
2.运算数超过1位整数且有非整数出现
修正:利用全局变量flag
3.运算数前有正负号
修正:函数参数传将前一个字符,判断该字符的前一个字符是否也是运算符(e为当前字符,c为前一个字符)
在‘+’进队前判断c是否为数字
在‘-’进队前进行判断c是否为数字,且若是负数,‘-’要输出
2.1 题目3:7-1 jmu-报数游戏
2.2 设计思路
定义 整型变量 n存储总人数 m为出队数字
自定义类型 e 存储出队数据
队列指针类型 q
输入 n,m
if m 大于 n
报错
end if
else1
for i=1 to i=n 共n个人
i 进队q
end for
初始化 i=0
while 队列不为空
i++; //报数
出队 e=队头
if i%m 不等于 0
then e回队尾
else 输出 e
end if
end while
end else1
2.3 代码截图
2.4 PTA提交列表说明
3.截图本周题目集的PTA最后排名(3分)
曾文惠
201721123002
3.1 栈PTA排名(27---100)
3.2 队列PTA排名(62---80)
3.3 我的总分:2分(180)
4. 阅读代码
进制转换
void conversion(int a, int b) //参数为从a进制转换为b进制
{
int num = 0;
char z = 'A';
printf("请输入你想要转换的%d进制数",a);
scanf("%d", &num);
while(num)
{
Push(Scale, num%b); //取余数逐个进栈
num /=b; //求商
}
int e = 0;
printf("转换为%d进制数为:", b);
while(!StackEmpty(Scale))
{
Pop(Scale, e); //逐个出栈
if(e >= 10 && e <= 15) //结果为十六进制时用到转换为字母
printf("%c", z+e-10);
else
printf("%d", e);
}
printf("\n");
}
5. 代码Git提交记录截图
栈
队列