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

    一、PTA实验作业

    题目1:求整数序列中出现次数最多的数

    1. 本题PTA提交列表

    2. 设计思路

    • 定义变量
    • 输入一个整数N
    • 定义一个a数组a[N]和b数组b[1000]
    • 输入a数组
    • 外循环令i for 0 to N-1,内循环令j for 0 to N-1 如果出现a[i]=a[j],则b[i]++ end
    • 然后再用一个循环令i for 0 to N-1,如果b[i]>max 则把b[i]赋值给max1,把a[i]赋值给max
    • 输出 max 和 max1

    3.代码截图

    4.本题调试过程碰到问题及PTA提交列表情况说明

    一开始我就想定义b数组全为0

    然后我重新对b数组定义,结果

    我发现了输出的b[i]是一个不确定的数,翻书找到了对于int b[n]定义的b数组中的数都是不确定的数,我就定义int b [N]={0}

    题目2:简化的插入排序

    1. 本题PTA提交列表

    2. 设计思路

    • 定义变量N为输入的整数个数,number为插入的数字
    • 输入N,定义数组a[10],数组b[N+1]
    • i for 0 to N-1输出数组a[N]
    • 如果N=1,只要比较a[0]与number的大小,数值小就放前面,反之放后面,然后输出
    • 如果N=0,直接输出number
    • 如果N>1,让j for 0 to N,如果number>a[i],则把a[i]赋值给b[j],然后i++;否则把number赋值给b[j],break退出循环
    • 然后然j从break循环出来值到N,把a[j]赋值给b[j+1]
    • j for 0 to N输出b[j] end

    3.代码截图

    4.本题调试过程碰到问题及PTA提交列表情况说明

    刚开始没有考虑特殊情况然后当N=1或0的时候输出一团乱


    如果N=0,不进入内循环,直接输出一个不确定的b[j],N=1时,循环只执行一次,number不会被插入

    题目3:阅览室

    1. 本题PTA提交列表

    2. 设计思路

    • 定义变量,数组flag[1001]={0},tim[1001],字符ch,space
    • 输出N存入天数
    • i for 1 to N,循环结束后i++,初始化time=0,count=0
    • while(1) 输出booknumbers ch a:b
    • 如果ch=S,tim[booknumber-1]=60*a+b且flag[booknumber-1]=1
    • 否则,如果flag[booknumber-1]==1,即输入E,书收回,则time=time+60*a+b-tim[booknumber-1],count自增,然后flag[booknumber-1]=0,初始化flag=0表示书收回了
    • 如果count=0,输出0 0
    • 否则输出count,1.0time/(1.0count),
    • 输出换行 end

    3.代码截图

    4.本题调试过程碰到问题及PTA提交列表情况说明


    开始思路清晰,然后打完代码运行学有一个瑕疵,第二个输出值错了

    用输出调试发现195=391/2,而题目要求平均时间要四舍五入所以对输出做出修改 printf("%d %.0f",count,(time1.0)/(count1.0))

    二、截图本周题目集的PTA最后排名

    三、同学代码结对互评

    1.林岳

    2.我的代码、互评同学代码截图

    • 我的代码

      -林岳的代码

    3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题

    首先我对于N的分类先是N=0,然后N>1,然后N=1,条理有点乱而他的处理就比较有可读性
    而且他代码都有注释

    四、本周学习总结

    1.你学会了什么?

    1.1 C中如何存储字符串

    • 使用字符数组存

    1.2 字符串的结束标志是什么,为什么要结束标志?

    • ‘\0’,方便给定循环条件

    1.3 字符串输入有哪几种方法?

    • for(i=0;i<10;i++)
      scanf("%c",&a[i]);
    • while((a[i]=getchar())!='\n')i++;
    • scanf("%s",a);
    • gets(a)

    1.4 数字字符怎么转整数,写个伪代码?

    定义字符 c;
    定义变量n;
    输入字符数字c
    n = c-48

    1.5 16进制、二进制字符串如何转10进制?写伪代码?

    16进制:

    定义字符数组a[100]放16进制字符串,result放转化后的结果
    输入数组的值
    for 第一位to最后一位
    若a[]为字符0到9,result=result16+a[k]-'0';
    若a[]为a到f或A到F,result=result
    16+a[k]-'a'或'A'+10;
    输出结果

    2进制

    定义字符数组a[100]存储16进制字符串,result放转化后的结果
    输入数组得值
    for 第一位to最后一位
    若a[]为字符0或1,result=result*2+a[k]-'0';
    输出结果

    2.本周的内容,你还不会什么?


    3.期中考试小结

    3.1 你认为为什么没考好?

    • 没有复习
    • 基础知识掌握不扎实
    • 字面代码不习惯写

    3.2 罗列错题。

  • 相关阅读:
    [tip]build x86+x64 parrelly for your VS solution
    float double的内存表示及比较大小的方法
    [Problem 13]欧拉
    Interface Project
    [复习]内存对齐
    [tip]VS online Gallery in Extention Manager
    [Problem 14]欧拉
    “火柴棍式”程序员面试题打破惯性思维
    [复习]时间复杂度及计算
    ModuleCatalog配置文件
  • 原文地址:https://www.cnblogs.com/soyam/p/7966606.html
Copyright © 2011-2022 走看看