C语言博客作业--数组

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循环减少了代码数,用自增、自减比较简洁,还使用了一些其他函数。
  • 我的代码更加直观,适合新手使用。
posted @ 2018-12-08 18:48  codedawn  阅读(413)  评论(0编辑  收藏  举报