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 罗列错题。

posted @ 2017-12-03 22:41  Soyam  阅读(440)  评论(2编辑  收藏  举报