第五次作业------指针

1.本章学习总结

1.1 思维导图

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

1.2.1 学习体会

    换个说法吧,后面的博客,每次都说好难好难也不好。(不过也是事实)
    指针,我稍微会用的就是和数组有关联的那一部分。拿着自己写的题目去问同学,他说我指针用的太过了,也的确是,不太会用,就拿做过的课堂派作业照着葫芦画瓢,寻一点点感觉。还是指针,我用了,自己都不知道他跑到哪里去了,看了半天都没毛病,请教大佬后一语道破。目前对指针还是挺迷的,能不用指针我就尽量不用吧。(在你完全熟悉指针之前,尽量不要乱用。----这是大佬对我的寄语)。不过,有的题目用用指针还是蛮方便的。
    此次大作业,说实话,真的看得一脸懵逼。本来就不怎么会用,然后有点不知道怎么下手。不过,也不能不做,做了总比没做好,哪怕是看着别人的写的,也比自己不写好,好歹有个印象。后来和同学聊天谈到,不怎么会用指针的话,至少会多少写多少吧,先把一级的写了。后来想想也对,这不就是把大问题分解成小问题嘛,解决起来就没有那么困难。
    此次作业,我还是要认真的,上次函数大作业没写好,以至于这次要基本全部重来一遍,非常费劲,如果这次还是那么含糊的话,那下次就是和文件关联,与课设有关了。对中间要求严格一点,做的更好一点,也是为了后面能不学的那么累。

1.2.2 代码累计

2.PTA总分

2.1截图PTA中函数题目集的排名得分

2.2 我的总分:

指针pta总分110

3.PTA实验作业

3.1 PTA题目1

7-3 字符串的冒泡排序 (20 分)
我们已经知道了将N个整数按从小到大排序的冒泡排序法。本题要求将此方法用于字符串序列,并对任意给定的K(<N),输出扫描完第K遍后的中间结果序列。

输入格式:
输入在第1行中给出N和K(1≤K<N≤100),此后N行,每行包含一个长度不超过10的、仅由小写英文字母组成的非空字符串。

输出格式:
输出冒泡排序法扫描完第K遍后的中间结果序列,每行包含一个字符串。

3.1.1 算法分析

定义二维字符数组ch[100][20]
for(i=0 to n)
    do
        scanf("%s",ch[i])//将字符串看做一个整体存放在数组中
end for
定义j
- for(i=0 to k)循环到k轮结束
    do 
       -  for(j=0 to n-1-i)//考虑到最大的那个数在最后的情况,要减1
            do
                   -  if(ch[j]>ch[j+1])
                         定义字符数组t[20]
                         //利用函数strcpy交换ch[j]与ch[j+1]的值
                         strcpy(t, ch[j]); 
                         strcpy(ch[j], ch[j+1]);
                         strcpy(ch[j+1], t);    
                    end if
        end for
end for
- for(i=0 to n)
    do
        输出ch[i]
end for

3.1.2 代码截图

3.1.4 PTA提交列表及说明

  • Q1:开始一直想着用一位数组循环存放字符串,后面发现不行
  • A1:将字符串的存储改为用二维数组
  • Q2:对字符串这个整体,不知道该怎么处理,开始想着是,读到空格就结束,前面的字符构成一个数组,就是一个字符串放在一个数组中的意思
    后面发现根本不知道该怎么表示,无从下手
  • A2:换一种思考方式,将字符串作为一个数组元素存放,将字符串看做一个整体处理
  • Q3:冒泡交换两个数的值时,定义一个指针放值,发现不行
  • A3:用函数strcpy,进行复制处理,同时将指针改为一个数组去存放相应的字符串

4.大作业

题目:实现小学四则运算,有3个难度级别,分别为:

第一级是1位数的一步加减乘除计算
第二级是2位数的2步加减运算
第三级是3位数的2步加减运算
改进内容:

4.1.改造函数介绍

1.构造字符数组存放算术表达式

定义函数int CreateExp(char *exp,double result)
定义字符ch
调用函数c()生成运算符ch
随机生成两个整数,用rand()%10
- switch(ch)  do
    case '+':
                sprintf(exp,"%d%c%d=",number1,ch,number2);//将运算式子放入指针exp
                printf("            %d%c%d=",number1,ch,number2);//输出式子
                result=number1+number2
                break;
    case '-':
                sprintf(exp,"%d%c%d=",number1,ch,number2);//将运算式子放入指针exp
                printf("            %d%c%d=",number1,ch,number2);//输出式子
                result=number1-number2
                break;
    case '*':
                sprintf(exp,"%d%c%d=",number1,ch,number2);//将运算式子放入指针exp
                printf("            %d%c%d=",number1,ch,number2);//输出式子
                result=number1*number2
                break;
    case '/':
            - if(number2!=0)//分子不为0才有意义
                sprintf(exp,"%d%c%d=",number1,ch,number2);//将运算式子放入指针exp
                printf("            %d%c%d=",number1,ch,number2);//输出式子
                result=number1/number2
                break;
            end if
    return返回result的值
end switch

截图函数代码。
2.表达式运算
根据字符表达式,能计算其结果。有能力同学深入研究表达式优先级。
int ComputeExp(char *exp)
{

}

伪代码介绍函数思路
截图函数代码。

4.2 与原有函数代码比较

改造前函数1和改造后的函数1

文字说明2者不同及区别,优缺点。
改造前函数2和改造后的函数2

文字说明2者不同及区别,优缺点。
改造前函数3和改造后的函数3

文字说明2者不同及区别,优缺点。
等等

4.3 改进大作业总结

回顾两次作业编写过程,总结碰到问题及后续程序编写注意事项。

猜你喜欢

转载自www.cnblogs.com/zhonghaiqing/p/10124236.html