C语言I博客作业11
这个作业属于那个课程 | C语言程序设计 |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/zswxy/CST2019-3/homework/10130 |
我在这个课程的目标是 | 熟悉并掌握好C语言及其它的专业性知识 |
这个作业在那个具体方面帮助我实现目标 | 完成PTA作业 |
参考文献 | 集美大学林丽老师,《C Primer Plus》,伪代码规范 |
一,PTA实验作业
**1,统计某类完全平方数 **
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
伪代码
read a,b,c,n,m //int整型定义输入
read d[10]={0}
for a←1, a<←sqrt(N),a++ //for语句循环a++
do b←0 //b赋值为0
if N←a*a //if语句N相等于a*a
then n←N //n赋值为N
whlie n //满足n时
c←n%10,d[c]++,n←n/10 //执行此处循环语句
for m←0,m<10,m++ //for语句从m为0开始到10循环m++
do if d[m]>←2 //满足if条件语句
then b←1 //执行b赋值为1
if b←0
then return 0 //满足if条件执行语句
1,数据处理
变量 | 变量来源 | 变量类型 |
---|---|---|
a,b,c,n,m | 自定义 | int整型 |
d[10] | 自定义 | int整型 |
2,造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
35 400 | cot = 5 | 随机 |
89 700 | cot = 8 | 随机 |
26 350 | cot = 4 | 随机 |
3,PTA提交列表及说明
- 答案错误:没有考虑到后面的if条件语句
- 编译错误:没有考虑到后面的if条件语句
- 答案正确:解题思路见上文伪代码
**2 , 统计各位数字之和是5的数 **
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和
伪代码
read n←number,m←0,x,sum←0 //赋值n为number,m为0,sum为0
read a[10]←{0}
while n //满足while条件时
do m←n%10,a[m]++,n/=10 //做此循环
for x←0,x<←10,x++ //for语句从x为0开始循环x++
do sum+←x*a[x]
if sum←5 //满足sum为0,进入下一语句
do return 1
else return 0
read count←0,sum←0 //赋值count为0,sum为0
for a,a<←b,sum←0 //for语句开始进入下一语句
do if is(a)←1 //如果满足条件进入下一语句
then count++,sum+←a //做count++,sum+=a
printf count, sum //输出count,sum
1,数据处理
变量 | 变量来源 | 变量类型 |
---|---|---|
n,m,x,sum | 自定义 | int整型 |
a[10] | 自定义 | int整型 |
number | n=number | int整型 |
count,sum | 自定义 | int整型 |
2,造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
348 560 | count = 3, sum = 1311 | 随机 |
49 540 | count = 16, sum = 3770 | 随机 |
3,PTA提交列表及说明
- 编译错误:在int count=0 后用了 ; ,要使用 , 。
- 答案正确:解题思路见上文伪代码
二,代码互评
我的
同学
- 都采用了数组,但思路各不相一,定义了一个一百位的数组,用count的累加存储数字,最后用小于count的数和每次累加到的count数组比较,如果有相同的就满足条件
我的
同学
- 思路差不多,他用了do-while语句,直接求出各位数数字,累加起来得到和与5比较
三,学习总结
1,学习进度条
周/日期 | 这周所花的学习时间 | 代码行 | 学到的知识点 | 目前比较迷惑的问题 |
---|---|---|---|---|
第一周 | 8小时 | 28 | visual studio 2019安装 | 没有 |
第二周 | 8小时 | 18 | 温度转换,计算摄氏温度 | 没有 |
第三周 | 三天 | 110 | if-else语句 格式化输入函数scanf() | 使用scanf()的返回值 格式空格 |
第四周 | 三天 | 147 | 循环结构,流程图,数学函数 | 为什么在main()里加入void |
第五周 | 两天 | 75 | 对函数的定义和调用有初步的认识,能模仿编程 | 为什么同样的答案在Dev-C++里是对的而在PTA里的就是错的 |
第六周 | 8小时 | 180 | 熟悉多分支结构、字符型数据类型和逻辑运算符 | 同样的答案在Dev-C++里是对的而在PTA里的就是错的,Visual Studio不会用 |
第七周 | 8小时 | 104 | 熟悉多分支结构switch语句的使用 | 不能流畅的完成PTA |
第八周 | 8小时 | 90 | 熟悉使用while和do-while结构解决问题 | while(1)里面数字代表什么 |
第九周 | 8小时 | 112 | 熟悉break、continue的使用,熟悉使用循环的嵌套解决问题 | 做题的思路 |
第十周 | 两天 | 119 | 循环结构的程序设计,典型算法 | 无 |
第十一周 | 两天 | 155 | 预习数组 | 无 |
2,累计代码行数和博客字数
三,学习内容总结和体会
1,学习内容总结
2,学习体会
好难。和同学讨论了好久才想到一些思路,还要预习一下数组相关的知识才做的出来。