• C语言博客作业04--数组


    1.本章学习总结

    1.1思维导图

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

    1.2.1学习体会

    本章内容较之前的学习的内容要难,在PTA的题目更多,思考量大,对逻辑思维能力的要求也更高,如果平时代码量小了,到考试的时候真的会很生疏。在做作业的过程中,要注意记住一些解题的方法,这会在以后给自己省下很多时间,不会的就上百度查,然后记住。不然等到最后会发现时间花太多到最后还是做不好。还有,在写代码的时候,变量的命名要多留意,要起的有技术含量一点,并应该合理运用注释。今后要尽量在自己的代码中用上函数,让代码更加清晰。

    1.2.2代码累计


    2.PTA总分

    2.1截图



    2.2我的总分

    335


    3.PTA实验作业

    3.1PTA题目一

    本题要求统计一个整型序列中出现次数最多的整数及其出现次数。

    3.1.1算法分析

    定义N与整形数组a
    输入数组a
    for i=0 to N do
            flag=m;
            m=0;
            for j=i to 0 do 
                    if a[i]==a[j] then m++;
                    end if
            if m>flag then
                    次数为m;
                    出现次数最多的整数num=a[i];
            end if
    输出 num time;
    
    

    3.1.2代码截图

    3.1.3PTA提交列表及说明

    • Q1 刚开始是将输入数字作为元素下标,输入该数字时,相应的元素大小加一。最后比较元素大小。但是这种做法在pta中有个测试点一直过不去。怎么改范围都不对。问了老师,说是范围越界,这种方法应该不行。

    • A1 最后换了方法:计算每个数出现的次数,然后比较。最后对了。

    3.2PTA题目二

    一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
    本题要求编写程序,求一个给定的n阶方阵的鞍点。

    3.2.1算法分析

    定义 n,hang,lie
    定义整形数组a
    输入n;
            for i=0 to n-1 do
                    max=a[i][0]
                    for j=0 to n-1 do
                            if a[i][j] 大等于 max then
                            lie=j;
                            end if
                    min=a[0][lie];
                    for k=0 to n-1 do
                            if a[k][lie] 小等于 min then
                            hang=k;
                            end if
                    if min等于max then 
                    输出hang和lie,结束循环
            if i>=n then 输出NONE
    end
    
    

    3.2.2代码截图

    3.2.3PTA提交列表及说明

    • Q1 第一次编写的时候,把行的最大值和列的最小值分开求了。

    • A1 改为先求一行中的最大值,再在相应的列中找最小值。

    • Q2 循环的嵌套的两个条件写反了,把行和列搞反了。

    • A2 理清思路重新改了过来。

    • Q3 冒泡法的使用混乱。

    • A2 通过上网查询弄清楚了。

    3.3PTA题目三

    输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写),组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。

    3.3.1算法分析

    定义两个字符数组str,a,定义geshi,flag
    定义Decnum
    gets(str)
    geshu=strlen(str);
    for i=0 to geshu-1 do
        if str[i]是数字字符 || str[i]是大写字母字符 || str[i]是小写字母字符 then 
            a[j]=str[i];
            j++;
        end if
        if j==0 且 str[i]等于'-' then flag=1;
    for i=j-1 to i>=0 do
        if a[i]是大写字母字符 then Decnum=Decnum+(a[i]-55)*pow(16,j-1-i);
        else if a[i] 是小写字母字符 then Decnum=Decnum+(a[i]-87)*pow(16,j-1-i);
        else Decnum=Decnum+(a[i]-'0')*pow(16,j-1-i);
    if flag==1 then Decnum=(-1)*Decnum;
    printf("%d",Decnum);
    end
        
    

    3.3.2代码截图

    3.3.3PTA提交列表及说明

    • Q1 刚开始想这道题目的时候没有头绪,不知道怎么计算字符个数

    • A1 后来经提醒,知道了可以用strlen函数。

    • Q2 在小写字符的转化这块卡了很久,一直不知道怎么会转化错误。

    • A2 百度后了也找不到错误元因,后来把它前面的if语句改成else if再放到后面就行了。


    4.代码互评

    4.1代码截图

    • 同学
    • 自己

    4.2二者的异同

    • 1.同学的思路是设定打印一圈为一个循环,循环次数是n/2+1,因为n为奇数个时,中间正好是镂空,另行补充。我的思路是向左,向下打印和向右,向上打印交错进行,循环次数刚好是N。
    • 2.对方的代码比我的简洁很多,条理清晰,可读性强。而自己的代码在编辑的过程中容易出错。
    • 3.对方的代码运行速度应该也比我的快。
  • 相关阅读:
    tomcat---基本知识点解读;配置文件详解
    nginx常用配置参数介绍-upstream
    nginx配置文件-详解
    nginx简单介绍
    GCC编译已经引入math.h文件提示cos,sin等函数未定义
    进程与进程间通信(3)
    进程与进程间通信(1)
    进程与进程间通信(2)
    primer_c++_迭代器
    primer_C++_3.5 数组
  • 原文地址:https://www.cnblogs.com/chianun2000/p/10089559.html
Copyright © 2020-2023  润新知