函数-循环-数组

一.PTA实验作业

题目一.7-42 函数编程-分段函数:编写函数,计算下面分段函数的值。

1.本题PTA提交列表

2.设计思路

主函数中定义并输入x,调用子函数sum(x),子函数sum(x)针对x的不同取值有不同的y值。最后计算并输出y。

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

(1).编译错误:对函数的运用不够熟悉,exp函数写成epx函数,导致编译错误。

(2).答案错误:还是答案格式出错,题目的格式是输出y=答案,而我直接输出答案。

4.代码截图。

题目二.7-1 求组合数:本题要求编写程序,根据公式C?n?m??=?m!(n?m)!??n!??算出从n个不同元素中取出m个元素(m≤n)的组合数。

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

1. 本题PTA提交列表

2. 设计思路

在主函数中定义m,n,并输入这两者的值,在输出时调用子函数fact(n)进行计算。子函数fact(n)中定义sum和i初始化为1,当i<=n时,sum*=i,求n的阶层。

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

代码并没有问题,但题目要求输出的答案为整数,这题作为基础题容易掉坑。输出应是%.0lf。

4.代码截图。

题目三.7-3 求幂之和:本题要求编写程序,计算sum=2?1??+2?2??+2?3??+?+2?n??。可以调用pow函数求幂。

1.本题PTA提交列表

2. 设计思路

在主函数中定义并输入n,在输出时运用子函数qm(n)求出答案。子函数中定义了i=1,sum=0,每次i<=n,sum +=pow(2,i)。

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

这题是基础题,并没有什么难度。所以提交时也没有遇到什么突发情况。

4.代码截图。

若上图所示。

二、同学代码结对互评

1.互评同学:陈冰艳

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

陈冰艳同学的代码:

我的代码:

3.我和陈冰艳同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?

不同在于:陈冰艳同学根据题目将n分成i与(n-i),再利用子函数判断其是否为素数,若是返回1,否则返回0,这样当i与(n-i)都为素数时,if条件语句才成立。我的想法和陈冰艳同学有些类似,我的子函数也是判断传递过来的数是否为素数,

若是则返回这个数本身,不是就不返回。但是我的子函数类型为int,不是素数时不返回值有漏洞。只找出这个bug,其他还没看出来,希望没有错误了。

各自优势:陈冰艳同学的代码简洁易懂,而我的这个代码只是一个半成品。

我更喜欢陈冰艳同学的代码。

三、截图本周题目集的PTA最后排名。

四、本周学习总结(2分)

1.我学会了简单的函数编程题

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

PTA:7-2,7-7,7-9,7-10.

3.函数考试总结

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

7-4做错了,思路有点偏差。:注意子函数的类型,是否要返回值。

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

不满意,很多题目都是一知半解,希望自己可以在这方面勤加锻炼,更加上心。

循环

一.PTA实验作业

题目一.7-1 求交错序列前N项和:本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和。

1.本题PTA提交列表

2.设计思路

观察分子为n,分母为2*n-1,且符号一正一负不断改变,所以定义flag=1,且在每一次sum+后变一次符号。

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

由于这题简单明了,所以没有遇到困难。

4.代码截图。

如上图所示。

题目二.7-7 计算阶乘和:对于给定的正整数N,需要你计算 S=1!+2!+3!+...+N!。

1. 本题PTA提交列表

2. 设计思路

输入正整数n,两层循环中,x计算i的阶层,s计算n个的阶层和。注意每次计算阶层前必须令x=1。

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

(1).答案错误:苦思冥想,明明代码写出来都跟思路一模一样。最后发现,题目要求直接输出答案,而我输出的是S=答案。嗯,格式很重要。

4.代码截图。

题目三.7-14 特殊a串数列求和:给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++?+aa?a(n个a)之和

1.本题PTA提交列表

2. 设计思路

首先输入正整数a和n,令sum,num初始化为0,i初始化为1,for循环中sum=sum*10+a求出各项的值,num+=sum算出各项之和。

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

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

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

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

错误点跟第二题一样,输出格式为S=答案,而我写的是sum=答案。长点心吧,骚年!

4.代码截图。

二、同学代码结对互评

1.互评同学:雷慧

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

雷慧同学的代码:

我的代码:

3.我和雷慧同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?

不同在于:在判断行数时雷慧同学的方法是先判断正方形边长n是否为偶数,若是偶数则列数d为n/2,否则列数为(n+1)/2;而我的方法是比较浮点数n/2.0与整型数n/2,若是浮点型与整型数相差大于0.5,则列数b为n/2+1,否则列数b为n/2。

其他地方并没有不同。

各自优势:不同的思维构造不同的方法,我觉得两个方法都很好,但雷慧同学的代码更加简洁,值得学习。

我更喜欢雷慧同学的代码。

三、截图本周题目集的PTA最后排名。

四、本周学习总结

1.我学会了简单的循环题目,例如求从1加到100的和。

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

太复杂的题目没有思路,例如3至7位的水仙花数,PTA上的7-8,7-9,7-24,7-34,7-38。

