曾文惠

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、PTA实验作业

题目1:7-1 将数组中的数逆序存放

1. 本题PTA提交列表

2. 设计思路

定义数组数n,循环变量i,j
输入 n
定义数组Num[n]

for j=n-1 to j>=0
共n次
如果j等于0
则输出Num[j]
否则
在输出Num[j]后还要输出空格

3.代码截图

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

- 由于是第一题所以没有截图所遇到问题如下

  • 格式错误:在最后一个数字后多了空格
  • 解决方案:增加一个判断,当判断出是最后一个数时直接输出

题目1:7-3 出生年

1. 本题PTA提交列表

2. 设计思路

定义初始年份Year,不同的数字数量D, 用于储存Year的Y,Y2,求和Sum=0,循环变量i,j,k,g
定义数组d[4]={0}用于储存年份的各个位数,Com[10]={0,1,2,3,4,5,6,7,8,9}用于与d[4]中的数比较,Count[10]={0}用于储存Com[10]与d[4]比较的结果
输入 Year,D;
Y=Year;
Y2=Year;   
while(1){
      for i=0 to i<4
共4次
      对Year取余,减少十倍
      对d[i]从0到4分别赋予年份Year的个位数,十位数,百位数,千位数
      for j=0 to j<4
共4次
           for g=0 to j<4
     共4次
            如果d[j]==Com[g]
                 Count[g]++;

     for k=0 to k<10
共 10次
            如果Count[k]!=0
            令Count[k]=0方便下一轮循环
            Sum++;统计年份中不同数字的数量

如果 Sum==D,符合题目所要求的不同数字的数量
            输出("%d %04d",Y2-Y,Y2);//其中%04d位宽为4,不够往左补0
            break;结束循环

Y2+=1;年份加一
Year=Y2;
Sum=0;//不同数字量初始化 方便下一次循环
}

3.代码截图

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

这道题想了很久没有思路,后来听了同学的口头思路自己打了代码,在Dev上成功后就提交成功了

题目1:7-4 简化的插入排序

1. 本题PTA提交列表

2. 设计思路


定义非负整数n,插入的数m,中转变量t,循环变量i
输入n
定义数组a[10]
for i=0 to i<n
共n次
     数组赋值
输入m
a[n]=m令最后一个数组等于m
for i=0 to i<n
共n次
       如果a[n]<=a[i]
       交换a[n]与a[i]的值

for i=0 to i<n
共n次
       输出a[i]

3.代码截图

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

由于忘记了,所以没有截图调剂过程,具体问题如下

  • 问题:”在遇到比要求的数大的数后我进行了交换,但导致了原数组中用于交换的数的缺失,即在数组输出时没有该数
  • 解决方案:如图所示代码,在循环进行到比要求大的数之后,接下来数组中的数分别向后移动了一位
    具体操作如下:

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

三、同学代码结对互评(1分)

1.互评同学名称:王宵莹

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

  • 我的代码

  • 王宵莹的代码

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

  • 不同之处:我与王的思路大体相同,但是我比王宵莹多了一行判断它只有一位数的情况代码
  • 我更喜欢王宵莹的,因为我觉得她的代码更加简洁

四、本周学习总结(3分)

1.你学会了什么?

1.1 C中如何存储字符串?

  • 使用字符数组存;
char name[] = "字符串";

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

  • 字符串的结束标志是'\0'
  • 字符串是借助于字符型一维数组来存放的,'\0'ASCLL代码值为0,它作为标志占用存储空间但不记入串的实际长度,所以用来作为字符串的结束标志。有了'\0'标志后,就不必再用字符数组的长度来判断字符串的长度了,
    如果没有的话会数组越界,内存溢出。程序崩溃。

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

 (1)gets(a)
 (2)scanf ("%s", a)是读到空格停止。

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

char  a

int b

b=(int)a-48;

关于高助教的评论做出的实验

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

 定义 十六进制数s,十进制sum,储存s数n,s的位数num
输入 s
n=s
while(s!=0)
    s/=10;
    num++;
   计算s的位数

定义数组a[num]
将s的各个位数分别赋值入a[num]

for i=0 to i<num
共num次
sum+=a[i]乘以16的i次方

则sum就是16进制转换得到的10进制

二进制的转换如上,就是将16的i次方改为2的i次方

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

  • (1).对于二维数组的输入变量赋值,转置
  • (2) 数组的左移与右移

3.期中考试小结

3.1 你认为为什么没考好?

  • (1)一些基础知识没有掌握,比如静态变量和全局变量,以及数据运算中各种符号的算法
  • (2)读代码的能力有待提高,在第二题分析程序上得分甚少
  • (3)粗心,有些题目在自己能力范围内因为分析错误,看错变量失分

3.2 罗列错题。

1.选择题11

  • 基础知识不牢固
  • 要多注重对基础知识的掌握

2.填空题4

  • 观察错变量
  • 减少对编译器的依赖,增加自己的读代码能力

3改错题

  • 还是基础知识没有掌握牢固,还有错题没有及时复习
  • 在错了之后,改了之后的一段时间内还要有对这方面复习的计划

4编程题2

  • 公式错误
  • 对于这次的编程题我还是对自己比较满意的

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

  • 对于作业的安排计划还不够合理,现在的作业大部分还是等到周五晚和周末两天完成,预习作业,博客园与pta,搞得时间短任务重,学习效率不高
    所以计划至少在周三前完成pta的一半,并写一道到pta中,在编程时遇到什么困难直接记录到博客园中
  • 自己的思路经常会很复杂,所以增加一天一篇优秀博客的阅读计划
  • 做过的题目再做还是会忘记怎么做,尤其是当时勉强通过pta,但思路混乱,不用多久就不会做了,效率极差,由于前几星期计划不周,做作业都很赶更没什么时间复习,所以增加一天回顾三道题目的计划。
posted on 2017-12-03 22:55  曾文惠  阅读(696)  评论(5编辑  收藏  举报