C语言博客作业5--指针

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

1.1思维导图

  1. 请以思维导图总结本周的学习内容,如下图所示:

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

1.2.1学习体会

  1. 描述本周学习感受,也可以在这里提出你不理解地方,对教师教学建议等。
  1. 感觉指针真的像指针一样,好绕,让我不能理解,甚至很懵,课后重新看了书,看视频后,理解了一点点,可对于题目,这远远不够啊!深刻的记得星期五晚上,一直在做一个题目,还是做不出来(真的好绝望),问了其他同学也没有解决,第二天早上起来,想到了它还没有做完,就看看,还是不能解决,于是我想到了百度!结果按百度上的做法也是错的!真的好无奈!

1.2.2代码累计

  1. excel中画如下表格,保存好,复制到博客随笔。注意要累计所有代码量。

2.PTA总分(2分)

2.1截图PTA中指针题目集的排名得分

  1. 贴图展示。

2.2我的总分:70分

  1. 填写本次题目集的总得分。
  2. <span style ="color:red">注意,请把PTA代码展示给批阅助教,并能完整回答助教问题,才能得满分。否则根据回答情况给分。</span>

3.PTA实验作业(1分)

  1. PTA中选1题你最满意的题目,题目选难度越大,分值越高:

3.1PTA题目1

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

3.1.1算法分析

  1. 以伪代码方式描述算法思路。伪代码注意文字+C语法方式描述,不要纯C代码或者C代码直接翻译,能做到看了伪代码就知道你的思路是如何。
  1. char t[MAX]; //定义一个字符数组
  2. while ((s=getchar()) != '\n') //getchar每次读入一个字符
  3. {
  4. if (s != ' ')
  5. {
  6. flag = 1; //表示输入的不是空格
  7. }
  8. else if (count > 0)
  9. {
  10. continue; //满足则跳过下一条语句
  11. }
  12. else if (flag)
  13. {
  14. t[i++] = s; //只有之前遇到单词的情况下碰到空格才把这个空格写入目标字符串
  15. }
  16. for (i-=1; i>=0; i--) //i-=1.i=i-1,最后一个标号为i里面是不存东西的
  17. {
  18. if (t[i] != ' ')
  19. {
  20. count ++; // 用 count 统计单词中字母的个数
  21. }
  22. else if (t[i]==' ' && count > 0)
  23. {
  24. for (j=i+1; j<=i+count; j++)
  25. {
  26. printf("%c", t[j]); //遇到空格就输出单词
  27. }
  28. printf(" ");
  29. count = 0;
  30. }
  31. } // 还剩最后一个单词没输出,因为最后一个单词可能前方无空格 ,只完成了count++,但是没有遇到 空格,那么逻辑是一样的
  32. for (j=i+1; j<=i+count; j++)
  33. {
  34. printf("%c", t[j]); // 倒序输出字符。
  35. }

3.1.2代码截图

  1. 贴图展示代码,不要复制,如

3.1.3PTA提交列表及说明

  1. 根据提交列表,简要描述下调试程序碰到的问题及解决办法。

  1. Q1:出现编译错误和格式错误。
  2. A1:定义的数组的长度太小了!编译过不去。
  3. Q2:最后一个测试点过不了,运行时错误。
  4. A2:找同学的代码来看,比较代码的不同。

4.大作业(5分)

题目:实现小学四则运算。

  1. 在函数那章,我们已经实现小学四则运算这份作业,现在要求大家把之前设计函数升级改造,原来的函数大家都是用全局变量实现不同函数参数传递,这次作业要求改地址传递,减少全局变量的使用。

题目要求:

  1. 题目有3个难度级别,分别为:
  2. 第一级是1位数的一步加减乘除计算
  3. 第二级是2位数的2步加减运算
  4. 第三级是3位数的2步加减运算

改进内容:

  • 1.构造字符数组存放算术表达式
  • 2.表达式是否合法(选做)
  • 3.表达式运算

4.1 改造函数介绍

  1. 主要上述三个函数的改造说明

函数1

  • 伪代码介绍函数思路
  1. 把随机数存放到一维数组里面
  • 截图函数代码。

函数2

  • 伪代码介绍函数思路
  1. 产生随机运算符,把运算符存放到字符数组ch[2]里面,求出式子结果;
  • 截图函数代码。



函数3

  • 伪代码介绍函数思路
  1. Numclass);
  2. op(class,Num); //调用两个函数生成式子;
  3. if(grade==1)
  4. {
  5. srand(time(NULL));
  6. k=rand()%4;
  7. switch(k)
  8. {
  9. case 0~3:
  10. ch[0]=' ';
  11. result=q[0]+q[1];
  12. break;
  13. }
  14. }
  15. else
  16. {
  17. srand(time(NULL));
  18. k=rand()%4;
  19. switch(k)
  20. {
  21. case 0~3:
  22. ch[0]=' ';
  23. ch[1]=' ';
  24. result=q[0]+q[1]+q[2];
  25. break;
  26. }
  27. }
  28. return result; //返回结果;
  • 截图函数代码。



