C语言I博客作业09
| C语言程序设计 | 2020计算机3班 |
| 作业要求 | 作业要求 |
| 课程目标 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 |
| 作业帮助实现目标的具体方面 | 多次使用不熟练的内容,强化记忆从而达到目标 |
| 参考文献 | C语言程序设计 |
| 学号 | 20209003 |
1.PTA实验作业

从PTA题目集中选出2个你最满意的题目完成.
1.1 水仙花数
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:本题要求编写程序,计算所有N位水仙花数。
输入格式:
输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:
按递增顺序输出所有N位水仙花数,每个数字占一行。
-
1.1.1 实验代码截图


-
1.1.2 数据处理
数据表达:
变量及其类型:
整型变量:sum,i,x。
浮点型变量:a,N。
变量由来:通过题目已知定义。
数据处理:
表达式:N>=3&&N<=6,x=pow(10,N-1),i = x,i<=x*10-1,i++,x = i,a = x % 10,x = x / 10,sum = sum + pow(a, N),i == sum,sum = 0,N=7。
流程结构:循环结构和分支结构。
-
1.1.3 造测试数据
| 输入数据 | 输出数据 | 说明 |
|---|---|---|
| 3 | 153\370\371\407 | 三位数的所有可能性 |
| 6 | 548834 | 六位数的所有可能性 |
-
1.1.4 PTA提交列表及说明

1.答案错误:sum归零的位置放错地方,x变化后没有回归原来的数字。
2.部分正确:当N=7时,运行超时,现在尚且没想到好办法解决问题,暂且用的蠢办法,即把N=7的所有可能都列出来。
1.2 统计某类完全平方数
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。
裁判测试程序样例:

-
1.2.1 实验代码截图

-
1.2.2 数据处理
数据表达:
变量及其类型:
整型变量:i。
变量由来:通过题目已知定义。
数据处理:
表达式:i < 100,int i = N,i == (int)sqrt(i) * (int)sqrt(i)&&i>=100,i / 1000 == 0,(i % 10 == i / 10 % 10) || (i % 10 == i / 100 % 10) || (i / 100 % 10 == i / 10 % 10),i / 10000 == 0,(i % 10 == i / 10 % 10) || (i % 10 == i / 100 % 10) || (i / 1000 % 10 == i % 10) || (i / 1000 % 10 == i / 10 % 10) || (i / 100 % 10 == i / 10 % 10) || (i / 1000 % 10 == i / 100 % 10)。
流程结构:分支结构。
-
1.2.3 造测试数据
| 输入数据: | 输出数据 | 说明 |
|---|---|---|
| 0 100 | cnt = 1 | 只有100既是完全平方数,又至少有两位数字相同 |
| 105 500 | cnt = 6 | 在105--500的区间内有六个数既是完全平方数,又至少有两位数字相同 |
-
1.2.4 PTA提交列表及说明

1.部分正确:遗漏了需要至少有两位数字相同的条件。
2.答案错误:将return 0;放错位置。
2.代码互评
-
统计某类完全平方数
-
同学代码截图
-
同学一

-
同学二

-
-
自己代码截图

-
-
不同之处
- 1.同学一使用了初始化数组,以我现在的水平,还不是太理解,所以自己是用的蠢办法。
- 2.同学二和同学一的类似但还是有细微差别,但是现在还不太懂数组内一定要写10。
3.学习总结
3.1学习进度条
| 周\日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
|---|---|---|---|---|
| 11\12.13-12.19 | 约11小时 | 约150行 | 掌握各种类型函数的定义、调用和申明,熟悉变量的作用域、生存周期和存储类型 | 对函数的定义与调用有点懵 |
| 10\12.6-12.12 | 约15小时 | 约150行 | 熟悉break、continue的使用并熟悉使用循环的嵌套解决问题 | 调试用不太好 |
| 9\11.29-12.5 | 约11小时 | 约190行 | 熟悉使用while和do-while结构解决问题 | 无 |
| 8\11.22-11.28 | 约9小时 | 约220行 | 熟悉多分支结构switch语句的使用 | 分不清何时用等于何时用赋值 |
| 7\11.15-11.21 | 约7小时 | 约200行 | 学习多分支结构、字符型数据类型和逻辑运算符 | 无 |
| 6\11.8-11.14 | 约6小时 | 约95行 | 生成乘方表与阶乘表 | 不理解函数的定义和调用如果将主函数放在前面,第一次出现的double fact(int n)后要加分号 |
| 5\11.1-11.7 | 约8小时 | 约140行 | for语句 | 输出%d与%6.1lf之间不能有空格的原因 |
| 4\10.18-10.24 | 约6小时 | 约105行 | if-else语句 | 不能理解求个位数用n%10,十位数n/10%10等 (已解决) |
3.2累积代码行和累积博客字数

3.3学习内容总结和感悟
3.3.1学习内容总结

3.3.2学习体会
体会:
- 对于PTA的题目《水仙花数》迷茫了一个星期多,这周终于运用调试找到问题所在,心情十分舒畅,成就感满满啊。
- 实在是写不出PTA的《特立独行的幸福》,有一部分原因是没有耐心吧,最后还是运行超时,暂时没辙了。
- 应付每周PTA的作业还是感觉越来越吃力,花费的时间越越多,但是能不能得到正确的答案还要看运气,所以还要继续努力,放平心态呐。

浙公网安备 33010602011771号