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

    1.本章学习总结

    1.1 思维导图

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

    1.2.1学习体会

    经过了一两个星期的来回磨练,终于可以正常使用数组来进行算题。开始的时候在一维数组的排序中到处碰壁,而后在二维数组的排序中再次被干倒,在字符的输入输出中也是很迷茫,在不断地刷题中才熟练了起来,最重要的是找到思路才能更好地完成任务。
    

    1.2.2 代码累计

    2.PTA总分

    2.1截图PTA三次题目集:一维数组、二维数组和字符数组共3次题目集的排名得分



    2.2 我的总分:

    3.1 PTA题目1

    第一题:通过特定输入,来记录数据。当管理员输入0,结束程序应输出当天的读者借书次数和平均阅读时间。

    注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。

    3.1.1 算法分析

    	定义整形变量 number; hh,mm, count   flag[number] =1;               //表示此书已借出    number 表示书号  hh 借书小时  mm 分钟  count表示借书的次数  flag[number] =1 用来判断是否有被借出去,防止出现错误情况
    	定义字符型变量 ch;                输入ch 来确定表示借书还是还书 ,然后进行记录时间
    for(i=0;i<n;i++)            记录天数
    while(number!=0)     判断是否退出循环,每天一个
    scanf("%d %c %d:%d",&number,&ch,&hh,&mm);             输入
    and  then   进行判断是否开始计时  	if (ch== 'S')     开始计时
    else if (ch== 'E')  && if (flag[number]) 停止计时    时间差为time
     time=time/count;                          计算平均时间
     printf("%d %.0f\n",count,time);  按题目要求输出
    

    3.1.2代码截图


    3.1.3 PTA提交列表及说明

    - 本题的重点就是怎么判断是否出现错误输入、如何去计算时间差和结束的次数。弄懂了这些之后基本就可以解决了。
    

    3.2PTA题目2

    第一题:给出行数,输出该行数对应的螺旋矩阵。

    3.2.1 算法分析

    定义二维数组    a[100][100];        记录数据
    定义整形变量    n,n1,flag    n用来输入,n1记录n,输出的时候控制换行,flag用来记录循环次数是否减一。
    if(x-1<0)
    		x++;		flag = 1;   end if      判断是否要换方向递加
    if(flag == 1)
    		flag = 0;  ->	x--;       end if         判断循环次数是否要减一
    	for(int x = i;x < n-1;x ++)//竖着向下递加 
    			a[x+1][n-1] = a[x][n-1] + 1;
    		for(int x = n-1;x > i;x --)//横着向左递加 
    			a[n-1][x-1] = a[n-1][x] + 1;
    		for(int x = n-2;x > i;x --)//竖着向上递加 
    			a[x][i] = a[x+1][i] + 1;
    最后输出二维数组。
    

    3.2.2 代码截图


    3.2.3 PTA提交列表及说明

    - 本题就是要找准转行的时机,注意循环的次数,换行的时间就可以了
    

    3.3 PTA题目3

    第三题:输入2个大数,每个数的最高位数可达1000位,求2数的和。

    3.3.1 算法分析

    定义整形变量   max,i,y,flag,i1,y1      max记录数组较长的长度作为循环变量使用  i,y记录长度    i1,y1复制长度,用于后面的判断结束条件
    定义字符型变量    num,op     数组a[1001],b[1001]
    scanf("%s%s",&a,&b);  输入 记录大数的每一个数字
    i=strlen(a);    y=strlen(b);     记录长度
    	for(int m = max;y>=0;m--,y --)       循环相加,从最后一个加到前面,改变数组长度较长的数组作为结果
    输出结果数组即可
    

    3.3.2 代码截图



    3.3.3 PTA提交列表及说明

    - 本题还有那个字符加减的时候要记得减去‘0’
    - 在第一位需要进一的时候需要直接输出一个1,因为数组会越界
    

    4.代码互评

    • 同学的代码:

    • 我的代码:

    4.2 二者的不同

    - 他的代码m来表示要赋予的值,用x,y来表示数的位置,会更加的直观
    - 我的代码是一直+++只是注意换方向的问题,找逻辑就OK了
    - 他的代码量少,简洁有效,要向大佬学习
    
  • 相关阅读:
    初次安装git配置用户名和邮箱
    UBUNTU16.04 使用APT-GET如何设置代理
    keras中TimeDistributed
    keras load model 遇到 自定义函数 Lambda(lambda x: softmax(x, axis=1), NameError: global name 'softmax' is not defined
    <<Joint Deep Modeling of Users and Items Using Reviews for Recommendation>> 评论打分预测
    将Pytorch模型从CPU转换成GPU
    tensorflow显存管理
    搭建Python3的jupyter notebook服务器
    《User Modeling with Neural Network for Review Rating Prediction》评论打分预测
    flv视频播放器停止时带图片
  • 原文地址:https://www.cnblogs.com/yue7521/p/10088909.html
Copyright © 2011-2022 走看看