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=result16+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 你认为为什么没考好?
- 没有复习
- 基础知识掌握不扎实
- 字面代码不习惯写