一、PTA实验作业

题目1:使用函数判断完全平方数

1. 本题PTA提交列表

2. 设计思路

3.本题调试过程碰到问题及PTA提交列表情况说明。

  • 部分正确 :将else的情况放入for循环内,导致循环内的if语句只判断了一次就直接输出No。

  • 调试过程:

解决办法:将else移出循环,结果出现了编译错误。最后将else删去。

  • 部分正确 :n=0的测试点错误。

解决办法:将循环变量i从0开始赋值。

  • 本题小结:这道题和判断素数那道题很相似,都是在循环内进行if语句的判断,易错点就在于不能将else也加在for循环内,否则会导致若第一次的if判断为假,则直接跳出了循环,无法验证之后的数是否满足。只有把满足循环的所有数全经过if判断后都不成立,才可以判断它不成立。所以应该在循环外加上不成立时该执行的语句。

题目2:使用函数输出指定范围内的完数

1. 本题PTA提交列表

2. 设计思路(伪代码)

  • 第一步:将number=1时分出来 ,1为完数
  • 第二步:当number不等于1时,进入循环找出number的因子,若number%i==0,利用sum进行累加。重复此步骤直到i小于number
  • 第三步:最后利用if进行判断sum是否等于number,若相等则为完数,否则不是完数。
  • 第四步:进入返回因子和的函数,定义循环变量k,i,和观察量flag并赋值为0
  • 第五步:对m到n之间的数进行判断,如果之间某一个数k为完数 ,flag赋值为1。
  • 第六步:按题目要求输出因子 ,进入循环若k%i==0,输出i。
  • 第七步:若flag等于0,说明m到n之间无完数 ,输出 No perfect number

3.本题调试过程碰到问题及PTA提交列表情况说明。

  • 部分正确 :除了为空集时答案正确,其他测试点都是错的

  • 调试过程:

首先我发现了在第二个函数中,只有对有完数出现的情况进行输出,而没有对m到n之间没有一个完数的判断和输出。

解决办法:我加入了观察变量flag,并且在找到完数时对flag进行赋值为1,最后若flag等于0,则输出没有完数。

  • 部分正确 :端点是完数的测试点错误

  • 调试过程:

    1.在计算因子的函数中,循环条件设为i<number,这就导致了当输入1时进不去循环里,因此我加入了if语句对number是否为1做了判断。

2.再加了对1的判断后,还是部分正确,测试点两端都为完数不正确。而且当用DEV输入两端为完数的数据后,输出结果并没有他们为完数的语句。

解决办法:最后找出原因,是我的返回值错了,惯性思维觉得要返回0和1,其实需要返回数字本身。

题目3:求组合数

1. 本题PTA提交列表

2. 设计思路(流程图)

函数流程图:

3.本题调试过程碰到问题及PTA提交列表情况说明。

  • 答案错误 :自己在DEV上运行并没有错误,最后发现是输出忘记加result =,本题并没有多大难度,自定义的函数也是以前循环结构有讲过的。

二、同学代码结对互评

1.同学互评照片

2.我的代码、互评同学代码截图

  • 我的代码

  • 宵莹的代码

  • 峻森的代码

int reverse( int number )
{
int a=0;
while(number){ a=a*10+number%10;
number=number/10;
}
return a;
}

3.分析

  • 三个代码比较下来,峻森的最为简单美观,我和宵莹的代码都很复杂。

  • 我的主要是复杂在对数字中间出现0的分析多余,即下图红色部分根本没必要讨论,可以删去。



    简化成这样:

  • 宵莹的问题是在于她没有使用while循环,而是使用了for循环,导致增加了一个多余的变量i,而且没有while循环直观简便。看来宵莹还没能熟练地使用三种循环语句,for主要针对循环次数确定的情况,而while和do-while是针对循环次数不明确,但结束条件比较明确的情况。其余的地方也和我相同,将正负数分开讨论。

  • 峻森的最为简单,原因是他没有将正负数分开讨论,事实证明确实不需要对正负数分开讨论。但是他的老毛病不加注释还是没改进。不过像他这么简单的代码好像是不需要再加注释。

三、截图本周题目集的PTA最后排名。

四、本周学习总结

