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

C语言博客作业--函数

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

标签:组合   调用   原因   理解   总结   根据   程序   循环   考试总结   

一、PTA实验作业

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

1. 本题PTA提交列表

技术分享图片
技术分享图片

2. 设计思路

  • 1定义函数narcissistic( int number )
  • 2定义局部变量sum=0,n=number,end
  • 3当number为三位数时
  • 4若number/10!=0进入循环5
  • 5end=number%10,sum=pow(end,3)+sum,number=number/10
  • 6对最高位不满足循环条件的剩余number值sum=pow(number,3)+sum
  • 7当number为四位数时
  • 8若number/10!=0进入循环9
  • 9end=number%10,sum=pow(end,4)+sum,number=number/10
  • 10对最高位不满足循环条件的剩余number值sum=pow(number,4)+sum
  • 11如果sum=n,返回1,否则0

  • 1定义函数void PrintN( int m, int n )
  • 2定义局部变量i
  • 3i=m+1;i<n,i++循环调用上述函数判断是否符合水仙花数,是的话输出

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

一开始编辑时忘了number的改变性,导致最后的sum与number没有可比性,错误

技术分享图片

改正之后发现输出的数据中没有370,调试后发现自己的条件使其没有进入循环

技术分享图片
技术分享图片

改正后输出正确,但是放到pta上答案错误,自己根据提示调试发现自己的数据输出有局限性

技术分享图片

调整思路后,重新修改编写后部分正确

技术分享图片

后发现自己题意没有理解好,当number四位数时要四次方,修改增加后正确

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

1. 本题PTA提交列表

技术分享图片
技术分享图片

2. 设计思路

  • 1定义函数factorsum( int number )
  • 2定义局部变量j.sum=0
  • 3当number=1时返回1
  • 4j=1;j<=number/2;j++循环5
  • 5若number%j==0,则sum=sum+j
  • 6返回最终sum的值

  • 1定义函数void PrintPN( int m, int n )
  • 2定义局部变量k,j
  • 3k=m;k<=n;k++,循环4,5,6
  • 4若k==factorsum(k),输出“k =”,当k=1时直接再输出“ 1”
  • 5j=1;j<=k/2;j++,循环6
  • 6若k%j==0,输出“ j”,当j<k/2时输出“ +”
  • 7每一轮循环结束输出“\n‘‘
  • 8若j==1&&m!=1,则输出No perfect number

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

技术分享图片

发现输出没有换行,多输出了No的不满足部分

技术分享图片

调整后输出感觉相同

技术分享图片

pta部分正确,调试修改后发现自己题意理解不够,继续修改

技术分享图片

pta显示格式错误

技术分享图片

调试发现自己多了空格,改正后正确

题目三:7-1 求组合数

1. 本题PTA提交列表

技术分享图片

2. 设计思路

  • 1定义整型变量m,n,浮点型变量result
  • 2输入m,n的值
  • 3调用函数 result=fact(n)/(fact(m)*fact(n-m))
  • 4输出result的值

  • 1定义函数fact(int n)
  • 2定义整型变量i浮点型变量product=1
  • 3i=1;i<=n;i++循环4
  • 4 product=product*i;
  • 5返回product的值

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


一开始编写后提交发现部分正确,对于错误点考虑m=n/2的情况不太理解,自己改了一些不必要的地方,

最后发现是由于自己对product的定义为整型的问题,当阶乘书数太大就不正确

二、同学代码结对互评

1.同学互评照片

技术分享图片
技术分享图片

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

林岑的代码

技术分享图片

我的代码

技术分享图片

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

(1)我的思路是利用取余得个位的方式,先计算位数,再利用已知位数不停把个位的数乘上10的某个次方变成高位逆序,最后考虑末位0的问题

(2)林岑的思路也有用到取余得个位的方式,但是她比较巧妙的利用循环, k=k*10+m把原先个位的数跟着循环升高位,输出逆序

(3)我的代码比较容易想到与入手,容易理解,但是很繁琐,不适用,林岑的代码比较简洁,用法也很巧妙,也避开一些假设讨论,在同一个循环语句中同时达到自己想要的效果,简洁明了。

(4)我喜欢林岑的代码风格

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

技术分享图片

四、本周学习总结

1.你学会了什么?

1.1 C语言哪些数据类型?

整型

  • 有符号:int; short[ int ](范围 [-32768,32767] );long[ int ]
  • 无符号(自然数):unsigned[ int ];unsigned short [ int ] (范围 [0.65535] ) ;unsigned long [ int ]

字符型

  • char
  • 可以用整数来表示字符 ch=‘A‘等价于ch=65

实型

  • float(有效数字7~8位)
  • double(有效一般15~16)
  • 数值精度和取值范围是两个不同的概念

实型常量

  • 浮点表示法(实数的小数形式)

    必须有小数点

  • 科学计数法(实数的指数形式)

    e前有数据,e后整数

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

  • ‘a‘和‘A‘,0和‘0‘不同
  • 整型变量和字符型变量的定义和值都可以相互交换

1.3 自增自减运算符?

  • ++n的运算顺序是:先执行n=n+1,在将n的值做为表达式++n的值
  • n++的运算顺序是:先将n的值做为表达式n++的值,在执行n=n+1
  • 自增自减运算符的运算对象只能是变量,不能是常量或表达式。3++或++(i+j)非法

1.4 运算符优先级?

  • 赋值运算符,条件表达式,与!,单目的算术运算符为右结合
  • 双目的算术运算符与关系运算符,逻辑运算符与逗号运算符为左结合

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

  • 算术表达式, 赋值表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式


    技术分享图片
    自己在算时认为算aa=9,a=a-a=3-9,a=a+a=3-6
    实际应为a
    a=9,a=a-a=3-9,a=a+a=-6-6=-12

技术分享图片
自己在答这道题时认为‘1’与1不同,就认为不能确定,但即使是‘1‘,字符常量之间也是有数值差量可以转化。

1.6 其他内容?

  • 十进制的首位数字不能是0,八进制的首位数字必须是0,十六进制首位必须要有前缀0x或0X
  • 强制类型转换
    (类型名)表达式;
    int(3.8)得到3
  • 位运算 (二进制位运算)
    符号:&,|,^,-,<<,>>

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

  • 对于自增自减运算符的使用与计算不够熟练,容易出错
  • 字符类型的使用,输出输入
  • 运算符的优先级与结合性计算也易出错
  • 进制之间的转换计算
  • 对于一些不常用的表达式的理解不够

3.循环结构考试总结

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

  • 第二题字符的使用自己不够熟练,在定义与字母的转换增加上不熟练,自己在考试时是利用调试工具了解到A的数值65再利用字符与数值的转换关系得出正确。
    现在知道应该定义char ch=‘A‘,利用ch=ch+1得到后面字母
  • 第四道题二进制的计算,0的个数自己一开始思绪比较乱,编写的程序复杂也不正确,随后自己以除二的方式去考虑它的实际有效位数,再利用总的减去求得

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

  • 不满意
  • 自己应该多接触不同的题型,锻炼自己的思维能力
  • 在编写程序时要思考好再编写,减少自我混乱
  • 提高自我的查错能力,尽量自己思考找出运行失误之处

3.其他总结

  • 在打代码时要注意空格与换行问题,要格式准确
  • 对于空格问题也可以利用Dev-C++调试看出
  • 自己的预习要更透彻,课本要看仔细些

C语言博客作业--函数

标签:组合   调用   原因   理解   总结   根据   程序   循环   考试总结   

原文地址:http://www.cnblogs.com/linxiaolu/p/7854144.html

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