一、PTA实验作业

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

1.本题PTA提交列表

2.设计思路

1.int mod,rever;分别表示余数和返回的数
2.while(number%10 || number/10) 保证取了每一个位置上的数,不满足时,return rever
3.mod=number%10 取个位上的数字
4.number/=10 去掉个位上的数
5.rever=rever*10+mod,返回第2步

3.本题调试过程碰到问题

没遇到问题,pta一次通过。

题目2.使用函数输出水仙花数

1.本题PTA提交列表

2.设计思路

(1).先判断是否为水仙花数的函数思路:
1.int sum=0,i,j,num=number,num1=number 用num和num1存放number的值
2.利用for(j=1;num1/10;j++) num1/=10 算出该数的位数 j
3.while(number%10 ||number/10),执行4-6步 取出每一位上的数字
4.i=number%10 取个位上的数字
5.sum=pow(i,j)+sum
6.number =number/10 去掉个位上的数
7.如果sum=num return 1 否则 return 0
(2).打印区间内的水仙花数
1.int i 定义一个循环变量
2.for(i=m+1;i<n;i++) 依次取区间内的数
3.if(narcissus(i)) printf(“%d\n”) 调用函数,如果是水仙花数就输出

3.本题调试过程碰到问题


1.在这里num1没有被重新赋值,导致程序死循环,但并不弹错,所以pta会提示运行超时

2.由于刚开始没有用另一个变量存放number的值,导致每次sum都不会和number相等,每次都返回值为0 一直提示编译错误

题目3.求组合数

1.本题PTA提交列表

2.设计思路

1.int m,n,result 表示输出的两个值m,n ,和输出的组合数
2.读取m,n
3.result =fact(n)/(fact(m)fact(n-m)) 根据题目给的计算公式计算并且调用函数fact
4.自定义函数fact :①int i ;double sum=1 循环变量i和累乘结果sum
②for(i=n;i>0;i--) sum=sum
i
③return sum
5.输出 计算结果 result

3.本题调试过程碰到问题

本题没有遇到什么问题 ,pta一次通过,截图是数据正常进入自定义函数

二、同学代码结对互评

1.同学互评照片

2.我的代码,同学代码截图

张弛的代码

我的代码

3.我和同学代码的不同点,各自的优势

不同点和优势:1.在计算数字的位数时,我的方法比他的方法更加巧妙,这让我更加体会到for循环的有趣的地方。
2.他pow函数里面的数据类型错了,pow(double,int)才是正确的
3.他用了for循环计算水仙花数,而我用的是while循环,此处区别不大

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

四、本周学习总结

1.你学会了什么

1.1 c语言有整型,浮点型,字符型
1.2 字符型数据需要注意的地方:需要用单引号括起,可以像整数一样进行运算,转义字符无法在屏幕上显示
1.3 自增自减运算符,需要考虑其所在的位置,若在前,则表达式的值为该值+或-1,若在后,则表达式的值不变,但变量值发生自增或自减
1.4 逗号<赋值<条件<逻辑与和或<关系<算术<逻辑非
1.5 c语言的表达式有赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式和逗号表达式
1.6 利用for 循环中的循环变量来解决某些问题,比如计算数的位数
1.7 强制类型转换

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

1.运算符的优先级还不是很熟悉
2.利用逻辑运算符解决实际问题的能力太弱
3.关于字符型变量的使用太少
4.PTA上几个难题不会做

3.循环结构考试总结

1.后三题做错了。
① 素数这个题,突然脑子短路了一样,考试前还看过自己写的pta,一考试就傻了一样,很烦。 素数这里的判断,我都不知道当时怎么想的。
② 二进制这个题,我当时脑子里就只有想着怎么把十进制用c语言的方法转成二进制(三个二进制数相加=一个八进制数,四个二进制数相加=一个十六进制数),却忘了最基本的除二取余法。
③ 感觉思路不是很清晰,应该只能完成一部分。

2.不满意,嵌套循环和比较难的函数题,自己的思维感觉很局限,有时候很难想到用什么方法去解决问题。自己应该要把基础的知识点牢记,然后做好并理解透PTA的每一个题。
3.虽然这次考试自己的成绩不理想,但是自己不可以自暴自弃。对自己还是要有信心,不会做的题要花更多的时间去思考。