3.循环考试总结

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

7-17.寻找250:第一次用for循环没得满分,后来用while语句便可以了,但仍然不知道为什么错。大概是因为for循环比较适合用于已知循环次数的题目吧。

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

不满意,做题目的效率很低,很多程序都写得太过繁琐。

数组

一.PTA实验作业

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

1.本题PTA提交列表

2.设计思路

定义了子函数min(n),所以数组a[10]定义为全局变量。首先在主函数中输入数字个数n,用for循环输入n个数,并保存在数组a[10]中。调用子函数min(n),找出最大的数字,令其下标为index。输出下标为index的数和下标index。

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

(1)段错误:从逻辑上看这段代码没有问题,一直不理解提交到PTA为啥就错了。后来自己用子函数重写了一遍,发现如果将定义中的a[n]改成a[10]就正确了。于是猜想应该是PTA的版本不支持数组括号中为变量,而不是一个常量。

为了验证上面的猜想,将第一次的代码中的a[n]转换成a[10],再次提交。

所以猜想大概是成立的。

4.代码截图。

如第3点中后两张图所示。

题目二.7-17 判断上三角矩阵:上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。

本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

1.本题PTA提交列表

2. 设计思路

定义了子函数fact(n)和二维数组a[10][10](全局变量),主函数输入待测矩阵总个数t,而后输入t个数,为每个矩阵的行数(与列数相等)。每输入一个行数,就调用一次子函数fact(n)。子函数fact(n)实现n阶矩阵的输入与计算其对角线下有几个数为零。最终将实际为零数count与理论得零数n*(n-1)/2进行比较,若相等则输出YES,否则输出NO。

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

本题错误出现在于过于马虎,在判断对角线以下数是否为零并计数时,在if中多了一句break,导致错误产生。提醒我以后做题排错时格外注意break与continue的使用是否妥当。

此外,参考同学的做法才发现我的思路虽然没错但是太过繁琐。她们的思路简化为:先定义一个flag=0,直接判断对角线以下的数是否不为零,若不为零则flag=1,break跳出循环直接输出NO,否则flag=0,输出YES。不可置否,这个方法比我的好多了,流程图也所简化,我也从中有所收获,即多开阔自己的思路,找到最佳方案做题。

4.代码截图。(左图为我的完整代码,右图为有所修改的部分)

题目三.7-22 求矩阵各行元素之和:本题要求编写程序,求一个给定的m×n矩阵各行元素之和。

1.本题PTA提交列表

2. 设计思路

定义了子函数fact(n,m)与二维数组全局变量a[6][6],在主函数中输入二维数组的数值后,调用子函数fact(n,m)。子函数fact(n,m)中第一层循环为行数,保证每一行开始计算元素之和时sum=0;第二层循环为列数,分别将a[i][j]加在sum上,则每次第二层循环结束后输出一个sum,为该行各元素之和。

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

(1)这题算基础题目,第一次提交正确后改用函数,发现编译错误。经过研究发现,在子函数中运用了列数n,但其并未从主函数传递到子函数。随后修改,答案正确。

4.代码截图。(左图为一般程序,右图使用了函数)

二、同学代码结对互评

1.互评同学:陈冰艳

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

陈冰艳同学的代码:

我的代码:

3.我和陈冰艳同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?

不同在于:陈冰艳同学的思路是将题目要求插入的x当作已有数组的后一位组成新数组,而后通过排列得到有序的数组。而我的思路是将x与相邻的两个数比较,如果x恰好处于这两个数之间,则前面的数原封不动复制给新数组b[10],x顶替后一位的位置,从后一位开始,原来数组的数的位置后移一位。从而得到新数组。

此外,在子函数的传递中,陈冰艳同学处理的更好。她从主函数中传递了原来数组的首地址到子函数,而我定义的全局变量虽然也可行,但占据更多的内存,有失妥当。

各自优势:陈冰艳同学的代码更加简洁,也更有观赏性。

我更喜欢陈冰艳同学的代码。

三、截图本周题目集的PTA最后排名。

四、本周学习总结

1.我学会了运用数组去存储多位数据,在子函数与主函数形参与实参的传递中,用数组名称为数组首地址可传递,不要一直执着于全局变量。

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

简单的数组问题可以解决,但遇到稍难的数组总是会忘记先存储,再输出。使自己容易转牛角尖,出不来。

有些题目好不容易做出来,可是下一次再遇到又会陷入困境,感觉完全没有思路。思考题目不够细心,经常不能一次得满分,在PTA和Dev的调试下,才发现代码有漏洞。

3.数组考试总结

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

  7-5,字符型数组要多留一个位置给\0,不然错误的很隐蔽。

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

不满意,有很多题目没做。一到考试就犯浑,有些题目平时在PTA上就打过交道,但一到考试就大脑一片空白,容易犯不该犯的错误,结果更紧张了,时间越来越少。当然,即使时间充足,我也不一定都能写出来,但好歹不会遗憾。

