C语言博客作业--一二维数组
2017-12-03 18:28
375 查看
一、PTA实验作业
题目1(7-6)
(1).本题PTA提交列表
(2)设计思路
//天数n;数组下标i;小时数h,分钟数m;对应书号的标签数组flag[1001] //总阅读时间sum初始化为0,借书次数k初始化为0 //E或S的标志ch; //定义a[1001]来放每本书的借出时间 while (1) if n等于0 //跳出循环 //输入数组下标i;E或S的标志ch;小时数h;分钟数m; if i等于0 //n自减 if k等于0 sum=0; else sum=sum与k的商 //输出 //k、sum归0; //进入下一个循环 if ch的值为S a[i]=小时数h乘上60再加上m; flag[i]=1; else if flag[i]等于1 flag[i]=0; sum+=归还时间减去借出时间再转换成分钟数; k++;
(3)代码截图
(4)本题调试过程碰到问题及PTA提交列表情况说明
当用边界时间进行测试时,发现a[i]并没有记入时间;而且,当一本书被多次借出时,只记入最后一次借出时的时间,因此出现了错误
把let数组改成flag数组,记录每一本书的状态,当对应的flag值为1时不执行借出,消去可不要的变量
题目2(7-8)
(1).本题PTA提交列表
(2)设计思路
//外循环次数repeat,循环变量i,j;矩阵阶数n //输入repeat for repeat to 0 //输入n //定义n阶矩阵a ; a[0][0]=2;//先使第一个元素为2 for i=0 to n-1 (n-1可取到) for j=0 to i a[i][j]=a[0][0]+i+j;//给矩阵赋值 //以规定格式输出+ for i=0 to n //输出第一列 if i 等于n //输出占一列的数 else //输出占四列的数 //输出换行符 for i=0 to n-1 //输出每列开头的数 for j=0 to i if i与j相等 //输出占一列的数 else //输出占四列的数 //输出换行符
(3)代码截图
(4)本题调试过程碰到问题及PTA提交列表情况说明
格式错误,原因在于当i等于j时要特殊输出
题目3 (7-12)
(1).本题PTA提交列表
(2)设计思路
//自定义的功能函数 void find(int a[],int b[],int n,int m) //循环变量i,j;能存入a数组和b数组所有元素的数组c[n+m];标志变量flag;计数变量cnt=0; for i=0 to n-1 flag=0;//初始化 for j=0 to m-1 if a[i]等于b[j] flag++; if flag等于0 c[cnt++]=a[i]//找出a数组对于b数组不相同的数,并存放在c数组中; for i=0 to m-1 flag=0;//初始化 for j=0 to n-1 if b[i]等于a[j] flag++; if flag等于0 c[cnt++]=b[i]//找出b数组对于a数组不相同的数,并存放在c数组中; for i=0 to cnt-1 flag=0; if i等于0 //输出占一列的c[i] //进入下一次循环 else for j=0 to i-1 if c[i]等于c[j] flag++; if flag等于且i大于0 //输出前有空格的c[i] else if flag等于0且i等于0 //输出占一列的c[i] //主函数 //a数组中元素个数n;b数组中元素个数m;循环变量i; //输入n、m //定义a 、b[m] //输入a 、b[m] //调用功能函数
(3)代码截图
(4)本题调试过程碰到问题及PTA提交列表情况说明
发现有重复的数输出,并且某些数之间没有空格隔开
在if (i==0)处加入输出语句和进入下次循环语句;在else处添加条件当flag等于0时才执行
二、截图本周题目集的PTA最后排名。
PTA排名
三、同学代码结对互评
1.互评同学名称
黄泽彬2.我的代码、互评同学代码截图(此处截图核心代码就好,不一定截图全部代码,图上指明是谁的代码。
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
我的代码将插入数作为数组的最后一位,而他把插入数单独放在一个变量里;他比我多用了一个数组,目的是将在把原数组往里放的同时把插入数一并放好,然后一并输出;他把数组元素个数为0、1、大于1时分出来做特殊输出,而我直接把所有情况放在一起。 我的优势在于变量少,只使用了一个数组。他的优势在于在n为0、1的情况下计算过程会更迅速,但是当n大于1时他的代码比我的代码计算过程可能要更多一些。 我的代码风格。
四、本周学习总结
1.你学会了什么?
gets()函数、puts()函数、%s的使用用字符数组来解决进制相互转换问题
字符数组的基本性质,如字符数组存储个数之类
更深入了解二维数组在部分情景问题下的使用
1.1 C中如何存储字符串?
定义字符数组存储1.2 字符串的结束标志是什么,为什么要结束标志?
结束标志是'\0'使其他数组元素与这个字符串无关
1.3 字符串输入有哪几种方法?
用gets()输入,或循环后将最后一个赋值为'\0'1.4 数字字符怎么转整数,写个伪代码?
char i='9'; int j; j=i-'0';
1.5 16进制、二进制字符串如何转10进制?写伪代码?
16进制字符串转10进制
int i,sum=0,n; //输入n; char a ;//一串16进制字符串 gets (a); for i=0 to i<n if a[i]大于等于'0'小于等于'9' sum+=a[i]乘上16的i次方; else if a[i]大于等于'a'小于等于'f' sum+=(a[i]-'a')乘上16的i次方; else if a[i]大于等于'A'小于等于'F' sum+=(a[i]-'A')乘上16的i次方; //输出sum的值
二进制字符串转10进制
int i,sum=0,n; //输入n; char a ;//一串二进制字符串 gets (a); for i=0 to i<n sum+=(a[i]-'0')乘上2的i次方; //输出sum的值
2.本周的内容,你还不会什么?详细罗列不明白地方,包括课堂派错题、PTA错题。
题目中的哪些可以使用二维数组来表示还不是很明白字符数组的输入函数getchar()的用法,
有时要输入一串数字存在整型数组时的办法
3.期中考试小结
3.1 你认为为什么没考好?
没有用太多的时间去复习平时学习的知识掌握的不是很牢
各个题型的时间分配并不好
有些依赖于devc++的调试功能,写代码偶尔会漏了符号
没有想清楚就开始写
3.2 罗列错题。请在选择题、填空题、改错题、编程题分别举一题说明为什么错了,怎么改?
选择题的第九题
错在没有理解&&和||的优先级填空题第三题
错在不知道ASCII码为65的符号是什么改错题最后一题
错在判断是大于等于还是小于上面编程题第三题
错在功能函数里的变量设置上仔细检查一遍
3.3 下半学期要怎么调整C的学习?
要兼顾c的基础知识的学习,不能只重于PTA写题目前先思考题目要求做什么,要怎样做到,和以前做过的哪个题目较相似,再思考该怎么下手
尝试在一定时间里写完一道编程题-
相关文章推荐