zoukankan      html  css  js  c++  java
  • C语言博客作业04--数组

    1.本章学习总结(2分)

    1.1 思维导图

     

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

    1.2.1 学习体会

    数组的题目太多了,然后这周又线代考试,因为线代上课的时候没有专心听讲,所以花了很多的时间去补回来,导致题目集才完成了大概三分之一,然后我对字符数组的理解不够深,主要还是字符的输入和储不太懂,所以之前卡在字符数组上,做不下去,字符数组感觉比较抽象。不好理解。导致二维数组还没开始做,字符数组引入了一些定义,去搜了也不太理解。老师有要求尽量用函数的方法去做,对字符传参不太理解,所以都没去用函数的方法去做。作业感觉挺多的,数组pta题目数太多。也是我对数组这块不太会的原因。导致进度缓慢,卡了一题能卡很久。

    1.2.2代码累计

    2.PTA总分 

    2.171+53+10

    2.2我的总分 234

    3.PTA实验作业

    3.1PTA题目1

    给定两个整型数组,本题要求找出不是两者共有的元素。

    3.1.1算法分析

    int 定义数组a        数组a储存第一行数据
    int 定义数组b       数组b储存第二行数据
    int 定义数组c       数组c储存不同的数据
    两个for循环将数输入数组a和b
    for(j=0;j<n1;j++)
    flag=0;            定义控制变量flag=0
    for(i=0;i<n2;i++)
    if(a[j]==b[i]) flag=1;       如果两数列有相等的就让控制变量flag=1
    if(flag==0)
    int h,flag1=0;          如果flag=0 定义变量h,flag1=0
    for(h=0;h<=count;h++)     声明数组c的数组长度
    if (c[h]==a[j])
    flag1=1;            令flag1=1
    if(flag1==0)            如果flag==0即没有相等的
    {
    c[count]=b[j];         将b[j]赋给c数组
    count++;
    }
    下面类似

    3.1.2代码截图

     

    3.1.3 PTA提交列表及说明

    一开始一直没什么思路,一开始都是答案错误,然后发现自己没办法把c中重复的删了,后面看了一下同学的答案,改正了,devc可以过,pta一个测试点一直过不了,我卡了好久,后面放弃了,今天再来提交一遍,发现又能过了。

    3.2题目二

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

     

    3.2.1算法分析

    int number=0,i,count=0,flag=0; 定义转换的十进制数初值为0,count判断是否出现过十六进制数,flag判断是否在第一个十六进制数出现后一位为负号
    char str[100]; 定义数组str
    定义i=0
    for(i=0;str[i]!='';i++)
    用三个if判断输入的数的范围。
    if(count==1) 判断count是否为1 ,如果为1则代表此时只出现一个十六进制数
    printf("-");
    printf("%d",number); 最后输出结果

    3.2.2代码截图

    3.3.3PTA提交列表及说明

    这个是因为那个负号,我一开始条件写成只要第一个十六进制出现,之后就打印一个负号,然后没有发觉,一直是这个测试点错。后面今天检查了一下发现了问题,改了一下就过了。这个其实不难。

    3.3题目三

    对于给定的一个四则运算表达式,请把她的每个token切分出来。

    3.3.1算法分析

    int i=0,flag=0;
    int a[41];                 定义数组
    while((a[i]=getchar())!=' ')      输入数组a
    i++;
    a[i]=''; 结束符
    i=0; 初始化i
    if(a[i]=='-'||a[i]=='+')           如果读到的是正or负号
    {
    if(i==0)                如果第一个读到的是正or负号
    {
    printf("%c%c ",a[i],a[i+1]);     输出正or负号和后面的一个数字
    i++;               递增i
    }
                    后面再跟几个else if分别讨论当出现正or负号后面和前面出现的字符是什么
                    再根据题目条件输出

    3.3.2代码截图

     

    3.3.3PTA提交列表及说明

     我就只提交了一次,后面不知道怎么过第四个测试点,我pta上那个测试点我用了1+(-3)*3在devc上测试过了,不知道第四个测试点怎么过。。。

    4.代码互评

    4.1代码截图

    4.2二者的不同

    她没用二分法去查找数字,而我用到了二分法。

  • 相关阅读:
    java 分解质因数
    Unix 文件系统读写时权限校验
    find 命令实战巧用
    Linq分组功能
    三种查看SqlServer中数据物理pge页的方法
    一个高度压缩的bit位图字典的实现
    windbg 命令 gchandles
    ManualResetEvent和AutoResetEvent的区别实例
    一些汇编指令(基于8086)
    windbg sos版本不匹配问题解决
  • 原文地址:https://www.cnblogs.com/yvvq/p/10088380.html
Copyright © 2011-2022 走看看