1.你学会了什么?

1.1 C语言哪些数据类型?

1.2 字符型数据需要注意地方?

  • 字符型变量的值可以是字符或整数,也可以被定义为整型变量。即整型变量和字符型变量的定义和值都可以相互交换。例:ch='A'等价于ch=65.
  • 转移字符:由反斜杠加上一个字符或数字组成的。它可以把反斜杠后面的字符或数字转换成别的意义。需要注意:转义字符虽然由多个字符组成,但它是字符常量,只代表一个字符。
  • 字符型数据的输入与输出:getchar(),putchar(),scanf(),printf().其中前两个函数只能处理单个字符的输入与输出,并且是以字符的形式。当使用后两个函数输入输出时都是以整数形式,要注意格式控制符为%c,并且要注意间隔符的输入,否则会将间隔符当成输入字符。

1.3 自增自减运算符?

  • 自增运算符:++

    运算顺序:++n先执行n=n+1,再将n的值作为表达式++n的值。n++先将n的值作为表达式n++的值,再执行n=n++。
  • 自减运算符:--

    运算顺序:--n先执行n=n+1,再将n的值作为表达式--n的值。n--先将n的值作为表达式n--的值,再执行n=n--。
  • 两者共同处:
    • 都有两个功能:一是使变量的值增一或减一;二是取变量的值表达式的值。
    • 运算对象只能是变量,不能是常量或表达式。

1.4 运算符优先级?

1.5 其他内容?

  • 逻辑运算符间的优先级:!>&&>||,他们都低于算术,关系和位运算符。高于赋值与逗号。
  • 求解用逻辑运算符&&和||连接的逻辑表达式,按照从左到右的顺序计算该运算符两侧的操作数,一旦能得到表达式的结果,就停止计算。
  • 右结合的运算符有:条件,赋值和单目算术运算符。
  • 条件运算符可以取代if语句。
  • 逗号运算符可以简化语句。
  • 自增自减的副作用:
int i=2;
printf("i1=%d,i2=%d",i,i++);

此时输出结果为i1=3,i2=2.因为自加自减运算符有使变量值改变的副作用,往往会使得运算的结果与预期的值不相符合。

2.本周的内容,你还不会什么?

对于新学到的一些运算符还不够熟悉,也不是很了解什么时候可以用以及使用后是否会有影响。我想这需要在以后不断的敲代码中练习。

3.循环结构考试总结

1.哪题做错了,怎么改?

第四题:二进制的前导的零

看到了转二进制,自己就懵了,想着自己肯定做不出来。直接开始看下一题,最后自己在晚自习的时候百度查资料研究了出来。

第五题: 单词长度

本题碰到问题
  • 部分正确:主要是碰到多个空格时的错误,第一次是总输出很多个0,第二次是开头结尾多个空格输出的格式错误。在对读取空格后我又加了一个判断条件,最后解决了这两个问题。

2.考试结果满意么,怎么改进?

  • 并不满意,在做第二题的时候就开始手忙脚乱,循环复杂到自己看不懂,后来重新做一遍,才找到了较为简便的做法。

    我想在课下还是得多多敲代码,在完成老师的pta后,再训练下翁恺视频里的一些代码。

3.其他总结。

  • 第二次的上机测试相比于第一次的来说自己是有一些进步的,在基本语句这里并没有出现像上次一样离谱的错误,审题能力也有提高,但是不知道为什么自己代码总比别人复杂,有时一个循环搞不定就想往上再加一个,没有认真考虑自己循环条件或循环内语句是否有缺陷。而且自己的思路仅仅还局限于前几章较为简单的if,while,for.这就导致面对复杂题时,总是一堆语句套来套去,自己都会晕,遇到错误调试时也不好改正,改一个地方其他很多地方也会跟着被改。就不得不重新再写。

