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语言的水好深。

posted @ 2020-11-13 00:19  陈谦益  阅读(276)  评论(12编辑  收藏  举报