作业

函数

 题目1:

7-1 求组合数(15 分)

本题要求编写程序,根据公式Cnm​​=m!(nm)!n!​​算出从n个不同元素中取出m个元素(mn)的组合数。

建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double


1. 本题PTA提交列表

 

2. 设计思路

分别使用fact函数求累乘,再将最后结果进行处理

3.本题调试过程碰到问题及PTA提交列表情况说明

碰到问题:1.如何求累乘2.如何调用函数

第一次提交,函数最后return值有误。return 0后无结果,反复查看后发现错误改正。

题目2.

7-3 求幂之和(15 分)

本题要求编写程序,计算sum=21​​+22​​+23​​++2n​​。可以调用pow函数求幂。

1. 本题PTA提交列表

 

 

本题代码

 

2. 设计思路

思路:设计函数能使参数进行求幂之和,主要结构为循环结构。

3.本题调试过程碰到问题及PTA提交列表情况说明

 碰到问题:1.形参与实参的相互传递2.子函数传值问题

 第一次提交未在主函数中定义sum,固编译错误,根据提示改正。

第二次提交时没有在主函数中写sum=f(n),所以子函数传值无效,根据提示改正。

 题目3.

7-5 近似求PI(15 分)

本题要求编写程序,根据下式求π的近似值,直到最后一项小于给定精度eps。

2π​​=1+31!​​+3×52!​​+3×5×73!​​++3×5××(2×i+1)i!​​+

本题提交列表

 

本题代码

 

 

2.设计思路

应用循环结构求最后一项大小,同时求出各元素累加的值

3.本题调试过程碰到问题及PTA提交列表情况说明

碰到问题:循环逻辑不同,函数定义错误。

第一次提交输出格式错误,最后一位多出一个0,将"%lf"改为“%.5”则正确。

#二、代码互评

互评同学名称:张瑜

题目

7-8 求n以内最大的k个素数以及它们的和(20 分)

本题要求计算并输出不超过n的最大的k个素数以及它们的和。

2.代码对比

我的

张瑜

 

 

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

我用了数组结构,看起来稍显复杂。张瑜的程序简洁短小,一目了然,但数组结构可以清晰地表明程序是将数组中的数字往前推进,并且容易看懂,思路清晰,发现错误后也能顺着思路尽快找到。我更喜欢我的代码。

#三、PTA排名

 

#四、本周学习总结

1.你学会了什么?

1).函数的声明,定义和调用

2)函数的功能

3).实参和形参的关系

4).在函数中,数据的传递

5).局部变量和全局变量

2.本周的内容,你还不会什么?

感觉关于子函数释放结果的问题还有点迷糊,关于函数类型的选择也不太清晰,还需多加强基础知识。

3.其他总结

递归问题感觉一知半解,需要多找一些这方面的题型加深印象。

 

 

数组

 

题目1:

7-1 数组元素循环右移问题

一个数组A中存有N(>)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥)个位置,即将A中的数据由(A0​​A1​​AN1​​)变换为(ANM​​AN1​​A0​​A1​​ANM1​​)(最后M个数循环移至最前面的M个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法?


1. 本题PTA提交列表


2. 设计思路

将输入的数储存在数组中,右移后a[0]=a[3],a[1]=a[4],a[2]=a[5]。

故需要设计循环使a数组中数字下标进行循环。
3.本题调试过程碰到问题及PTA提交列表情况说明

碰到问题:1.如何输入数组2.如何输入数组3.如何将下标进行加减。

第一次提交,答案错误,输入后数字之间无间隔,但同时无法用“ %d  ”输出,因为行末不能有间隔。故根据程序分析在第一循环中如果当i>n-1,则不需要输出空格。在第二个循环中,i=n-m-1时不需要输出空格,固将程序改动正确。

题目2.

7-2 求最大值及其下标(20 分)

本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。

1. 本题PTA提交列表

本题代码

2. 设计思路

将相邻量两个数进行比较,如果顺序错误则进行交换。如是循环。

3.本题调试过程碰到问题及PTA提交列表情况说明

 碰到问题:如何比较大小,互相交换后找到最大值下标。

第一次提交时定义数组错误,不能直接定义a[n],查找书本翻看程序后纠正。

第二次提交时没有令max=0,所以无法运行,反复试验多次无果后进行询问同学改正。

 题目3.

7-6 冒泡法排序

N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。

本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。

本题提交列表

本题代码

 

2.设计思路

一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

3.

3.本题调试过程碰到问题及PTA提交列表情况说明

碰到问题:循环逻辑不通,不知道如何使格式正确

第一次提交输出格式错误,行末存在多余空格,分析后可以根据数组中元素下标判断该元素是否为最后一个元素,若不是,则输出空格,若是,则不输出。

#二

排名

互评同学名称:李彦婵

2.代码对比

 

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

结构不同,彦婵直接将下标从最大值往前输,而我定义了一个子函数,使用下标的对换来实现。比较之下,彦婵的程序更加简洁明了,运用了技巧,而我的程序过于复杂,容易出错并且不容易发现错误。我更喜欢彦婵的风格,简单易懂。

四、本周学习总结

1.你学会了什么?

1).学会了如何定义一维数组,二维数组

