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

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

1.1思维导图

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

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

1.2.1学习体会

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

1.2.2代码累计

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

2.PTA总分(2分)

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

贴图展示。

2.2我的总分:70分

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

3.PTA实验作业(1分)

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

3.1PTA题目1

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

3.1.1算法分析

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

3.1.2代码截图

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

3.1.3PTA提交列表及说明

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

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

4.大作业(5分)

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

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

题目要求:

题目有3个难度级别,分别为:

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

改进内容:

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

4.1 改造函数介绍

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

函数1

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

函数2

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



函数3

  • 伪代码介绍函数思路
Num(class);
op(class,Num); //调用两个函数生成式子;
if(grade==1)
{
srand(time(NULL));
k=rand()%4;
switch(k)
{
case 0~3:
ch[0]=' ';
result=q[0]+q[1];
break;
}
}
else
{
srand(time(NULL));
k=rand()%4;
switch(k)
{
case 0~3:
ch[0]=' ';
ch[1]=' ';
result=q[0]+q[1]+q[2];
break;
}
}
return result; //返回结果;
  • 截图函数代码。



4.2 与原有函数代码比较

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

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

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

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

4.3 改进大作业总结

回顾两次作业编写过程,总结碰到问题及后续程序编写注意事项。
    在编程过程中会碰到,在函数调用传参的时候会有问题,会出现“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. 前端自动化构建工具--Gulp&&Webpack

    前端构建工具的作用可以认为是对源项目文件或资源进行文件级处理,将文件或资源处理成需要的最佳输出结构和形式. 在处理过程中,我们可以对文件进行模块化引入.依赖分析.资源合并.压缩优化.文件嵌入.路径替换 ...

  2. appium---android元素定位

    原文链接:https://www.cnblogs.com/meitian/p/6103391.html 一.常用识别元素的工具 uiautomator:Android SDK自带的一个工具,在tool ...

  3. Keuskal算法模板

    int cmp(const int i, const int j) { return w[i]<w[j]; }///间接比较函数,w[i]表示边i权值 int find_set(int x) { ...

  4. c# excel xls保存

    public HSSFWorkbook Excel_Export(DataTable query,string title,int[] rowweight,string[] rowtitle) { H ...

  5. OO第一次博客作业(第一单元总结)

    Q:菜是绿的,鸡是黄的,那菜鸡是什么颜色的? A:红的,强测全WA了,能不红么. 菜不菜的问题先不说了,认真研究一下这次的题目,以及WA的原因吧. 程序结构简析 三次实验的核心结构都是差不多 第一次的 ...

  6. 软件开发者路线图梗概&书摘chapter4

    准确的自我评估:不是超出平庸,而是度量能力,做到更好,谦卑 1.只求最差:学期曲线趋平 更好团队→提供帮助+准确的自我评估 列举团队并排序 2.找人指导:学习前头的人,寻找师傅 加入社区,寻找活跃的老 ...

  7. 20164301 Exp3 免杀原理与实践

    Exp3 免杀原理与实践  1. 实践内容 1.1 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,使用shellcode编程 1.2 通过组合应 ...

  8. CSS 关于权重的另类解说

    众所周知,对于CSS中权重的顺序,从大到小依次如下: !important id class 标签 在html标签中写入行内样式style,又大于link引入.相同类型的样式标记,在数量上多的大于数量 ...

  9. async await 同时发起多个异步请求的方法

    @action getBaseInfo = async() => { let baseInfo; try { baseInfo = await getBaseInfo(this.id); if ...

  10. Centos6.9部署Gitlab-11.9.8并汉化

    Git 是一种分布式的代码版本管理系统,git在工作时可以不用时刻依赖后台服务器,在本地电脑上就可以管理版本控制,但是在需要协同开发时就必须要使用后台服务器了,目前互联网上有github,码云这样的远 ...