• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

y9

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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局部变量与全局变量

定义在函数内部的变量称为局部变量。

定义在函数外而不属于任何函数的变量称为全局变量。

全局变量和局部变量作用范围不同,可以同名。

两者同名时,局部变量起作用。

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

 

posted on 2017-12-28 19:08  y9  阅读(529)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3