zoukankan      html  css  js  c++  java
  • 第四次作业——数组

    1.本章学习总结

    1.1思维导图

    1.2 本章学习体会及代码量学习体会

    1.2.1学习体会

    1.学习了数组以后,开始感受到学习C语言的困难了。各种错误开始出现……再加上近期有线代的考试,放在线代上的时间有点多,导致刷PTA耽误了,打代码的时候也明显不如以前熟练。所以,最大的学习体会是:一定要多打代码。
    2.虽然学习了函数,但是我很少在写代码的时候进行函数封装,老师教育我们多用函数,但是这一点我明显做的不够。
    3.做题的最大感受是,在对数组进行定义是,关于数组长度,不求正正好好,可以稍微大一点,这样可以减少不少麻烦。
    4.数组之后是指针,结构,C语言学习越来越复杂,我还要继续努力啊。

    1.2.2代码累计

    PTA总分

    2.1排名截图

    2.2我的总分:

    PTA作业

    3.1判断上三角矩阵

    7-3 判断上三角矩阵 (15 分)
    上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。

    本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

    3.1.1

    输入m
    int flag=1//定义开关变量
    for i=1 to m;
    输入n
    for j=0 to n
    for k=0 to n
    输入数组
    end for
    end for
    for j=0 to n//遍历行
    for k=0 to j//只遍历对角线以下
    if a[j]k]!=0
    flag=0
    end if
    end for
    end for
    if(flag==1)输出YES
    else输出NO
    end if
    end for
    ps.关于开关变量,对于开关变量的赋值,很巧妙,要根据判断条件,合理对flag赋初值。同时,在一个循环结束对flag进行赋初值也很重要。

    3.1.2代码截图

    3.1.3数据测试

    3.1.4提交列表

    前面的答案错误,基本上都是因为循环变量太多,导致遍历数组是发生紊乱。
    加上线代考试,题目改错隔得有些久,这也让我的大学学习生活也开始紊乱了。
    我认为,这个问题不仅仅是C语言上的问题,更是一个关于大学生活的问题:不能和以前一样,认为大学应该自由,这种思想的弊端会随着大学学习节奏加快而暴露。我应该更改学习态度了。

    3.2输出螺旋方阵

    7-5 螺旋方阵 (20 分)
    所谓“螺旋方阵”,是指对任意给定的N,将1到N×N的数字从左上角第1个格子开始,按顺时针螺旋方向顺序填入N×N的方阵里。本题要求构造这样的螺旋方阵。

    3.2.1算法分析

    static int a[10][10]
    输入n,确定要输出的行列数
    while (n*n!=k)
    while(j+1<n&&!a[i][j+1])//从右向左开始递增
    a[i][++j] = ++k; end while
    while(i+1<n&&!a[i+1][j])//从上向下开始递增
    a[++i][j]=++k;end while
    while(j-1>=0&&!a[i][j-1])// 从右向左开始递增
    a[i][--j]=++k;end while
    while(i-1>=0&&!a[i-1][j])// 从下向上开始递增
    a[--i][j]=++k;end while
    end while
    输出数组
    PS.利用将数数组初始化为0,及时“及时转弯”。

    3.2.2代码截图

    3.2.3测试数据

    3.2.4提交列表

    可能提交次数有点少,但是我一般都是在编译器上调试的基本上万无一失后才提交的…………

    3.3删除重复字符

    7-5 删除重复字符 (20 分)
    本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。

    3.3.1算法分析

    char str[100]
    static int flag[256]
    输入str
    for i=0 to str[i]==''
    flag[str[i]=1
    end for
    for i=0 to 256
    输出i对应ASCII码代表的字符
    1.字符只有256个
    2.经过整改后的字符串长度不大于256
    3.用i作为ASCII码循环,可以省去排序。

    3.3.2代码截图

    3.3.3测试数据

    3.3.4提交列表

    之前尝试了先排序,后删除的方法,发现总是失误。
    后来在一些启发下,利用按照ASCII码排序,先将重复字符删除,在用for循环按照次序输出,简化了问题。

    4.代码互评

    7-7 判断E-mail地址是否合法 (20 分)
    输入一个字符串,判断是否是合法邮箱(格式正确即可,不管是否真的存在)输入的只能是字母、数字、下划线、@以及.五种, @前后只能是字母或者数字,而且.后只能是com, 是则输出YES ,否则输出NO。

    我的代码

    翁凌涛大兄弟的代码

    总结

    我的代码和凌涛的代码差距很大,凌涛用了指针,并且用了函数封装,这一点我是明显不如的,函数封装可以增加代码的可读性,而且指针的有无决定了代码的高级程度,在数组的作业中用了指针,函数,既可以复习指针,又可以进一步感受数组和指针的关系,指针怎样传参…………
    总体思路我们是差不多的,都先判断整体字符是否合法,在具体判断某个位置的是否合法,通过这个题,能更好的感受数组与指针的关系吧。

  • 相关阅读:
    7.逻辑回归实践
    6.逻辑回归
    5.线性回归算法
    4.K均值算法应用
    3.k均值的算法
    2.机器学习相关数据基础
    1.机器学习概论
    作业十五——语法制导的语义翻译
    第03组 Beta冲刺(3/4)
    第03组 Beta冲刺(2/4)
  • 原文地址:https://www.cnblogs.com/qsls8643/p/10089393.html
Copyright © 2011-2022 走看看