这个作业属于那个课程 |
C语言程序设计II |
这个作业要求在哪里 |
C语言I作业11 |
我在这个课程的目标是 |
掌握老师所教知识,熟练自学知识 |
这个作业在那个具体方面帮助我实现目标 |
熟悉自定义函数,全局定义和局部定义 |
参考文献 |
《C语言教材》 |

一、PTA作业(20分/题)

1.1统计某类完全平方数
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。
裁判测试程序样例:
#include <stdio.h>
#include <math.h>
int IsTheNumber ( const int N );
int main()
{
int n1, n2, i, cnt;
scanf("%d %d", &n1, &n2);
cnt = 0;
for ( i=n1; i<=n2; i++ ) {
if ( IsTheNumber(i) )
cnt++;
}
printf("cnt = %d\n", cnt);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
105 500
输出样例:
cnt = 6
1.1.1数据处理
数据表达:定义了m接受n的平方根,n就是输入的整数,定义一个10位的数组p用了收集n的值;n1,n2为输入的取值范围,i用于控制循环,cnt用于记数
数据处理:
主函数:
n1,n2为输入的取值范围,i用于控制循环,cnt用于记数
输入范围
cnt=0
for(i=n1;i<=n2;i++)
{
if 自定义函数反回来的值不为零 then cnt++
}
输出cnt
自定义函数:
定义m接受n的平方根,b用于判断N的位数,n就是输入的整数,定义一个10位的数组p用了收集n的值;
n=N
p[10]={0}
m=sqrt(n)
if m*m=n then
{
while(n)
{
b等于n除以10的余数
n自除10
p[b]++
}
for(int i=0;i<=9;i++)
{
if p[i]>1
返回1
}
}
返回0
1.1.2实验代码截图

1.1.3 造测试数据
输入数据 |
输出数据 |
说明 |
100 300 |
cnt = 4 |
00~300内有四个类完全平方数 |
10 20 |
cnt = 0 |
10~30内没有类完全平方数 |
144 144 |
cnt = 1 |
存在一个完全平方数 |
1.1.4 PTA提交列表及说明

答案正确:做之前听到过很多讨论,特别是室友,差不多把答案说出来了,然后在PTA一遍过了。
1.2统计各位数字之和是5的数
本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。
函数接口定义:
int is( int number );
void count_sum( int a, int b );
裁判测试程序样例:
#include <stdio.h>
int is( int number );
void count_sum( int a, int b );
int main()
{
int a, b;
scanf("%d %d", &a, &b);
if (is(a)) printf("%d is counted.\n", a);
if (is(b)) printf("%d is counted.\n", b);
count_sum(a, b);
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
104 999
输出样例:
104 is counted.
count = 15, sum = 3720
1.2.1 数据处理
数据表达:定义了整形变量a,b为输入的范围,自定义函数is并定义了整形变量i,sum,其中sum为number的每一位相加的和,i为返回值;
自定义函数count_sum并定义了整形变量count,sum,i,其中count为记录满足要求的个数,sum为每一个满足条件的数的和,i用来控制循环。
数据处理:
主函数:
定义a,b为输入的范围
输入范围
if 自定义函数is返回来的值不为0 输出a is counted
if 自定义函数is返回来的值不为0 输出b is counted
自定义函数 count_sum(a, b);
自定义函数is:
定义c,d,sum为number的每一位数累加的和且sum=0
while(number是否等于0)
{
c=number除以10的余数
sum自加c
number自除10
}
if sum=5
返回1
else
返回0
自定义函数count_sum
定义count用于记录满足条件数的个数,sum1为满足条件的每一个数累加的和,i为控制循环
for(i=a;i<=b;i++)
{
{
if is(a)
count++
sum1自加i
}
输出count,sum
}
1.2.2 实验代码截图

1.2.3 造测试数据
输入数据 |
输出数据 |
说明 |
10 100 |
count = 5, sum = 160 |
存在5个各位数字之和是5的数,且他们的和为160 |
32 320 |
32 is counted.320 is counted.count = 15, sum = 2532 |
存在十五个各位数字之和是5的数,且他们的和为2532 |
1.2.4 PTA提交列表及说明

编译错误:主要是开始没有找到正确思路,后来参考,咳咳,只是参考了下百度的东西,在dev-c++搞出来了,后面发现编译错误,仔细看是后边自定义函数的时候,变量sum重名了,就改成了sum1,这次题目是真的头晕做的。
2.代码互评(5分)
同学代码(柏朝晖)

我的代码

1.我是定义m放N的平方根,n为m的平方,当n和N相等的时候通过一个for循环判断数组是否,如果成立则返回1,否则返回0。
2.他的代码是定义n放N的平方根,m放N的值,当n的平方和 N相等的时候用数组收集N的每一位数,然后再判断数组内是否有相同的数。
3.相比之下,大佬牛皮了不止一个度,但这次我的更加简洁。
同学代码(大佬)

我的代码

1.他是定义digital来收集number的每一位数并用sum1累加,通过判断sum1=5来返回1或者0,定义count来记录符合要求的个数,当函数返回的是1时count+1而sum+i然后输出count和sum。
2.我们代码差不多,他是先执行再判断,而我是先判断再执行。
三、学习总结(15分)
3.1 学习进度条(5分)
周/日期 |
这周所花的时间 |
代码行 |
学到的知识点简介 |
目前比较迷惑的问题 |
第四周 |
10 |
0 |
在屏幕上显示Hello World! |
无 |
第五周 |
14 |
0 |
求华氏温度对应的摄氏温度 |
无 |
第六周 |
21小时 |
247行 |
如何用 MinGW-w64 来编译C程序 |
无 |
第七周 |
7小时 |
118行 |
二分支结构 |
无 |
第八周 |
6小时 |
100行 |
掌握使用for循环语句实现指定次数的循环程序设计 |
无 |
第九周 |
9小时 |
124行 |
学会使用自定义函数 |
对于函数的返回,不是很理解 |
第十周 |
16小时 |
216行 |
字符型数据类型和自定义函数 |
对字符型不怎么了解 |
第十一周 |
20小时 |
258行 |
学习了switch语句 |
对switch后边括号里的变量怎么定义 |
第十二周 |
8小时 |
198行 |
自己摸索了下数组,学习了while语句 |
对括号内定义不明确 |
第十三周 |
13 |
221 |
break与continue语句 |
不太会使用continue |
第十四周 |
21 |
245 |
镶嵌结构与字符型 |
都不熟,小白都不算qaq |
第十五周 |
12 |
198 |
全局定义和局部定义 |
大概知道什么意思,不过好像不会用qvq |
3.2 累积代码行和博客字数(5分)
时间 |
代码行数 |
博客字数 |
第四周 |
0 |
331 |
第五周 |
0 |
331 |
第六周 |
247 |
1109 |
第七周 |
365 |
2246 |
第八周 |
465 |
3416 |
第九周 |
589 |
3826 |
第十周 |
805 |
5126 |
第十一周 |
1063 |
6874 |
第十二周 |
1261 |
8241 |
第十三周 |
1485 |
9898 |
第十四周 |
1730 |
12262 |
第十五周 |
1928 |
9785 |

3.3 学习内容总结和感悟(5分)
3.3.1 学习内容总结

3.3.2 学习体会
这周的pta为啥我感觉好难,是我水平的问题?我想是的。特别是那两道编程题,完全没思路,本周上课内容也似懂非懂,不知道该怎么搞。
这个学期也快结束了,但是我的感觉是我没学过一样,对于期末考试慌的一批,感觉肚子里没货,明明上课。。。还算认真吧!
总体对自己极度不满意,与自己平常懒有莫大关系吧,寒假生活尽全力像琛姐一样吧。
