yob。

C语言博客作业--一二维数组

一、PTA实验作业

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

1. 本题PTA提交列表

2. 设计思路(用代码表示扣分)

  • int n为输入的整数i,j,是循环变量,count=0表示出现最多的数的次数,indexindex表示出现最多的数的下标;
  • 定义数组a储存输入的值,b储存数组中每个数出现的次数
  • 输入("%d",&n);
  • 将输入的数赋给数组for(i=0;i<n;i++),scanf("%d",&a [i]);
  • 令数组b的前n个数的初值为-1
  • for(i=0;i<n;i++)for(j=0;j<n;j++)
  • 如果(a[i]==a[j])b[i]++;
  • 寻找出现次数最多的数:for(i=0;i<n;i++)
  • 如果 if(b[i]>count)
  • count=b[i];最大值下标index=i;
  • 输出:("%d %d",a[index],count);

3.代码截图

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

  • 在对表示出现次数的数组b赋初值时出现错误,开始将b中每个数的初值赋为-1,想的是a[i]和b[i],表示同一个值就不算了,调试后发现错误并改正

  • 最小值出现错误,粗心导致的错误,习惯了将循环变量的初值赋为1,忘了在数组中第一个变量的下标是1

题目2:将数组中的数逆序存放

1. 本题PTA提交列表

2. 设计思路(用代码表示扣分)

  • 定义整型变量n,i,temp用于交换过程的中间值,整形数组a【10】
  • 输入n
  • for 0 to n-1
  • 将输入的整数存入数组a中
  • for 0 to n/2-1
  • 令temp=a【i】,a [i]=a [n-i-1];a [n-i-1]=temp;
  • 输出a【0】
  • for 1to n-1
  • 输出a【i】

3.代码截图

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

  • 循环的设置没有习惯,从0开始应该是到n-1结束,虽然有n个元素但下标是从0到n-1,开始没有注意到导致错误

题目3:

1. 本题PTA提交列表

2. 设计思路(用代码表示扣分)

  • 定义整型变量n,i,j,x,index用于交换过程的中间值整形数组a【9】
  • 输入n
  • for 0 to n-1,将输入的整数赋给数组元素
  • 输入x
  • 从a【0】开始比较,if x<a【i】,则index=i;a[index]=x;
  • for i to n,a[i+1]=a[i],调出大循环

3.代码截图

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

  • 问题基本都在于下标的转换,最初没有另外定义变量作为转换过程中间值,导致数组中的数一个个被消掉
  • 寻找出它要插入的位置后,将其与下一位进行了转换,但让后续数的下标逐个后移后移方法不恰当,最后一个数总是被消掉变成0,参考了同学的一些方法后改进

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

三、同学代码结对互评

1.互评同学名称

郭锐倩

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

同学代码截图:

我的代码截图:

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?

  • 我的代码更长更复杂一点,定义了两个数组,同学只定义了一个,且篇幅较短,更好一点
  • 我们的主要区别在于对于对每个数出现次数的统计上,我用了数组来保存每个数的出现次数,同学设置了变量,只保留出现次数最多的数的出现次数
  • 就本题,同学的代码显然是更好的,思路清晰,代码简洁,给了我新的启发

四、本周学习总结

1.你学会了什么?

1.1 C中如何存储字符串?

-c 语言中用一维字符数组来储存:类型名 数组名[数组长度]

  • eg.储存字符串happy:char s [6]={"happy"}或char s [6]=

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

  • '\0'是字符串的结束标志
  • 因为字符串并没有显示地给出有效字符的个数,所以必须用结束符来决定是否结束循环

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

  • 1.使用循环结构输入,用结束符来结束循环:scanf("%c", )语句
  • 2.scanf("%s", )输入,但不能碰到空格
  • 3.gets()直接吸收整个字符,遇‘\n’终止

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

  • 定义字符型变量和整型变量
  • 读入字符型变量
  • 整型=字符型-‘0’
  • 按字符型输出

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

  • 定义变量n存放十进制数,a [ i ]存放十六进制字符串
  • while(a[i]!='\0' )
  • ifa[i]为字符0~9:number=number16+a[i]-'0';
  • ifa[i]为字符A~Z:number=number16+a[i]-'A'+10;
  • ifa[i]为字符a~z:number=number*16+a[i]-'a'+10;

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

  • 各种排序方法不是很熟练和熟悉
  • 做pta时的一些思路总是想不到,
  • 用到数组时用devc查错的嫩肤李明显不足

3.期中考试小结

3.1 你认为为什么没考好?

  • 1.平时只注重pta上的作业,只在乎那个结果是否正确,忽略了好多知识点
  • 2.学习不认真,不扎实,很多概念和小知识自己根本没有掌握
  • 3.阅读程序方面能力不足,平时欠缺对这方面的训练
  • 4.自我差错能力不行,平时例如很小的标点符号错误都是通过devc发现的

3.2 罗列错题。

:选择第十八题

  • 错因:没有弄清各个运算符的优先级,没有先转成二进制然后再转回八进制,没有注意到取反、异或、左移、&运算符操作后不改变原先变量的值
  • :先将057转化为二进制:00101111,再将其取反,再将00101111左移两位后与00101111进行&操作,再将操作结果和00101111的取反值进行异或操作,最后将其转换为八进制

:填空第三题:

  • 错因:没有将字
  • 改正:转换为字符即可

改错第一题

  • 第三、四、五的错误没有改正
  • 第三个因为对函数的调用的使用不熟练,没有发现问题;第4.5个错误因为时间紧,没有认真去阅读程序,没静下心来分析,没有看出来
  • 第三问要将变量前的int去掉,第四问改成不等于,第五问的返回值应该是a

编程题第一题:

  • 随机数不会使用,变量定义的有些乱,中间过程繁琐,书写不规范
  • 使用随机数先加上编译预处理命令:#include<stdlib.h>,;srand(time(null));int number=rand()%100;

3.3 下半学期要怎么调整C的学习?

  • 1.利用好预习的价值,未上课前好好看课本并完成课堂派上的习题,明白哪里是自己看不懂的地方,上课要更加注意听讲
  • 2.做好笔记,事实证明只听老师上课讲一次下课后百分之九十九都忘记了,自己不懂得,重要的知识点要及时记录,课后温习
  • 3.做好课后复习工作,上完一堂课,就该回过头来看一下这一堂课的课本内容以及自己记录的笔记
  • 4.对待作业要认真, 错题要弄懂,不能只关注结果
  • 5.pta上的题以后尽量手写代码,遇到问题不能总借助devc,先自己分析

posted on 2017-12-03 22:51  emmmm。。。  阅读(422)  评论(4编辑  收藏  举报

导航