一、PTA实验作业

6-3 使用函数判断完全平方数:

1. 本题PTA提交列表:

2. 设计思路:

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

  • 1.一开始考虑让输入值N去整除一个循环变量i,i随着循环次数改变而改变,N每次除两次i,能得到1的值时便为完全平方数,返回1值,否则当i>N/2循环结束,则返回0值;一开始觉得这个做法很可行,但实际上一经运行调试后发现错误很多,后来发现是因为没有考虑1和0的特殊性,但是就算考虑了也仍不对,在同学的建议下用了逆向思路即若i*i==N,return 1;用i值来凑N值;然后现在又用第一次的思路做了一遍,想弄清之前思路到底错哪儿,却发现一次就过,这才明白先前没有弄懂当被调用的函数一旦Return后就不会再执行后面的语句,所以之前考虑了一堆条件,越复杂越容易错;

  • 2.这张是现在用一开始的思路做的正确答案;
  • 3.可是后来又发现了一个问题,当被调用函数返回一个值后不是应该马上结束执行吗,为什么当我把if(n==0||n==1) return 1;语句放在循环外时是对的,而将其放在循环里面时则不正确,似乎是个无效语句???

  • 4.这张图是把if(n==0||n==1) return 1;语句放在循环内,是错误的,不知道为什么???希望有大神帮忙解答;

6-6 使用函数输出水仙花数:

1. 本题PTA提交列表:

2. 设计思路:

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

  • 1.这题刚开始提交时PTA提示运行超时,同学建议优化一下算法,去掉不必要的步骤,于是重新写了一遍,

  • 2.这张是第一次写的有些复杂的代码;

  • 3.这张是第二次优化后的代码,还是显示运行超时;
  • 4.于是重新动手写了一遍代码,这次思路比之前清晰许多,信心满满地提交后,PTA回答了我四个字“部分正确“,这个代码调了两天,有点崩溃,后来请教同学,同学提醒我次方数应等于输入数的位数,可能因为惯性思维,加上没注意审题,以为水仙花数都等于每位数取余后的三次方,后来又添加了一步计算整数位数的算法,答案还是错的,在同学提示下发现没给统计整数位数的count值赋初值,给count赋初值后答案才正确;

    6-7 使用函数输出指定范围内的完数:

    1.本题PTA提交列表:

    2. 设计思路:



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

  • 1.一开始审题时有点懵,不知道因子是什么,以为只要不等于它本身的数都可以当加数,后来百度才知道因子相当于约数,然后才开始做题;
  • 2.调试时发现因为i要满足i<=number/2,所以number=1值始终进不了循环,于是另外给1值设置了执行步骤;
  • 3.调试时又发现sample2无法实现输出,即当一个区间内并无完数时的情况没有考虑,一开始找不到作为无完数的依凭条件,后来就新设置了变量count,用来统计完数个数,当count==0时输出No perfect number;

    二、同学代码结对互评:

    1.雅慧同学的代码;

2.我的代码;

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

  • 1.这题是判断完数的代码,我是将i循环,用number取余i,当等于0时,就将其加在sum值上;而雅慧是设置两个变量i和j,用枚举法将其列出,符合i*j==number的就加在sum上,这样做也是一种逆向思维,即用i和j去凑number,可是会比较麻烦,还要考虑i和j是否相同的情况,而用直接思维去做会更简单,所以我更喜欢我的。
  • 2.第一段代码后面逻辑有点乱,不太清楚c的作用是什么,其实可以直接判断是否a==number,然后返回0或1;

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

四、本周学习总结:

1.你学会了什么?

