C语言I博客作业04
| 这个作业属于那个课程 | C语言程序设计II |
| ---- | ---- | ---- |
|这个作业属于哪个课程|班级的链接|
| 这个作业要求在哪里 |作业链接 |
|我在这个课程的目标是|灵活使用数组,学会函数的自定义,使用宏定义、const解决简单问题,学会函数的命名法|
|这个作业在那个具体方面帮助我实现目标|让我认识了更多的朋友,学会检查别人的代码,优化自己的代码|
|参考文献|c语言程序设计(第三版)|
|学号|20208927|
1.PTA实验作业(20分/题)
1.1 求最大值及其下标
题目内容描述:本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。
在一行中输出最大值及最大值的最小下标,中间用一个空格分开。
1.1.1数据处理
数据表达:定义n,i,max,count。全为整型数。
数据处理:(伪代码如下)
首先确认用一维数组解题,int num[10]
int n,i,max,count(max为最大值,count为对应最下下标)
for循环遍历输入num[i]
令max=num[0]
for循环遍历判断大小,并找出最大值max=num[i]
printf输出
1.1.2实验代码截图
1.1.3 造测试数据
输入数据 | 输出数据 | 说明 |
---|---|---|
6 2 8 10 1 9 10 | 10 2 | 10为最大值,且最小下标为2 |
1 0 | 0 0 | 0为最大值,且最小下标为0 |
1.1.4 PTA提交列表及说明 | ||
![]() |
1.答案错误:首先数组计数从0开始,我输入的n和赋值给max的num为0;输出的最大下标为7,超过了n的值。
2.答案错误:最开始寻找最大值得方法用的是将num[1]赋给最大值,然后交换,最后输出num[1],
没有想到如何去将最小下标输出。
3.编译错误:从VS2019复制过来,忘记改scanf。
1.2 验证“哥德巴赫猜想”
题目内容描述:数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N。在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。
1.2.1 数据处理
数据表达:自定义函数素数,定义i,n。主函数定义sum,i,j,全为整型数。
数据处理:伪代码如下:
首先自定义函数int SuShu (int a)
是素数返回1,不是素数返回0
在主函数中,定义 sum,i ,j(sum为输入的值,i要为所有值中的最小的解,j=sum-i)
利用for循环遍历,在素数中寻找所有值得最小解
j=sum-i 后if判断
if (SuShu(j) != 0 && j >= i)
printf输出唯一解,break。
1.2.2 实验代码截图
1.2.3 造测试数据
输入数据 | 输出数据 | 结果 |
---|---|---|
24 | 24 = 5 + 19 | 5为所有解中最小解,24 = 5 + 19 |
2 | (无) | 最小解为1,1不为素数 |
2 000 000 000 | (无) | 没有结果 |
1.2.4 PTA提交列表及说明 | ||
![]() |
1.编译问题:VS2019scanf,人傻呀,没办法。
2.部分正确:for (i = 1; i <= sum / 2; i++),最小N错误,i没有=sum。
2.代码互评(5分)
(别人的代码)
(我的代码)
1.利用while停止循环,我觉得break更加直接
2.在自定义函数中,定义变量prime,由于在主函数中已经定义了变量i,不再重复
我的先自定义函数,后主函数判断输出,有重复的定义。
3.学习总结(15分)
3.1 学习进度条(5分)
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
11/10-11/14 | 26小时 | 800 | 自定义函数,二维数组,宏定义,const | 不会用复杂的宏定义和const |
11/2-11/8 | 26小时 | 500 | 循环嵌套,一维数组,二维数组 | 如何把问题简单化,灵活调用循环和函数 |
10.26-11.1 | 24小时 | 400 | 循环嵌套,选择排序,冒泡排序 | 排序很蒙,逆时针坍缩不懂 |
10.19-10.25 | 24小时 | 350 | switch-case,循环 | 无 |
3.2 累积代码行和博客字数(5分)
时间 | 博客字数 | 代码行数 |
---|---|---|
第八周 | 1052 | 200 |
第九周 | 1677 | 1000 |
第十周 | 3252 | 2000 |
第十一周 | 5186 | 3200 |
![]() |
3.3 学习内容总结和感悟(5分)
考了第二次的考试,感觉自己和同期的同学还是有很大的差距,不能在规定时间内完成,训练的还是不够,可以在有限时间写完代码,可以不一定在电脑上码代码,要锻炼自己看到一个相似问题的快速反应能力,和遇见一个新问题的思维敏捷度。真正感觉到了C语言的水深,或许会比现象中的更深,一门程序语言的精通需要不断的积累看到的问题,下次遇到同样的判断,可以有目的的去解决。学会去主动的解决问题,有比别人更好的学习C语言的环境,应该更加的努力。
3.3.1 学习内容总结
3.3.2 学习体会
我觉得这周可能因为有考试的原因,这一周都比较紧张的在准备,虽然还是不怎么样,也让我认识到了和别人的差距,但是这也是一种激励,至少每天都有在学习新的方法,遇到新的问题,也在慢慢的进步。C语言的水好深。