这个作业属于那个课程 | C语言程序设计II |
这个作业要求在哪里 | C语言I作业11 |
我在这个课程的目标是 | 掌握老师所教知识,熟练自学知识 |
这个作业在那个具体方面帮助我实现目标 | 熟悉自定义函数,全局定义和局部定义 |
参考文献 | 《C语言教材》 |
一、PTA作业(20分/题)
1.1统计某类完全平方数
本题要求实现一个函数,判断任一给定整数N是否满足条件:它是完全平方数,又至少有两位数字相同,如144、676等。
函数接口定义:
int IsTheNumber ( const int N );
其中N是用户传入的参数。如果N满足条件,则该函数必须返回1,否则返回0。
裁判测试程序样例:
#include
#include
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 自定义函数反回来的值不为零 cnt++
}
输出cnt
自定义函数:
定义m接受n的平方根,b用于判断N的位数,n就是输入的整数,定义一个10位的数组p用了收集n的值;
n=N
p[10]={0}
m=sqrt(n)
if m*m=n
{
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
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为啥我感觉好难,是我水平的问题?我想是的。特别是那两道编程题,完全没思路,本周上课内容也似懂非懂,不知道该怎么搞。
这个学期也快结束了,但是我的感觉是我没学过一样,对于期末考试慌的一批,感觉肚子里没货,明明上课。。。还算认真吧!
总体对自己极度不满意,与自己平常懒有莫大关系吧,寒假生活尽全力像琛姐一样吧。