C语言第五次博客作业--函数的更多相关文章

  1. C语言第五次博客作业

    一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1. 本题PTA提交列表 2. 设计思路 (1) 首先先定义narcissistic函数. (2)定义四个整形变量n,a,d,cnt,sum, ...

  2. C语言第十一次博客作业---函数嵌套调用

    一.实验作业 1.1 PTA题目 题目:递归实现顺序输出整数 1. 本题PTA提交列表 2. 设计思路 printdigits函数 定义整型变量result存放结果 if n是10的倍数 result ...

  3. 第五周博客作业 <西北师范大学| 周安伟>

    第五周博客作业 一,助教博客链接https://home.cnblogs.com/u/zaw-315/ 二,本周工作查阅项目汇报,班级微信群.对同学们的中期项目汇报进行查看,解决上周留言问题,对及时出 ...

  4. 第十五周博客作业 <西北师范大学| 周安伟>

    第十五周作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/10946673 ...

  5. C语言第七次博客作业--一二维数组

    一.PTA实验作业 题目1:找鞍点 1. 本题PTA提交列表 2. 设计思路 定义n,i,j,ii,jj,a[7][7],flag,max 输入n for i=0 to i=n for j=0 to ...

  6. C语言最后一次博客作业

    1.当初你是如何做出选择计算机专业的决定的? 一开始选专业的时候,说实话我很纠结也很迷茫,对我来说,中学时代,似乎就只要考好试,做好题就可以了,对于未来想要做啥并没有那么多的规划和想法,偶尔跟基友畅聊 ...

  7. C语言博客作业——函数

    一.PTA实验作业 题目1:6-6 使用函数输出水仙花数 1.本题PTA提交列表 2. 设计思路 int narcissistic( int number ) //函数定义 1.定义整数型变量a.i分 ...

  8. 第五周博客作业<西北师范大学|李晓婷>

    1.助教博客链接:https://home.cnblogs.com/u/lxt-/ 2.作业要求链接:https://www.cnblogs.com/nwnu-daizh/p/10527959.htm ...

  9. 第五次博客作业——Alpha2项目的测试

    格式描述: 这个作业属于哪个课程 <课程的链接> 这个作业要求在哪里 <作业要求的链接> 团队名称 你的代码我的发 这个作业的目标 选取非自己所在团队的3个项目进行测试,并写出 ...

随机推荐

  1. PHPstudy端口占用的问题

    phpStudy很多同学下好了 用localhost可能不能读取到WWW目录下的文件,这个是因为端口被占用,打开其他选项菜单 =>打开配置文件=>httpd-conf=>修改端口号如 ...

  2. 一个简单的Springmvc应用开发例子

            SpringMVC应用的配置步骤:         1,将所有的jar包导入到lib文件夹下:             jar在spring框架包-->libs-->所有的 ...

  3. linux Nagios监控

    监控目标 监控目标主机分为四个部分 硬件资源 操作系统 数据库 应用软件 监控目的: 进行服务器性能调整前,知道调整什么,系统瓶颈在什么地方 被一部分必须同时监控,内容包括吞吐量,反应时间,使用率等 ...

  4. R实战 第三篇:数据处理(基础)

    数据结构用于存储数据,不同的数据结构对应不同的操作方法,对应不同的分析目的,应选择合适的数据结构.在处理数据时,为了便于检查数据对象,可以通过函数attributes(x)来查看数据对象的属性,str ...

  5. php session函数

    session_start() 开启session 使用session前需要使用该函数 session_id() 获取当前回话的sessionid session_save_path($path) 如 ...

  6. freemarker报错之十三

    1.错误描述 freemarker.core.ParseException: Token manager error: freemarker.core.TokenMgrError: Unknown d ...

  7. hi3531的h264压缩中修改波特率

    typedef struct hiVENC_ATTR_H264_CBR_S { HI_U32 u32Gop; HI_U32 u32StatTime; HI_U32 u32ViFrmRate; HI_F ...

  8. Invalid property 'url' of bean class [com.mchange.v2.c3p0.ComboPooledDataSource]

    1.错误描述 INFO:2015-05-01 13:13:05[localhost-startStop-1] - Initializing c3p0-0.9.2.1 [built 20-March-2 ...

  9. CSS精心整理的面试题

    CSS精心整理的面试题 1.设置边框的样式用border-style实现,设置边框的颜色用border-color实现 2.CSS的语法由选择器.属性.值三部分组成 3.设置一个div的最小宽度为50 ...

  10. Caused by: java.lang.ClassNotFoundException: javax.persistence.Entity

    1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...