zoukankan      html  css  js  c++  java
  • C语言博客作业04--数组

    1.本章学习总结


    1.1 思维导图

    1.2 本章学习体会及代码量学习体会

    1.2.1 学习体会

    • 通过数组的学习懂得对整组数据的存放与调用,解决了针对录入一串数据的问题。通过数组的学习可以解决很多之前碰到的问题,并且可以对之前写过的题目进行修改,简化程序
    • 数组的定义在刚开始碰到时还是比较模糊的,常碰到越界或者忘记初始化的问题,这可能会导致程序错误或者崩溃。需要进行调试,规定好数组的边界,或者是可以通过定义更大一些的数组,保障程序的弹性。
    • 从这章开始整体的学习节奏都加快了,pta题目的难度也加大了,常出现就是一题卡很久。像螺旋方阵、阅览室、身份证这种题目时常会出现卡带。在做题的过程当中,如果遇到死结(写阅览室写一晚上都不对)就要学会适时的重新整理框架,或者休息一下整理思路再来,否则就会在先入为主的思维上陷入死循环。接下来碰到的题目只会更难更灵活,要多思考多整理。

    1.2.2 代码累计


    2.PTA总分(2分)

    2.1



    2.2 我的总分:

    • 200+105+150=455

    3.PTA实验作业

    3.1 PTA题目1

    7-11(集美大学程序设计赛题--选做) 除法运算 (25 分)
    趣航的上机题
    给定两个整数a,b,计算a/b
    要求:
    若能除尽,则直接输出,若为循环小数,将循环节用括号括起来
    如输入1 3,则输出0.(3)
    如输入12 5,则输出2.4

    3.1.1 算法分析

        定义 num1 num2 循环节开始和结束的位置 position1,position2
    	定义 整数位integer 小数位 remainder ,i,j,flag用于控制循环
    	定义两个数组 a[10000],b[10000]
    	integer=num1/num2;//求解整数位
        remainder=num1%num2; //判断是否能整除
    	if remainder!=0   //不能整除有小数位 
    	   for i=0 To 9999
    	   remainder*=10;
    	   a[i]=remainder/num2;//求小数位
    	   b[i]=remainder%num2;
    	   if b[i]%num2 整除
    	   end for
    	   end if
    	   for j=0 To i
    	       if a[i]=a[j] && b[i]=b[j]//当所得商和对应的余数再次出现时,循环节出现 
    		       position1=i,position2=j;
    			   break;
    		   end if;
    	   end for;
    	输出 整数位
    	输出 小数位 
    

    3.1.2 代码截图


    3.1.3 PTA提交列表及说明

    • Q:如果没有循环节或者直接整除,答案出现错误
    • A:对于除法的答案进行判断,分为整除,循环和能除尽的小数。

    3.2 PTA题目2

    7-4 阅览室 (20 分)
    天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。
    注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。

    3.2.1 算法分析

    定义 days 天数 times 次数 number 编号 choice 类别
    定义 sendTime 借阅时间 
    定义 a[1001][3] 书号 借阅情况 flag[1001][3]
    输入 days
    for times=1 To days 
        输入 书号 状态 时间
    	while !=0 
    		if choice=S 
    		flag[number]=1;//借阅标记
    		a[number][1]=60*hour+min;
    		end if
    		if choice=E
    	 	   if flag[number]==1 //被标记状态为借阅  
    	   	       a[number][2]=60*hour+min;
           	       flag[number]=0;//初始化
                   sendTime+=(a[number][2]-a[number][1]);//两时间差的累加
                   count++;//记录册数 
               end if 
          	end if
     	再次录入信息
        end while
        if count!=0 输出 count sendTime 
        else 输出0 0 
        全部初始化 
    end for 
    

    3.2.2 代码


    3.2.3 PTA提交列表及说明

    • Q:连续借阅出现问题
    • A:利用赋值,更新数据
    • Q:最大边界值出现问题,测试点过不了
    • A:书号最大时1000,但是在数组当中的计数是从0开始的,所以第1000号是1001位,越界了。改大数组即可。
    • Q:如果只有借阅或者只有归还,需要自动过滤掉相关信息。
    • A:引用flag[]数组,标记每一本书籍是否被借阅的状态,如果被借阅,则归还有效,反之无效。在此要注意每一天都要对于书籍的借阅情况清空处理。

    3.3 PTA题目3

    7-7 判断E-mail地址是否合法 
    输入一个字符串,判断是否是合法邮箱(格式正确即可,不管是否真的存在)输入的只能是字母、数字、下划线、@以及.五种, @前后只能是字母或者数字,而且.后只能是com, 是则输出YES ,否则输出NO。

    3.3.1 算法分析

    定义 position1 @出现的位置 position2 .出现的位置
    定义 i,flag,len数组长度 a[100]存放邮箱的字符型数组
    gets(a);
    len=strlen(a)
    for i=0 To len-4
        if a[i]=@ position1=i flag=1
        end if
    end for
    if flag=1;
       for i=0 To position1;
           if 有非法字符 flag=0 break;
    	   end if
       end for;
    if flag=1;   
       if 结尾!=.com flag=0 break; 
       end if
    if flag=1;
       if @前后为非法字符 flag=0 break;
       end if
    if flag=1 printf yes;
    else printf no;  
    

    3.3.2 代码


    3.3.3 PTA提交列表及说明

    • 一开始没找到测试点的位置,没弄清楚邮件地址的定义 出现123@1.234.com 也是正确的邮箱的情况
    • 判断第一个.出现的位置,如果不是在.com的时候出现,就是错误的邮箱。

    4.代码互评

    4.1 代码截图

    康友煌同学的代码

    07的代码


    4.2 二者的不同

    1. 康友煌同学所采用的思路是,当数字自增至所要的数值之后,结束程序。而我是通过螺旋方阵的输出规律,按次数输出。如找到的规律是,一共上下左右需要转2n-1次,再通过次数,进行相应的变化。
    2. 两端代码在中间数据的处理上是差不多的,主要就是控制变化的方法上不太一样。(刚开始我尝试的也是康友煌同学的这种写法,但是输出上总是出现问题,后来发现是我行列不分emmmm,所以才用了后来的这种比较赘余的方法)
    3. 康友煌同学的代码比较简洁,但是从直观上来讲我的代码思路会更加“暴力”一些,适合我这种没办法比较直接写出比较便捷的方法的同学。但是我的这种方法如果碰到图形输出,是需要经常去思考的一个途径。两种途径都需要掌握叭。
  • 相关阅读:
    CPU理论,平均负载和CPU密集型场景
    Dubbo和Zookeeper
    nmon问题定位和LoadRunner结果分析
    混合场景,面向目标的场景和nmon监控
    性能测试场景的学习:controller
    java vuser协议
    LoadRunner脚本开发:操作数据库(六)
    LoadRunner脚本开发:手写SOAP脚本的三种方法(五)
    jmeter脚本开发:jmeter工具的学习(二)
    子Fragment获取父Fragment
  • 原文地址:https://www.cnblogs.com/salcious/p/10088907.html
Copyright © 2011-2022 走看看