这个作业属于那个课程 | C语言程序设计II |
---|---|
这个作业要求在哪里 | |
我在这个课程的目标是 | 能够熟悉掌握所学编程语言并在做作业的过程中熟悉语法 |
这个作业在那个具体方面帮助我实现目标 | 写博客的过程中回顾做作业的过程巩固所学知识 |
参考文献 | 百度百科,学长的帮助 |
1.PTA实验作业
1.PTA实验作业
1.1 题目名
1.1.1数据处理
数据表达:
定义int类型变量sum和字符字符型变量N。sum用来累计二进制转化为的十进制,N用来按位输入并判断是否为二进制数
数据处理:
{
定义int变量sum=0
定义字符型变量N='0'
当N不等于\n时
{
输入字符N
如果N为\n跳出循环
如果N为1或0则执行sum=sum*2+N-'0'
否则输出error input!
}
}
输出sum
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
111 | 7 | 测试较小二进制数 |
11111111 | 255 | 按照题目要求测试二进制数 |
34 | error input! | 测试不是二进制的数 |
1.1.4 PTA提交列表及说明
说明:首先要考虑的是如何判断输入的数为二进制数,我一开始使用的方法是用int类型的N然后用%的方式逐步判断,这种方法在输入数据较小时可以使用,但是int的范围很小,一旦超出范围就会变成奇奇怪怪的值,于是就改成了long int和long long int,但是范围依然不够,于是在室友的提醒下改用了字符型的N,输入字符是“%c”,字符串是“%s”,如果输入的是字符串但是用的却是“%c”的话就会在循环体中一位一位的输入,这样就可以达到按位判断的目的。接下来是二进制转十进制,十进制转二进制的一种方法是用二去除然后看余出来的数字,在这里转换的方法也就是倒过来,二进制的位数实际上就是余出来的数,只要把余出来的数乘二再加上下一位二进制数一或是零就可以把它转化为原来的十进制数。
1.
2.
1.2 题目名
1.1.1数据处理
数据表达:
定义了int型变量o,S,r,i。o用来存放计算出的光棍,S用来输入题目要求的数,r用来存放o%S得到的数,i用来对光棍计数。
数据处理:
{
定义int型变量o=1,S,b=0,i=0,r=1。
输入S
当o<s时
{
计算o的最小值并且i记录o的光棍数
}
当r不等于0的时候
{
r为o%S,输出o/S的值
{
如果r为零就跳出循环
}
{
否则o就会增加光棍数并且i也会计数
}
}
输出i+1
}
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
31 | 3584229390681 15 | 按题目要求测试 |
999 | 11122233344455566677788 27 | 测试最大数 |
11 | 1 2 | 测试输入数为光棍数 |
1.1.4 PTA提交列表及说明
说明:不知道为啥找不到我的提交,于是在全部提交里找到了正确的那一次,但是我还是会把做题时出现的问题一并说出来。一开始我想的还是用一个变量来存放光棍,但是之后还是出现了数据溢出存放不下的情况,改成double类型后却发现在光棍增加到15位的时候就会莫名其妙的丢失精度,在苦试无果之后又经过室友的提醒改变了整体的思路,用模拟除法运算的方法避开储存数据直接按位一步一步的输出了目标值。
1.
2.
2.代码互评
3.学习总结
3.1 学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
8/11.6 | 四天 | 550左右 | while语句 | 关于各种数据的极限还是不太熟练 |
3.2累计代码行和博客字数
时间 | 博客字数 | 代码行数 |
---|---|---|
第一周 | 547 | 388 |
第二周 | 897 | 418 |
第三周 | 1017 | 426 |
第四周 | 834 | 279 |
第五周 | 1215 | 486 |
第六周 | 808 | 493 |
第七周 | 871 | 514 |
第八周 | 1238 | 550 |
3.3学习感悟
3.3 学习内容总结和感悟
3.3.1 学习内容总结
3.3.2 学习体会
这次的PTA花费了我巨量的时间,这次的题目不是难在逻辑运或是语法不会,而是对数据不够了解,遇到什么题都是想着直来直往的输出答案,而没有考虑其他更加奇妙的办法比如说避开存储大数据一位一位的输出,这样不仅能够节省空间还能降低运行的复杂程度,所以在以后的学习中我需要学的不仅仅是编程的语法,还有思考问题的方式,要想着怎样才能更巧妙的解决问题。