C语言博客05指针

1.本章学习总结

1.1 思维导图

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

1.2.1 学习体会

本章所学习的指针是一个崭新的知识点,在之前的学习中从未接触过,只知道数组的首地址,
所以学起来有点耗时间,虽然现在并未感觉到指针的强大,但是稍微知道一点c语言的人都知
道指针是c语言在所有语言中最特殊的一块,也知道下学期的数据结构会大量用到c语言,故
学起来还是比较认真的,所以自认为掌握得还不错。

1.2.2 代码累计

2.PTA总分

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

2.2 我的总分

总分:110

3.PTA实验作业

3.1 PTA题目1

7-2 说反话-加强版 (20 分)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。

3.1.1 算法分析

```c
定义静态字符数组p[500000]
定义整型数i,flag=-1  //flag用来控制单词间只有一个空格
    for i=0 to (p[i]=getchar () )!='\n'   //当接收到换行符时停止
    p[i]='\0'  //将'\n'改为'\0'
    for i-- to i=0 do
        if p[i]=' ' then  //将空格全部转化为'\0'
            p[i]='\0'
        if i=0&&p[i]!='\0' then 
            printf("%s",p)      //若i=0时不是空格,则输出最后一个单词
        else if p[i]='\0'&&flag=1 then
            printf("%s",&p[i+1])   //一个个单词输出
        else if p[i]!='\0' then 
            if flag=0 then
                输出空格      //在单词间输出一个空格
            flag=1
    end for
```

3.1.2 代码截图

3.1.4 PTA提交列表及说明

Q1:第一遍做的时候,出现了单词也反过来的问题
A1:重新审题发现题目看错,经过修改解决了
Q2:后来又出现了,第1个单词前面多了一个空格的现象
A2:经过修改解决
Q3:但是又出现单词间空格消失的现象
A3:干脆引入了一个flag,完美解决这个问题

4.大作业

4.1.改造函数介绍

1.函数1

2.函数2

3.函数3

4.3 与原有函数代码比较

1.原来的代码没有用到指针而是用全局变量
2.原来的代码用到的变量多,而用字符数组来存放算式可以有效减少变量的使用,可避免由于变量太多所导致的混乱
3.新增加了清屏的功能,可以使运行界面看起来更加友好。
4.比起原来的代码,现在的代码看起来功能更加明了。

4.4 改进大作业总结

1.指针在代码中的强大作用在此次大作业中初次感到
2.感觉此次大作业还有些不足,没有将代码写的更简洁,这可能跟之前的写法有关
3.指针的使用还不够熟练,得继续练习
4.与同学的代码相比,还是功能欠缺
5.比起之前的代码,bug有所减少
6.用字符数组来存放算式是一个好的方法,当实行起来并不顺利。
原文地址:https://www.cnblogs.com/putianliuzhong/p/10127878.html