1.本章学习总结
1.1 思维导图
1.2 本章学习体会及代码量学习体会
1.2.1 学习体会
1.学习了数组的基本使用方法,刷了三个数组题集,感觉数组题的的解题需要更加清晰的解题思路,要清楚的知道数组在代码各个阶段的状态,这就需要对数组有一定的理解了。
2.刷完题集发现自己在题意理解上经常会走偏,导致明明感觉代码没什么问题却过不了,不过和同学代码对比后一般都可以发现问题。
1.2.2 代码累计
2.PTA总分
2.1截图PTA中顺序结构、分支结构的排名得分
2.2 我的总分:455分
3.PTA实验作业
3.1 PTA题目1
- 天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。
3.1.1 算法分析
定义整型变量 N,hour,mi,ret,count;
定义字符型变量 ch;
定义浮点型变量 sum;
输入 N;
while(N>=1)
{
count=0; //归零
sum=0; //归零
int a[1001]={0}; //书号
int time1[1001]={0}; //开始时间
int time2[1001]={0}; //结束时间
输入 ret ch hour mi
while ret!=0 do //等于0结束
{
if ch 等于 S then
{
a[ret]=1 //书借出
time1[ret]=hour*60+mi //化为分钟
}
end if
else if a[ret]等于1 then //书如果已借出
{
count加1 //次数加一
time2[ret]=hour*60+mi
sum=sum+time2[ret]-time1[ret] //计算借书时间
a[ret]=0 //还书
}
end if
输入 ret ch hour mi
}
end while
if(count!=0) then // 借出不为零
sum=(sum/count+0.5); //四舍五入计算平均时间
end if
输出 count (int)sum
N--;
}
end while
3.1.2 代码截图
3.1.3 PTA提交列表及说明
Q:开始纠结时间计算,后来发现是用最近一次的开始时间和结束时间计算
3.2 PTA题目2
本题要求编写程序,将一个给定的整数插到原本有序的整数序列中,使结果序列仍然有序。
3.2.1 算法分析
定义整型数 N,i ,x
定义数组 a[N+1] //多一个用来插入
b[N] // 备份a数组
for i=0 to N-1 do
scanf("%d",&a[i]);
b[i]=a[i];
end for
a[N]=X; //先放在最后一个
for i=0 to N-1 do //遍历
if X<=a[i] then //寻找插入点
a[i]=X;
break;
end if
end for
for i to N do //把原来的数往后移一位
a[i+1]=b[i];
end for
for i=0 to N do
printf("%d ",a[i]);
end for
3.2.2 代码截图
3.2.3 PTA提交列表及说明
Q:多使用一个数组方便后移,思路就很清晰了
3.3 PTA题目3
输入一个字符串,判断是否是合法邮箱(格式正确即可,不管是否真的存在)输入的只能是字母、数字、下划线、@以及.五种, @前后只能是字母或者数字,而且.后只能是com, 是则输出YES ,否则输出NO。
3.3.1 算法分析
定义整型数 i,flag=0;
定义字符数组 str[100]={0};
输入字符 gets(str);
for i=0;str[i];i++ then //遍历每个字符
if 属于 ‘字母、数字、下划线、@、.’ then
flag=1;
else
flag=0;break; //不符合
end if
if str[i]==@
if str[i-1]属于 ‘字母、数字’ then
flag=1;
else
flag=0;break; //不符合
end if
if str[i+1]属于 ‘字母、数字’ then
flag=1;
else
flag=0;break; //不符合
end if
end if
if str[i]=='.' then
if str[i+1]=='c'&&str[i+2]=='o'&&str[i+3]=='m'&&str[i+4]=='\0' then
flag=1;
else
flag=0;break; //不符合
end if
end if
end for
if flag==1 then
printf("YES");
else
printf("NO");
end if
3.3.2 代码截图
3.3.3 PTA提交列表及说明
Q1:@应该是错的
而我的代码代码输出YES,代码为所以导致输入@也正确
A1:经过和同学代码对比改正错误
Q2:输入空格应该是错误的
A:然后发现错误
4.代码互评
4.1 代码截图
同学的代码
我的代码
4.2 二者的不同
- 同学代码使用while循环减少了代码数,用自增、自减比较简洁,还使用了一些其他函数。
- 我的代码更加直观,适合新手使用。