原文地址:https://www.cnblogs.com/xinguanluoyifang/p/8150399.html

时间: 2024-10-31 08:24:49

函数-循环-数组的相关文章

理论+实操:shell之case语句for/while/until循环语句、函数、数组-满满的干货

前言: 单引号表示纯符号 用双引号表字符串 case多分支语句 循环语句 for循环语句 while循环语句 until循环语句 shell函数 shell数组 一 : case语句的结构 1.1 case结构 多分支表现形式:if语句,case语句 case 语句可以使用正则表达式,正则表达式后面会去阐述 针对变量的不同取值,分别执行不同的命令程序 case 中::表示一句话的结束 如果匹配某一个固定值,大多数用caes,其适用于某一个固定值 如果匹配某一个区间范围,大多数用if else 语

如何跳出当前jquery.each()函数循环

如何跳出当前jquery.each()函数循环:关于jquery.each()函数的用法这里不多做介绍,更多内容可以参阅下面两篇文章:1.jquery.each()函数可以参阅jQuery.each()方法一章节.2.each()函数可以参阅jQuery的each()方法一章节. 但是在实际应用中,我们可能并不需要遍历完整个数组或者对象,而是根据一定的条件跳出当前的循环或者整个循环,下面就通过代码实例介绍一下如何实现此效果.代码如下: <!DOCTYPE html> <html>

【C/C++学院】0726-cppIDE/一级指针/指针数组/函数指针/函数指针数组/二级指针

[送给在路上的程序员] 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步. 对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现. 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我. cppIDE 使用mfc和codeblocks中的mingw编译器.执行system命令中的bat批处理脚本. 一级指针 指针,结构体struct,

二维循环数组

一.题目与要求 题目.返回一个二维整数数组中最大子数组的和 要求.1.输入一个二维整形数组,数组里有正数也有负数. 2.二维数组首尾相接,象个一条首尾相接带子一样. 3.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和 二.设计思路 在上一次的以为循环数组的基础上,和二维数组求最大子数组相结合,将功能合并,完成题目要求. 第一步.将每一行的数组作为循环数组求最大子数组 第二步.通过枚举的方式,将每一种情况的和存入到新建二维数组中 第三部.通过逐列计算最大子数组的方法求所有子矩阵的最

Smarty教程1.引擎定义2.主要优点3.简明教程4.使用判断5.循环数组6.常见问题8.解释程序

Smarty是一个php模板引擎.更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法.可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下 ,他们不可能是同一个人.例如,你正在创建一个用于浏览新闻的网页,新闻标题,标签栏,作者和内容等都是内容要素,他们并不包含应该怎样去呈现.在Smarty的程序里,这些被忽略了.模板设计者们编辑模板,组合使用html标签和模板标签去格式化这些要素的输出(html表格,背景色,字体大小,样式表,等等).有一天程序员想要改变文章检索的方式(

黑 马 程 序 员_视频学习总结&lt;c语言&gt;----02 printf和scanf函数、基本语句和运算、流程控制、函数、数组、字符串

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.printf函数 1.在使用peintf函数前必须加入#include <stdio.h>,使用它可以向标准输出设备(比如屏幕)输出数据,其中使用格式是 printf(“字符串”) :或者 printf(“字符串”, 格式符参数): 2.常用的格式符及其含义如图所示 3.格式符还可以添加输出宽度 二.scanf函数 1.在使用scanf函

第4弹;函数及数组

函数与数组 函数 函数的定义 函数就是定义在类种的具有特定功能的一段独立小程序,函数也称之为方法. 函数的格式1:修饰符 返回值类型 函数名(参数类型 参数1,参数类型 参数2){ 执行语句 return 返回值:} return:用于结束函数. 函数的格式2:修饰符 void 函数名(参数类型 参数1,参数类型 参数2){ 执行语句 return 返回值:} 当函数运算后,没有具体的返回值时,这时返回类型用一个特殊的关键字来标识.该关键字就是void,void代表的是函数没有返回值.我们就可以

指针数组与数组指针 和 函数指针与函数指针数组

很容易混淆的概念其实并不难理解 1,指针数组: 看字面意思就知道这一定是一个数组,里面的原酸全部是指针 例如,定义一个简单的指针数组 char  *p[10];   //这就是一个包含十个字符指针的数组. 例: #include<stdio.h>int main(){ char *p[7]; char arr[] = "abcdef"; int i = 0; for (i = 0; i < 7; i++) {  p[i] = arr; } printf("%

PHP函数、数组

PHP函数 PHP的真正威力源自于它的函数函数是通过调用函数来执行的,可以在页面的任何位置调用函数 PHP函数准则:函数名称以字母或下划线开头(不能以数字开头)函数的名称应该提示出它的功能 四要素:返回类型.函数名.参数列表.函数体(弱类型不需要返回类型)语法:1.基础函数:function functionname(){ echo"你好"}functionname();2.有返回值的函数要加return3.有参数的函数定义时要给一个形参,输出时加一个实参4.可变参数的函数functi