1. C语言哪些数据类型?

  • 1.整型变量和常量,浮点型变量和常量,字符型变量和常量;

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

  • 1.'A'和‘a’是不同的字符型常量;
  • 2.‘A’+1对应字符‘B’;
  • 3.小写字母转为大写字母:ch=ch-'a'+'A'或者ch=ch-'b'+'B'等等;大写字母转化为小写字母:ch=ch+'a'-'A';
  • 4.小写字母比大写字母的ASCLL码多32;
  • 5.getchar()和putchar()只能处理单个字符的输入和输出;
  • 6.空格与回车符都会被%c吸收;
  • 7.‘1’的ASCLL码是49;‘A’的ASCLL码是65;

    3. 自增自减运算符?

  • 1.前缀++先+1再赋值,后缀++先赋值再+1;

    4. 运算符优先级?

  • 2.单目运算符,条件运算和赋值运算的结合放向从右到左,算数运算(双目运算符),移位运算,关系运算,位逻辑运算和逻辑运算结合方向从左到右;

    5. C语言哪些表达式?课堂派哪里做错,做错的请在这里分析原因?

  • 1.当赋值符左边的变量和右边的变量类型不同时,先计算右边的值,再赋值给左边,且要转换成左边的变量类型;
  • 2.double 3得到3.0;int3.8得到3;
  • 3.前缀++(--)和后缀++(--)的区别不是很清楚,前缀++先+1再赋值,后缀++先赋值再+1;
  • 4.当a=3时,a+=a-=a*a的值算错,原因是没意识到a是一个变量,在从右往左算的过程中a为9时仍把a当3来计算;
  • 5.不明白8>6>3的值是多少,即对关系运算符的原理不清楚,后来明白单目运算符从左往右结合,先算8>6,得1(关系运算符的结果不是1就是0),很明显1>3不成立,所以得0;

    6.其他内容?

  • 1.异或:相同为0,不同为1;
  • 2.取反(位非运算):0变为1,1变为0;
  • 3.按位“与”和异或的规则相反,按位“与”是不同为0,相同为1;

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

  • 1.转义字符的用法不太清楚;

  • 2.ASCLL码对应的字符不太清楚;
  • 3.进制间的转换不是很清楚;

    3.循环结构考试总结:

  • 1.7-1 求交错序列前N项和这题卡在没有将sum和number定义成double;
  • 2.7-2 输出三角形字符阵列这题在字母的输出上卡住,没认真审题,字母的输出从A开始,而不是任意输入字母;
  • 3.7-4 小于m的最大的10个素数 这题卡在将i的初值设成1,难怪没有任何输出,因为任何数取余1都得0,毫无疑问,后来将i初值改成2才对了;
  • 4.因为在前三题磨蹭的时间太多,第4,5题都来不及完成,很遗憾,但也在意料之中,平时做题也是这样磨蹭,考试肯定快不了,所以一定要再加快速度,平时多挑战一点稍难的题目,总觉得自己的应变能力也不行,题目稍难便会卡住;

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

1.后面两题错了,一个是进制的转换不熟悉,另一个是字符的输入不熟练,其实这两个问题在平时也有意识到,但总是想着以后总会解决,便耽搁了下来,在这里想送两句话给自己自勉一哈:明日复明日,明日何其多;我生待明日,万事成蹉跎;

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

1.不满意,有问题要及时解决,平时多问几个为什么,虽然自己问的问题不一定都有意义或者有确切答案,但只要可以解决疑惑,一切都是值得的;

3.其他总结:

  • 1.预习环节还是要做好,课后复习也很重要,课堂效率一定要高,课后有问题一定要解决,敲代码的时间一定要够,反应力和速度一定要加快;
  • 2.随着对C语言的深入学习,慢慢理解了它与高数之间密不可分的联系;
  • 3.看了一些大神的博客后,发现自己还是老在一些地方犯同样的错误,也因此到不了更高的水平;

