• C语言第七次博客作业--一二维数组


    一、PTA实验作业

    题目1:找鞍点

    1. 本题PTA提交列表

    2. 设计思路

    定义n,i,j,ii,jj,a[7][7],flag,max
    输入n
    for i=0 to i=n
       for j=0 to j=n
          读入二维数组  end
    for i=0 to i=n   max=0,flag=1
       for j=0 to j=n 
          if a[i][j]大于max  max=a[i][j]
          jj=j记录下这一列
       end
       for ii=0 to ii=n
          if max大于a[i][j]  flag=0  break
       end
       if flag等于1 输出鞍点位置  break
    end
    if flag等于0 输出没有鞍点  
    

    3.代码截图

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

    • 部分正确 :最大规模,有并列极值

    • 调试过程:

    解决办法:将寻找某行最大值的条件都改为>=

    题目2:加法口诀表

    1. 本题PTA提交列表

    2. 设计思路

    定义repeat,num,a[10][10],i,j,n
    读入repeat次数
    for num=1 to num=repeat
        读入n
        for i=1 to i>n
           a[i][0]=a[0][i]=i 对第一列第一行赋值 end
        for i=0 to i>n
           for j=0 to j>i
              a[i][j]=i+j  对其他行和列赋值 end
        for i=0 to i>n
           if i==0  输出+
               for j=1 to j>n  输出第一行 end
           else 
               for j=0 to j>n  输出其他行 end
        换行 end
    做repeat次 end
    

    3.代码截图

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

    • 格式错误
    • 解决方法:用if控制每行最后一个数字的输出为%d

    题目3:杨辉三角

    1. 本题PTA提交列表

    2. 设计思路

    定义n,i,j,a[10][10]
    读入行数n
    for i=0 to i=n
       a[i][0]=a[0][i]=1  end
    for i=2 to i=n
       for j=1 to j=i
          a[i][j]=a[i-1][j-1]+a[i-1][j]  end
    for i=0 to i=n
       for j=0 to j=i+1 
          输出a[i][j]  end
    
    

    3.代码截图

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

    • 答案错误 :刚开始没找到杨辉三角的规律,后来发现每一项上它上面两项之和。

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

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

    1.互评同学名称

    马艺芳

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

    马艺芳
    

    我的
    

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

    • 马艺芳同学的代码:

    优点:
    1.在计算不同数的个数时,利用了数组b[a[j]]观察,并用if判断b[某]>0,不同的数就增加一。他b[a[j]]++真的惊艳到我。
    2.他在输出时利用%04d,表示输出至少4位,不足则在左边补0.巧妙地解决了不足补0的问题。

    缺点:
    他在算年份各位数时很麻烦,对数组a一个一个赋值,我建议使用for循环,类似于之前拆分整数的题目。而且for循环比while更加直接清楚,对sum和数组b的清0也可以放循环刚开始。

    • 我的代码:
      虽然计算年份各位数的那部分比他简洁,但是到后面如何找不同数的个数时我就混乱了,我想到了第2题求整数序列中出现次数最多的数,然而发现用了这个以后导致后面判断条件不好写,很复杂。
    结合两个代码的进化版:
    

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

    1.你学会了什么?

    1.1 C中如何存储字符串?

    将它作为一个特殊的一维字符数组来处理,

    static char s [6] = {'H','a','p','p','y',''};
    static char s [6] = {"Happy"};
    static char s [6] = "Happy";
    

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

    • 结束标志为‘'。

    • C系统在用字符数组存储字符串常量时会自动加一个‘ 0 ’ 作为结束符。例如“C program”共有9个字符。字符串是存放在一维数组中的,在数组中他占10个字节,最后一个字节‘'是系统自动加上的。

    • 有个结束标志‘'后,字符数组的长度就显得不那么重要了。在程序中往往依靠检测‘'的位置来判定字符串是否结束,而不是根据数组的长度来决定字符串的长度。

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

    scanf("%s",a);
    
    

    使用scanf("%s",&s);函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理

    gets(a);
    

    gets()函数用来从输入中读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加''字符。即gets()函数将接收输入的整个字符串直到遇到换行为止。

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

    直接使用改字符减去字符0即可,如:'1'-'0'

    定义number=0,数组a[i]
    读入数组a
    for  i=0 to a[i]!=''
       if( a[i]介于'0'和'9'之间 )
          number+=number-‘0’
    i++
    end
    

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

    • 十六转十
    定义number=0,数组a[i]
    读入数组a
    for  i=0 to a[i]!=''
       if( a[i]介于'0'和'9'之间 )
          number=number*16+number-‘0’
       if( a[i]介于'a'和'f'之间 )
          number=number*16+number-‘a’+10
       if( a[i]介于'A'和'F'之间 )
          number=number*16+number- 'A' +10
    i++
    end
    
    • 二转十
    定义number=0,数组a[i]
    读入数组a
    for  i=0 to a[i]!=''
       number=number*2+a[i]-'0'
    i++
    end
    

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

    • PTA:
      第三题出生年:数组a存放年份里的数字,数组b存放a数组里每个数字在a中的出现次数,到这里类似于第二题求整数数列中出现次数最多的数,但是到了对最后的判断时很晕,最后一个测试点过不去。不知道怎么考虑条件。

    参考了同学代码后已解决:

    • 课堂派:

    • 学会了产生随机数

    srand(NULL)
    rand()%m+n;
    

    %m求余则能取到0到m间的随机数

    3.期中考试小结

    3.1 你认为为什么没考好?

    基础选择题花费时间长,而且正确率低,分析程序题也是小错误多,忽略了很多细节。后面编程题由于时间紧,写的没有结构性,自己拿回来再看一遍都看不大明白当时的思路。

    3.2 罗列错题。

    请在选择题、填空题、改错题、编程题分别举一题说明为什么错了,怎么改?

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

    1.还是要多多敲代码,尤其是课本上的例题,很多的经典做法,不然自己总是一直用笨方法解题,费时费力。
    2.多把时间放在pta上,博客作业就平时积累着写,不能总是堆到一起写。
    3.运算符那一节在返回去看看,虽然平时很少会用到,但是考试会考到相关知识。
    4.自己手写代码问题很大,结构不明显,小错误多。以后做题会试着手写出重要部分。

  • 相关阅读:
    java反射并不是什么高深技术,面向对象语言都有这个功能,而且功能也很简单,就是利用jvm动态加载时生成的class对象
    java反射意义
    vs2013中国集
    用户向导页面实现左右滑动的ImageSwitcher
    Java / Android H基于ttp多线程下载的实现
    成语接龙(dfs)
    python 弄github代码库列表
    leetcode先刷_Unique Paths II
    jquery于form正在使用submit问题,未解决
    Vs2012于Linux应用程序开发(2):图案
  • 原文地址:https://www.cnblogs.com/lmb171004/p/7953698.html
Copyright © 2020-2023  润新知