码迷,mamicode.com
首页 > 编程语言 > 详细

C语言函数2

时间:2017-11-18 18:48:53      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:ber   复杂   输入   运算符   count   注意   运算   正确答案   技术分享   

一、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.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

三、截图本周题目集的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.哪题做错了,怎么改?

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

3.其他总结。

C语言函数2

标签:ber   复杂   输入   运算符   count   注意   运算   正确答案   技术分享   

原文地址:http://www.cnblogs.com/guoruiqian/p/7856323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!