C语言博客作业--函数

一、PTA实验作业

题目1:使用函数输出一个整数的逆序数

1. 本题PTA提交列表

2. 设计思路

1.定义函数 reverse( int number),类型为int
2.定义整型变量n,inverse=1;inverse表示逆序数
3.判断number的正负,如果number小于0,则n=-number;否则n=number
4.inverse=inverse*10+n%10
5.n=n/10;
6.重复步骤4.5,直到 n=0
7.再判断一次number的正负,如果number小于0的话,则返回-inverse;否则返回inverse
8.结束算法

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

最初始的代码没有考虑到要判断正负的问题,所以提交后提示说没有考虑负数和0的情况;后来改为以下的样子后,提交还是显示部分正确

发现是调用的while循环语句的条件写错,理解错while是直到条件不符合时才输出

题目2:水仙花数

1. 本题PTA提交列表

2. 设计思路

调用函数 narcissistic( int number )
1.定义整型变量int i,x,h,y,count,sum;
2.sum=0;count=0;x=number;y=number;
3.判断number的位数,x=x/10,count++,直到x=0
4.h=y%10,sum=sum+h,y=y/10
5.判断分解得到的数的n次方之和是否等于number,即重复步骤四
6.如果sum=number,return 1;否则return 0
调用函数void PrintN( int m, int n )
1.定义整型变量j
2.如果narcissistic(j)=1,输出m
3.重复步骤2;
4.结束算法

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

开始的时候PrintN函数拼错,导致一直是编译错误

后来在群里问了同学后改过来,但还是输出错误

调试之后发现在输出时y的会变化,它会跟着y=y%10的值变化

后来发现原来缺少y/10后的中间值,再定义一个整型变量h,h=y%10;就可以解决

题目3:求组合数

1. 本题PTA提交列表

2. 设计思路

1.定义两个整型变量m,n;定义浮点型变量result
2.输入m,n
3.调用fact(int n)求阶乘
4.result=fact(n)/(fact(m)*fact(n-m))
5.输出result

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

开始时没有很好的理解调用函数的意思,写出初始代码如下


开始时想的太复杂,没有考虑函数的意义,一直输不出来,后来仔细阅读课本有关函数的章节,和在同学的解释中才明白函数的定义,而后改成了这样


答案输出0,没有定义函数里形参n,该类型应该为int型,还有输出的时候忘了解释是输出result,怪自己太粗心,犯这种低级错误

二、同学代码结对互评

1.同学互评照片。

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


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

我和亚琴的代码最大的不同就是判断n的正负性,我是利用赋值,然后把他们的情况放在一起讨论,而亚琴的做法则是把他们分开讨论的,我觉得这样写的过于繁琐了;
各自的优势的话,相对来说,我的代码比较简洁,而亚琴的代码相对来说比较容易理解,可读性应该更高一点,我在写代码时总是忘记写注释,而亚琴的代码即使比我的复杂,但是他的代码有很多的注释,让人可以很容易就可以弄懂。

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

四、本周学习总结

1.1 C语言哪些数据类型?

C语言的数据类型有三种,分别是整型、字符型、实型

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

字符型和字符型常量:
每个字符型数据在内存中占用一个字节,用于存储它的ASSII码;
整型变量和字符型变量的定义和值都可以相互交换;
互换整型变量和字符型变量的定义和值时,整型数据的范围是有效的ASSII码;
字符型常量指单个字符,用一对单引号及其所括起来的字符来表示;
‘a’和‘A’是不同的字符型常量,‘0’和 0是不同类型的常量,前者是字符型常量,而后者是整型变量;
转义字符由反斜杠加上一个字符或数字组成

1.3 自增自减运算符?

自增运算符++和自减运算符--有以下两个功能:
(1)使变量的增1或减1;例:若n是一个整型变量并已赋值,则++n和n++相当于n=n+1;--n和n--都相当于n=n-1;
(2)取变量的值作为表达式的值;例:计算表达式++n和n++的值,则++n的运算顺序是:先执行n=n+1,再将n的值作为表达式++n的值;n++的运算顺序是:先将n的值作为表达式n++的值,再执行n=n+1。
自增运算符和自减运算符的运算对象只能是变量,不能是常量或表达式

1.4 运算符优先级?

在四则运算中,遵循“先加减后乘除”的运算规则,在C 语言中也遵循运算符的优先级从高到低顺序计算;如果操作数两侧运算符的优先级相同,则按结合性(结合方向)决定计算顺序,若结合方向为“从左到右”,则操作数先于左面的运算符结合;若结合方向为“从右到左”,则操作数先于右面的运算符结合

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

1.算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式。
2·课堂派数据
表达类型与表达式
(1)第二题,x++的运算顺序是先把x作为表达式的值,再执行x++;误以为是把x=x++后再代入运算
(2)8>6>3;运算符的优先级相同,从左到右开始计算,8>3为真,取1,1>3为假,
(3)表达式(j=3,j++)的值,j++的运算顺序是先把j作为表达式的值,再执行j++,故结果为3

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

本周,函数的运用还不是很灵活,对于一些简单的题目可以写出代码,但是较为复杂的函数调用就不知道该怎么用函数去实现了;还有数据表达类型还不是很理解,对于二进制,八进制,十进制和十六进制的运算原理不理解

3.循环结构考试总结(全部同学都要写)

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

本周的上机考试几乎所有的题都有做错,准确的来说,应该是就看了第一题,在第一题卡住之后,后面的也就没有思路去看;以下是在考试结束后重打的前三题,最后的两题目前还没有弄懂
7.1
7.2
7.4

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

对考试的结果非常不满意,考试时完全忘了学的基础知识,连最简单的题都没有做出来;对基础的知识掌握的很不好,可能也是平时的时候对题目的思考不够多,过于依赖同学,以后认真思考每一道题,遇到问题自己独立思考,把更多的时间和精力放在c语言的学习。

3.其他总结。

这次的上机考试考得很差,对题目的分析不到位,还有遇到问题时,不会自己找出其中的错误,可能是基础的知识并没有掌握好,导致很多问题不会自己解决;还有自己的时间安排的很不科学,感觉上好像是说有花很多时间在学习上,但是事实上并没有多大的用,每天让自己活的很累,但是该学的还是没有学会;所以,计划好自己的时间,做好自己的事。

原文地址:https://www.cnblogs.com/2223ch/p/7840399.html