C语言函数2的更多相关文章

  1. 从linux0.11中起动部分代码看汇编调用c语言函数

    上一篇分析了c语言的函数调用栈情况,知道了c语言的函数调用机制后,我们来看一下,linux0.11中起动部分的代码是如何从汇编跳入c语言函数的.在LINUX 0.11中的head.s文件中会看到如下一 ...

  2. C语言(函数)学习之strstr strcasestr

    C语言(函数)学习之[strstr]&[strcasestr]一.strstr函数使用[1]函数原型char*strstr(constchar*haystack,constchar*needl ...

  3. C语言函数sscanf()的用法

    从文件读取数据是一件很麻烦的事,所幸有sscanf()函数. C语言函数sscanf()的用法 sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: int sscanf( st ...

  4. 不可或缺 Windows Native (6) - C 语言: 函数

    [源码下载] 不可或缺 Windows Native (6) - C 语言: 函数 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 函数 示例cFunction.h # ...

  5. C#委托与C语言函数指针及函数指针数组

    C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...

  6. swift1.2语言函数和闭包函数介绍

    swift1.2语言函数和闭包函数介绍 在编程中,随着处理问题的越来越复杂,代码量飞速增加.其中,大量的代码往往相互重复或者近似重复.如果不采有效方式加以解决,代码将很难维护. swift1.2语言函 ...

  7. Swift 1.1语言函数参数的特殊情况本地参数名外部参数名

    Swift 1.1语言函数参数的特殊情况本地参数名外部参数名 7.4  函数参数的特殊情况 声明定义有参函数时,为函数的每一个参数都定义了参数名称.根据参数名定义的形式不同,函数参数包括本地参数和外部 ...

  8. C语言函数指针基础

    本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础.如果你不讨厌事无巨细,请尽情阅读吧. 函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具.本文将从C ...

  9. 动态修改 C 语言函数的实现

    Objective-C 作为基于 Runtime 的语言,它有非常强大的动态特性,可以在运行期间自省.进行方法调剂.为类增加属性.修改消息转发链路,在代码运行期间通过 Runtime 几乎可以修改 O ...

  10. keil or c51 汇编调用c语言函数 容易忽视的问题

    最近,在用keil 写一个小程序时,想实践一下从汇编调用 C语言函数,我们都知道C语言调用汇编函数讨论得较多,但反过来,从汇编中调用C语言的函数未见深入分析:在开始的时候,还是忽视了一个问题,就是对现 ...

随机推荐

  1. JDK1.5-1.7的特性

    JDK1.5新特性: 1.自动装箱与拆箱 2.枚举(常用来设计单例模式) 3.静态导入  (import static java.lang.Math.*;) 4.可变参数 eg: public sta ...

  2. Struts2【开发Action】知识要点

    前言 前面Struts博文基本把Struts的配置信息讲解完了.....本博文主要讲解Struts对数据的处理 Action开发的三种方式 在第一次我们写开发步骤的时候,我们写的Action是继承着A ...

  3. as版本切换导致项目损坏,无法启动。环境依赖混乱

    以下方法都不管用, 新建一个项目setting的 把main拷过去就行了!!!! Error:(5, 0) Gradle DSL method not found: 'google()'Possibl ...

  4. [BZOJ2503][HAOI2006]均分数据

    BZOJ Luogu sol 如果已经确定了一个序列,现要求把这个序列分成m个连续段作为答案,那么就可以用一个显而易见的DP DP显然可以得到当前序列下的最优解. 所以模拟退火瞎JB改一改序列每次DP ...

  5. [BZOJ1070] [SCOI2007] 修车 (费用流 & 动态加边)

    Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使 ...

  6. Handsontable的前端分页与数据库分页

    Handsontable虽然处理速度很快,但当数据量达到10W+的时候很容易导致浏览器内存泄漏,这时候可以用分页来解决.官网提供了前端分页demo,测试后发现也只能处理低于10W的数据,而且调试的时候 ...

  7. Java中常见数据结构List之LinkedList

    二,LinkedList 1, linkedList底层数据结构 linkedList底层是一个双向链表 2,LinkedList和ArrayList的对比 1.顺序插入速度ArrayList会比较快 ...

  8. GeoJSON JS判断某一点是否在某一区域范围之内

    GeoJSON JS判断某一点是否在某一区域范围之内 算法: function isInPolygon(checkPoint, polygonPoints) { var counter = 0; va ...

  9. 安装anaconda与tensorflow

    在安装Anaconda之前,有的已经安装过一个Python版本了,但是又不想删除这个Python版本,该怎么办呢? 安装anaconda与tensorflow一条龙 jupyter notebook ...

  10. 使用Dreamweaver正则表达式替换href中的内容

    在Dreamweaver中使用正则表达式替换href中的内容,就像下面这些href中的内容复杂多样的情况下,href="/html/u.html",href="/tuho ...