2).学会了如何将数组中的元素运用下标进行处理。

3).学会了不同输入输出数组的几种不同方式

4).关于str系列函数的用法与原型

2.本周的内容,你还不会什么?

不知道如何分别进行行与列的查找并比较大小。

 

3.循环结构考试总结

1.哪题做错了,怎么改?

所定义数组范围过小,导致答案部分错误,定义足够大的数组char a[1000000]

2.考试结果满意么,怎么改进?

不满意,应该多回归书本,并且在听完课之后立马进行温习并自己尝试写一遍,若有不懂应该立马标注并及时解决。

3.其他总结。

多多练习,端正态度。

 

循环

 

 #一

题目1.求平方根序列前N项和,本题要求编写程序,计算平方根序列1​​+2​​+3​​+⋯的前N项之和。可包含头文件math.h,并调用sqrt函数求平方根

1. 本题PTA提交列表

 

代码:

 

2.设计思路:先输入一个数n,从1开始一直加一进行开根号处理,就要在加到n时在循环里,同时需要设置变量sum统计前n项总和

 

3.本题调试过程碰到问题及PTA提交列表情况说明

碰到问题:如何输出两位小数

调试过程

错误:把num写成n,n未定义。检查后改正。

 

题目2.打印九九口诀表

1. 本题PTA提交列表

本题代码:

2.设计思路:

设计两个循环,使第一个数为1,第一个循环使第二个数从一加至九,分别相乘后输出,第二个循环使第一个数从一加至九,而第一个循环包含在第二个循环里。

 

 3.本题调试过程碰到问题及PTA提交列表情况说明

碰到问题:1.怎样使每条输出语句对齐2.怎样形成一个三角。

调试过程

 

语句无法对齐,请教后改正。

 两个数对调(i,j对调固答案错误。)在运行后发现改正。

 

题目3.求1到100的和(10 分)

本题要求编写程序,计算表达式 1 + 2 + 3 + ... + 100 的值。

1. 本题PTA提交列表

 

代码:

2.设计思路:设计一个循环在循环里,1从1加到100,同时每个数进行累加

3.本题调试过程碰到问题及PTA提交列表情况说明

碰到问题:不知道如何进行累加

调试过程

输出格式错误,根据调整后改正。

 

#二.截图本周目集的PTA最后排名

2.我的代码、互评同学代码截图

同学名称:林芷逸

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

 基本结构是相同的,但芷逸的代码稍显复杂,语句比较长。我的代码定义的变量名称也更直接明了容易辨认。同时在i<n-1这种细节上较为注意。

我比较喜欢自己的代码。

四.本周学习总结

1.你学会了什么?

1.学会了多种循环结构,for,while,do...while的结构上的不同以及应用方式。

2.循环嵌套

2.本周的内容,你还不会什么?

不知道如何进行循环输入和算权重分配,有大概的思路但无法进行编程。

3.循环结构考试总结

1.哪题做错了

以下正确定义与赋值的语句是________ A、int  x = y = -1               B、char c = 65;     C、float y == 1.0;               D、double x = 12.3E2.5

选了A,但赋值需要int x=-1,y=-1,本题答案选b

2.考试结果满意么,怎么改进?

不满意,多进行代码练习,多翻书,多看学习视频,熟能生巧。
3.其他总结
刚开始学习c语言,感觉不是很适应,不能举一反三,很多基础的东西容易忘记,还需加强。

posted @ 2017-12-28 15:45  不科学的二喵  阅读(5552)  评论(0编辑  收藏  举报