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


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

    一、PTA实验作业

    题目1:简化的插入排序

    1. 本题PTA提交列表

    2. 设计思路

    定义循环变量i,交换变量时的暂存变量t,第一行输入几个数据n,判断标志变量flag=0,插入的变量number
    输入n,定义一维数组num[n+1]为有序序列
    for i=0 to n-1
        输入num[i]
    end
    输入要插入数
    for i=0 to n
        如果flag为0且number>=num[i] 结束这轮循环,进入下一轮循环
        否则交换num[i]和number并且flag 为1
    end
    for i=0 to n
        输出num[i]
    end
    

    3.代码截图

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

    多种错误
    1:找到了插入的位置,最后一位的值异常
    分析:因为我用的是continue,遍历数组,如果number比num[i]小不再跳过后面的语句,所以能找到正确的位置,且刚开始交换出来的数会比后面的数小,会继续叫唤下去,但是到达最后一位时由于,没定义最后一位数,比较结果无法确定,所以排序后最后一位无法确定。
    解决方法:引入flag,判断是否进行了交换,一旦进行交换,便一直交换到数组结束

    2:格式错误
    没有仔细看题目,以为还是和之前一样,最后一个数没空格,以为很对,还是错误
    解决方法:输出后跟空格就可以

    题目2:加法口诀表

    1. 本题PTA提交列表

    2. 设计思路

    定义循环变量i,j,k,输入n和repeat
    输入repeat
    for k=1 to repeat
        输入n
        定义二维数组array[n+1][n+1]
        for i=0 to n
            for j=0 to n
                array[i][j]=0初始化数组为0
            end
        end
        for j=1 to n
            array[0][j]=j首列为递增数列
        end
        for i=1 to n
            array[i][0]=i首行为递增数列
        end
        for i=1 to n
            for j=1 to i
                题目要求位置的数等于列数加行数
            end
        end
        for i=0 to n
            for j=0 to n
                if首行首列输出+
                else if到每行末或为0时,换行并结束该行输出
                else
                    if 最后一个输出array[i][j]不加空格
                    else输出array[i][j]并占4个空格
            end
        end
    

    3.代码截图

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

    格式错误
    刚开始全部的输出%-4d,输出结果看着都一样,到就是格式错误
    解决方法:加了几句判断条件,让它在每行最后一个输出时不加空格

    题目3:杨辉三角

    1. 本题PTA提交列表

    2. 设计思路

    定义i,j,k为循环变量,n为输入的数
    输入n
    定义二维数组array[n][n]
    for i=0 to n-1
        for j=0 to n-1
            array[i][j]=0初始化数组
        end
    end
    for i=0 to n-1
        array[i][0]=1第一列赋值为1
    end
    for j=0 to n-1
        array[0][j]=0第一行除第一个数赋值为0
    end
    for i=1 to n-1
        for j=1 to n-1
            array[i][j]等于上一行数加左上方的数
        end
    end
    for i=0 to n-1
        for j=0 to n-1
            if为首行或行数和列数相等,输出array[i][j]换行,结束该行输出
            else 输出%4d的array[i][j]
        end
    end
    

    3.代码截图

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

    格式错误
    题目说每个数据占4列,因为前面的题目,便以为是%-4d,结果写出来后格式错误,有想办法去掉后面多出来的空格,还是格式错误
    解决方法:看了同学的代码,意识到了是哪里出错,很快就改对了

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

    三、同学代码结对互评

    1.互评同学名称

    李金谣

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


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

    • 不同点:
      1.数组定义:
      我的代码是先输入长度再定义数组,同学的代码是定义数组长度,再决定用的范围,而且他定义两个数组,我只有一个。
      2.数列顺序的重新排列
      我是在原有的数组中进行操作,同学是将原来的数组中的数转移到另一个数组中。
      3.其他不同
      同学的代码还添加了几种条件的判断才可以实现题目要求的功能,而我的代码不用

    • 各自优势
      我的优势:代码长度短,数组的使用较少,根据要求定义数组长度,节省使用内存
      同学的优势:思路直白简单,只要将数组的数转移到宁一个数组即可,比起我还要改变原有数组的值,操作简单。

    • 代码风格
      我更喜欢我的代码,比较简短,不用判断数组为0时的情况,而且数组的定义较少,能更有效利用数组。

    四、本周学习总结

    1.你学会了什么?

    1.1 C中如何存储字符串?

    定义字符型数组

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

    结束标志:‘’
    原因:定义字符数组是由于无法直接知道字符串中字符个数,通常会定义一个长度远大于要存入字符串的长度,所以如果没有结束标志,数组将全部遍历完才能停止,这样可能造成运行超时,或者无法预料的错误,所以要在使用的字符范围后加上结束标志。

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

    设ch为字符变量或字符数组的数组名
    1.scanf("%c",&ch);输入单个字符
    2.ch=getchar();输入单个字符
    3.scanf("%s",ch);输入字符串,不用&,直接放数组名,遇到空格停止
    4.gets(ch);输入字符串,可以吸收空格

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

    单个转换:数字字符-‘0’
    多位转换:
    假设字符数组中有a[1]='1',a[2]='2',a[3]='3',转换成123
    1.定义循环变量i,sum=0
    2.i=0
    3.如果a[i]!='',进行以下循环
    4.sum=sum*10+(a[i]-'0')
    5.i++

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

    假设字符数组a[]中存了该16进制数或二进制数的每一位

    • 16进制

    1.定义循环变量i,sum=0
    2.i=0
    3.如果a[i]!=''进行以下循环
    4.如果a[i]是数字字符,则sum=sum16+(a[i]-'0')
    5.如果a[i]是A-F,则sum=sum
    16+(a[i]-'A'+10)
    6.如果a[i]是a-f,则sum=sum*16+(a[i]-'a'+10)
    7.i++

    • 二进制

    1.定义循环变量i,sum=0
    2.i=0
    3.如果a[i]!='',进行以下循环
    4.sum=sum*2+(a[i]-'0')
    5.i++

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

    虽然会了一点点编程,但是明显感觉自己的代码量明显不够,思路跟不上,同样的题要花比别人长的时间才能写出,而且有些错误要调很久才能完全正确,对于字符数组要用的范围完全不能掌握,提交pta运行时错误只能不断扩大数组范围。

    以下为错题:

    1.有以下定义:char x[ ]="abcdefg"; char y[ ]={'a', 'b', 'c', 'd', 'e', 'f', 'g'}; 则正确的叙述为()。
    A、数组x和数组y等价
    B、数组x和数组y的长度相同
    C、数组x的长度大于数组y的长度
    D、数组x的长度小于数组y的长度
    答案:C,错选B
    数组中,字符与字符串存到数组中长度是不同的,字符串存入数组时会自动添加一个结束符号‘’,因而字符串会比单个字符输入多一个长度

    2.输入10个整数,用选择法排序后按从小到大的次序输出。

    #define  N   10
    main( )
    {
    int  i,j,min,temp,a[N];
    for(i=0;i<N;i++)
    scanf("%d",  【1】);
    printf("
    ");
    for(i=0;  【2】;  i++)
    {min=i;
    for(j=i;j<N;j++)
    if(a[min]>a[j])  【3】 ;
    temp=a[i];
    a[i]=a[min];
    a[min]=temp;
     }
    for (i=0;i<N;i++)
    printf("%5d",a[i]);
    printf("
    ");
    }
    

    参考答案
    &a[i]
    i<N-1
    min=j
    我的作答&a[i] i<N a[min]=a[j]
    应该是下标交换即可

    3.期中考试小结

    3.1 你认为为什么没考好?

    1.选择题的题目基本错在了较为基础的内容,如赋值语句正确定义,逻辑判断符的优先级,不同类型变量的作用域和生存周期,函数的形参与实参等
    2.写出程序运行结果题目主要是对递归的算法不熟悉,误判了输出的次数
    3.程序填空题主要错在对科学计数法没有熟练掌握,及粗心大意
    4.手写程序题真的是不熟练,以前都是在电脑上编程,手写的一下子写不出来
    基础没有掌握得一清二楚,选择题犹豫较长时间,分析程序时花的时间较多,说明在代码量方面还有不足,导致最后的程序题只用了较短的时间就写完,其质量也不好。总之,基础不牢固,时间没安排好。

    3.2 罗列错题。

    选择题:
    忽略B选项后面还有||,当&&前面0时以为整个式子就是0,其实还要与后面的式子比较,因为||后面是1,所以整个式子还是1
    填空题:

    第7空只填了ch,还要加=getchar,当时对字符输入还不熟悉所以填的太快就错了
    改错题:
    做的时候只找到了4个错误,怕被扣分,不敢乱改,term=-termxx/(n+1)(n+2);//改为term=-termxx/((n+1)(n+2));未找出
    编程题:

    做完前面的题,这题没剩多少时间,所以按照以前写过的和这题相似的题的代码写了一遍
    答案:

    #ifndefFUNC
    #defineFUNC
    #include<stdio.h>
    #include<math.h>
    doubleFactorial(intnum);
    doubleCnr(intn,intr);
    #endif
    doubleFactorial(intnum)
    {
    inti;
    doublefac=1;
    for(i=1;i<=num;i++)
    fac*=i;
    returnfac;
    }
    doubleCnr(intn,intr)
    {
    doublek;
    k=Factorial(n)/Factorial(r)/Factorial(n-r);
    returnk;
    }
    intmain(){
    intn,r;
    intx=15,y=0;
    doublek;
    printf("输入:");
    scanf("%d%d",&n,&r);
    while(n!=0||r!=0){
    }
    printf("输入:");
    scanf("%d%d",&n,&r);
    }
    printf("程序结束");
    return0;
    }
    

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

    熟读书本重要知识内容,多看看别人好的代码,提高自己写代码和读代码的速度。

  • 相关阅读:
    Docker部署LAMP搭建wordpress博客系统
    Docker教程---基本操作
    华为VS网络虚拟化技术
    云数据中心基础设施层概述
    EVE-NG模拟器关联SecureCRT、Wireshark软件
    Centos7.4安装openstack(queens)cinder卷类型和云主机安全
    围观大神的文件读取操作
    浅谈python垃圾回收机制
    Python网络爬虫开发实战使用XPath,xpath的多种用法
    快来学习怎么可视化监控你的Python爬虫
  • 原文地址:https://www.cnblogs.com/doimpossible/p/7944987.html
Copyright © 2020-2023  润新知