4.2 与原有函数代码比较

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

    文字说明2者不同及区别,优缺点。
  1. 改造前:
  2. 不同点:代码直接生成随机数就放在哪儿了,没有返回给主函数。
  3. 优点:代码简洁易懂。
  4. 缺点:代码的步骤基本一样,有点浪费代码行,代码量相对较少。
  5. 改造后:
  6. 不同点:用指针把玩家的等级传进来,把随机数存放到一个数组里面。
  7. 优点:不用使用全局变量来进行计算。
  8. 缺点:在这个函数需要多定义几个变量,和定义一个一维数组。
  • 改造前函数2和改造后的函数2

    文字说明2者不同及区别,优缺点。
  1. 改造前:
  2. 不同: 产生随机运算符和题目都放在一起。
  3. 优点:都放在一个函数里, 整体感很强。
  4. 缺点:代码拢堆在一起,让读者不太好阅读。
  5. 改造后:
  6. 不同:把结果,运算符和式子分开;
  7. 优点:看起来更清晰。
  8. 缺点:分散在两个函数里,使读者跳跃性的阅读,函数调用太繁琐。
  • 改造前函数3和改造后的函数3

    文字说明2者不同及区别,优缺点。
  1. 改造前:
  2. 不同:和随机数和运算符放在同一个函数里。
  3. 优点:不用调用其它函数就可以完成。
  4. 缺点:一个函数里的代码行太长,不好阅读,会让读者产生厌恶感,不想读下去。
  5. 改造后:
  6. 不同:单独放在一个函数里面,随机数和运算符通过传参进来,随机数放到一个一维数组里。
  7. 优点:随机数放到数组再用指针传进来使用,大大提高效率和减少了相同步骤的多次运行,也减少了代码量。
  8. 缺点:用指针容易出错。

4.3 改进大作业总结

  1. 回顾两次作业编写过程,总结碰到问题及后续程序编写注意事项。
  1. 在编程过程中会碰到,在函数调用传参的时候会有问题,会出现“expected primary-expression before 'int'的错误,我不知道这是什么错误,注意:在编程量大的时候要注意花括号对齐,不然容易缺少。函数调用之前一定要声明。在使用变量之前要定义,防止后面忘记了。一定要理清传参的关系。

