函数 数组 循环
一,PTA实验作业
题目1
7-1 求组合数(15 分)
本题要求编写程序,根据公式Cnm=m!(n−m)!n!算出从n个不同元素中取出m个元素(m≤n)的组合数。
建议定义和调用函数fact(n)
计算n!
,其中n
的类型是int
,函数类型是double
。
1.提交列表
2.设计思路
将所需元素输入 ,再调用函数fact()即可。
3.调试过程
当m==n/2时,结果错误。没注意定义成了int型 将其改为double类型即可
题目2
7-3 求幂之和(15 分)
本题要求编写程序,计算sum=21+22+23+⋯+2n。可以调用pow函数求幂。
1.提交列表
2.设计思路
调用pow函数,再进行累加求和。
3.调试过程
第一次因为在输出时忘记加空格,所以导致格式错误。第二次加上空格就正确了。
题目三
7-10 判断素数(10 分)
本题的目标很简单,就是判断一个给定的正整数是否素数。
1.提交列表
2.设计思路
3.调试过程
一遍过。
二,同学代码结对互评。
题目
7-8 求n以内最大的k个素数以及它们的和(20 分)
本题要求计算并输出不超过n的最大的k个素数以及它们的和。
许日祯同学的代码
我的代码
啊,我的代码真是长到自己都不知道怎么打出来的,无可厚非,小日同学的代码更简短更清晰,完美胜出。但是,我会用数组啊,不过貌似在这题上不太适合。以后会多加注意审题,理清思路。
三,PTA排名
四,本周学习总结
函数是一个完成特定工作的独立程序模块,由C语言系统提供定义,编程时只要直接调用即可,不同函数完成的是不同的功能,但它们都有一个共同点----实现一个计算,并可以得到一个明确的计算结果。函数首部后面不能加分号,他和函数体一起构成完整的函数定义。实参和形参一一对应,数量应相同,顺序应一致。return语句只能返回一个值。函数声明是一条C语句,而函数定义时的函数部首不是语句,后面不能跟分号。
这次PTA的第六题还是不会。
一,PTA实验作业
题目1
7-2 求最大值及其下标(20 分)
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
1.提交列表
2.设计思路
把数字存入数组,再首尾交换
3,调试过程
一遍过。
题目2
7-6 冒泡法排序(20 分)
将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们。通过一遍扫描,则最后一个元素必定是最大的元素。然后用同样的方法对前N−1个元素进行第二遍扫描。依此类推,最后只需处理两个元素,就完成了对N个数的排序。
本题要求对任意给定的K(<N),输出扫描完第K遍后的中间结果数列。
1.提交列表
2.设计思路
利用数组存入数字,再循环判断,依次比较,再输出。
3,调试过程
第一次编译错误是由于语句结束忘记加分号,第二次部分正确,,,至今原因不明,,,啊,难过
题目3
7-4 查找整数(10 分)
本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。
1.提交列表
2.设计思路
定义一个数组a,将整数存入数组中,再给定数字b,将数组与数字进行比较看是否相等,循环至结束
3.调试过程
一遍过。
二,同学代码互评。
题目
7-13 找鞍点(20 分)
一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。
本题要求编写程序,求一个给定的n阶方阵的鞍点。
我的代码
雷慧同学的代码
啊,没有对比就没有伤害,看看雷慧妹子的代码,比我的短,思路也清晰,我的没有将其汇总,比较凌乱导致部分正确,头脑也好乱,嗯,的确收获很多打代码的的技能,下次打代码前一定要画流程图。
三,PTA排名
四,学习总结
不能分配常量大小为0的数组。
访问数组要用下标访问,且下标要从0开始。
数组在内存中连续存放。
数组的数组名相当于数组首元素的地址。
sizeof(数组名),数组名表示整个数组,求的是整个数组的大小;&数组名,数组名表示整个数组,取出来的是数组的地址。除此之外,所有的数组名均表示首元素的地址,地址均为四个字节。
二维数组的表示:int arr[ ] [4] (对); int arr[3] [ ] (错)。
二维数组的理解:int arr[3] [4]可以理解为三个一维数组,每个一维数组中有四个元素。
若 int *p = arr , 则 i [arr] = i ; arr [i] = i ; *(i+arr) = i ; * (p+i) = i ; p [i] = i 这些表示法均成立。
一维数组的大小计算:int arr [10]={0}; int sz =sizeof(arr) / sizeof (arr[0])
本次PTA作业第7,9题还不会。
一.PTA实验作业
题目1
7-7 计算阶乘和
对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。
1.提交列表
2.设计思路
每轮循环求i的阶乘,加给sum,再将i+1,进行下一轮循环,当i大于N时,循环结束。
3.本题调试
第一次提交审错题,第二次就OK了,第三次大概是忘了交过又交了一遍。
题目2.
7-19 求简单交错序列前N项和
本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。
1.提交列表
2.设计思路
定义flag,denominator为分子和分母,i为循环执行次数,item为每次循环时分子除以分母的值,每轮循环将item加给sum。每轮循环将item加给sum题目中每隔一次循环item变号,所以每次循环时将flag变号,同时将i加一,直到i到大于n,停止循环,输出sum的值。
3.调试过程
定义a为已循环次数,但在每次循环够没有将其加一,导致程序进入死循环。
题目3.
1.7-5 找出最小值
本题要求编写程序,找出给定一系列整数中的最小值。
1.提交列表
2.设计思路。
输入n为循环次数,先输入一个整数,让它为最小值,之后每轮循环都输入一个整数,将这个整数与当前最小值比较,若小于最小值,则将其赋值给最小值。
3.调试过程
定义了I,后面又使用了i,导致编译错误。
二.同学代码结对互评。
PTA40题
我的代码
雷慧同学的代码
此题虽然我不懂非零返回是个什么鬼错误,总感觉自己的没错,但是经过雷慧同学的指导,我知道本题用子函数加循环体做更合适。
雷慧同学的代码设计更清晰简单。
三.截图本周PTA最后排名
四.本周学习总结
1.我学到了
while和for 循环都可以用来处理同一个问题,一般可以互相代替。
对于while和do-while循环,循环体中应包括使循环趋于结束的语句。
用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之前完成,而for语句可以在内部实现循环变量的初始化。
for循环是最常用的循环,它的功能强大,可以代替其他循环。
2.第8,9题还是不会做。
3.循环结构考试总结:
while
特点:如果一开始条件不成立,永远不会执行循环体
do while
特点:不管条件是否成立,至少会执行一次循环体
for
选择:一般优先考虑for循环,然后在考虑while循环,但需要根据具体情况,有时while比for好用
break的使用:1.switch语句:退出整个switch语句 2.循环结构:退出整个循环结构
注意点:多重嵌套只对最近的的循环体有效
continue的使用:结束当前这次的循环体,进入下一次循环体。