c语言函数作业
一、PTA实验作业
题目1:求组合数
1. 本题PTA提交列表
2. 设计思路
本题主要是实现一个计算阶乘的函数。
将公式中的值传递给子函数,由子函数进行运算。
子函数中主要是一个循环结构,定义result=1,i=1;当i<=传递的值时,
进入循环体内部 :result=result*i ; i++;
当i>传递的值时,退出循环,把result的值传递给主函数。
本题因为有三次用到了计算阶乘的方法,所以把它封装成子函数,让主函数去调用,会使代码简洁很多。
流程图:
3.本题调试过程碰到问题及PTA提交列表情况说明。
编译错误是因为做这道题目的时候函数还没教过,处于一知半解状态,没有返回result的值。
这次提交错误是因为输出时不是整数,带有小数,而题目要求输出的答案为整数。
可以输出%.0lf或直接定义sum为整型变量。
题目2:求幂之和
1. 本题PTA提交列表
2. 设计思路
本题主要是通过循环去实现一个求和函数,
定义i=1作为循环变量,s=0计算总和,
循环内部:s=s+pow(2,i);i++;
退出循环时返回s给主函数。
流程图:
3.本题调试过程碰到问题及PTA提交列表情况说明。
题目3:验证“哥德巴赫猜想”
1. 本题PTA提交列表
2. 设计思路
输入n后,以n为循环条件,因为题目要求输出的解为所有解中p最小的解,
所以循环初始值为第一个素数p,令p=2,
判断p是否是素数,若是素数,则q=n-p,再判断q是否是素数,
若是素数,直接输出并退出第一个大循环,否则继续循环,
直到p和q都为素数为止。
流程图:
3.本题调试过程碰到问题及PTA提交列表情况说明。
刚开始提交的时候没有使用函数
运行超时是因为循环的次数过多,把判断条件改为i<sqrt(p)。
这题提醒了我代码要不仅仅局限于能写出来,还要去优化。
正确代码为:
二、同学代码结对互评
我的代码:
互评同学代码截图
我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?
我的代码和彦婵同学的代码差异主要体现在子函数中。
我是分子阶乘是随着while循环的i递增而递增,分母的计算用一个循环结构来实现。
彦婵同学的代码是每次进入while循环都要重新计算一遍分子的阶乘值,
把分子和分母的计算都放在同一个循环里。
我更喜欢我的代码风格,因为我的程序运行时间会更短一些。
四、本周学习总结
1.你学会了什么?
1.1函数的定义
函数首部由函数类型,函数名和形式参数表组成。
函数体实现函数的实现过程,用return返回结果。
1.2函数调用
函数调用的形式:函数名(实际参数表)
函数定义时,位于其首部的参数被称为形参,主调函数的参数被称为实参。
实参与形参必须一一对应,两者数量相同,类型尽量一致。
形参类型与实参类型不一致时,以形参类型为准。
1.3void类型函数
void函数不返回结果,只实现特定功能。
1.4局部变量与全局变量
定义在函数内部的变量称为局部变量。
定义在函数外而不属于任何函数的变量称为全局变量。
全局变量和局部变量作用范围不同,可以同名。
两者同名时,局部变量起作用。
本周的内容,你还不会什么?