C语言博客作业5--指针的更多相关文章

  1. C语言博客作业05——指针

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量 1.2.1学习体会 可能因为之前数组那块儿的作业拖得太久了,以至于我觉得指针学的好快,还没反应过来就教完了,然后一开始做题的时候,就是一脸 ...

  2. C语言博客作业6---结构体&文件

    C语言博客作业6---结构体&文件 1.本章学习总结(2分) 1.1思维导图 请以思维导图总结本周的学习内容.如下图所示: 1.2.学习体会 描述本周学习感受,也可以在这里提出你不理解地方.对 ...

  3. C语言博客作业06——结构体&文件

    C语言博客作业06--结构体&文件 1.本章学习总结 1.1思维导图 1.2.本章学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.结构体的本身并不难,但以结构体为基础的链表还是让我 ...

  4. C语言博客作业4--数组

    C语言博客作业4--数组 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...

  5. C语言博客作业3--函数

    C语言博客作业3--函数 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...

  6. C语言|博客作业10

    问题 回答 C语言 博客作业10 这个作业要求在哪里 作业要求 我在这个课程的目标是 熟练循环语句的用法 这个作业在哪个具体方面帮助我实现目标 pta作业 参考文献 <C语言程序设计> 1 ...

  7. C语言博客作业08

    C语言I博客作业08](https://www.cnblogs.com/490-85-00-58-/p/11863312.html) 问题 回答 这个作业属于那个课程 C语言程序设计II 这个作业要求 ...

  8. C语言|博客作业12-学期总结

    我学到的内容 我的收获 第一次:https://www.cnblogs.com/tongyingjun/p/11563433.html:总结:初步了解了C语言.代码.博客园和Markdown语法. 第 ...

  9. C语言Ⅰ博客作业09

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10029 我在这个课程的 ...

随机推荐

  1. UVA - 558 Wormholes (SPEA算法模板题)

    先给出题面:https://vjudge.net/problem/UVA-558 题意描述:给你含n个点以及m条边的图,让你判断在这个图中是否存在负权回路. 首先,我们来介绍什么是SPEA算法 SPF ...

  2. Java基于opencv—透视变换矫正图像

    很多时候我们拍摄的照片都会产生一点畸变的,就像下面的这张图 虽然不是很明显,但还是有一点畸变的,而我们要做的就是把它变成下面的这张图 效果看起来并不是很好,主要是四个顶点找的不准确,会有一些偏差,而且 ...

  3. 输入框VS软键盘

    最近在做一个h5的时候遇到的问题 我们都知道当页面上的有输入框被选中了,这个时候就回调出键盘用户可以输入.但是安卓手机在弹出键盘时页面的输入框也会被覆盖住: 以下为暂时的解决办法:(以下方法同时解决了 ...

  4. liunx学习笔记

    告知-----------------------------------grub启动时滚动的代码屏默认我们执行命令使用的为bash,unix使用的为csh能够通过service 程序名进行start ...

  5. Ubuntu 下超简单的安装指定版本的nodejs

    第一步 指定版本源 执行 curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - setup_5.x 需要安装的版本号,替换数字就 ...

  6. BUAA-OO第二单元小结

    一.设计策略 三次作业中,由于前两次作业都只有一部电梯,因此我的线程只有两个,一个等待队列输入进程,以及一个电梯运行进程.等待队列输入进程实现十分简单,只需要根据输入把request添加到等待队列即可 ...

  7. 用理论告诉你 三极管和MOS管的区别在哪

    在电路设计当中假设我们想要对电流中止控制,那就少不了三极管的帮助.我们俗称的三极管其全称为半导体三极管,它的主要作用就是将微小的信号中止放大.MOS管与三极管有着许多相近的地方,这就使得一些新手不断无 ...

  8. Java_03选择结构

    1.if 选择结构 格式: if(判断条件){ // 语句块 }else if(判断条件){ // 语句块 2 }else{ // 语句块 3 } 当 if 关键字后的一对大括号里只有一个语句时,可以 ...

  9. python如何输出文件的年月日

    import time print('{}BiasedMF312and4414_rt.txt'.format(time.strftime("%Y-%m-%d"))) 输出: 201 ...

  10. redux源码解读(一)

    redux 的源码虽然代码量并不多(除去注释大概300行吧).但是,因为函数式编程的思想在里面体现得淋漓尽致,理解起来并不太容易,所以准备使用三篇文章来分析. 第一篇,主要研究 redux 的核心思想 ...