C程序设计实验报告

实验项目:

6.4.1、函数的定义和调用

1、编写由三角形三边求面积的函数

2、编写求N阶乘的函数

3、求两个整数的最大公约数

4、打印输出三角形

5、求500以内的所有亲密数对

姓名:方缙 实验地点: 514实验室 实验时间:2019年4月30日

一、实验目的与要求 6.4.1、函数的定义和调用

6.4.1.1编写由三角形三边求面积的函数

调用area()函数求三角形的面积

在求面积函数中运用海伦公式

6.4.1.2编写求N阶乘的函数

定义符号常量

使用整型变量存放累乘积

在函数中,使用局部静态变量存放累乘积

使用全局变量存放累乘积

6.4.1.3求两个整数的最大公约数

调用gcd()函数求两个整数的最大公约数

掌握辗转相除法求两个整数的最大公约数

6.4.1.4打印输出指定图形

调用trangle()函数输出三角形

在trangle()函数中用for循环的嵌套输出指定的结果

6.4.2、模块化程序设计

6.4.2.1求500以内的所有亲密数对

掌握C语言中定义函数的方法

掌握通过“值传递”调用函数的方法

二、实验内容

6.4.1:用for语句实现循环 实验练习1:编写由三角形三边求面积的函数

问题的简单描述:编写程序,从键盘输入三角形的3条边,调用三角形面积函数求出其面积,并输出结果。

程序流程图:

实验代码:

#include#includefloat area(float a,float b,float c)

{

float s,p,area;

s=(a+b+c)/2;

p=s*(s-a)*(s-b)*(s-c);/*根据海伦公式求三角形面积*/

area=sqrt(p);

return(area);

}

main()

{

float x,y,z,ts;

printf("请输入三角形的三条边:"); /*键盘输入三角形的三条边*/

scanf("%f,%f,%f",&x,&y,&z);

ts=area(x,y,z);/*调用求三角形面积函数*/

if(x+y>z&&x+z>y&&y+z>x)/*判断是否构成三角形*/

printf("area=%f\n",ts);

else printf("data error!");

}

问题分析:(重点分析在实验过程中出现的问题,及解决方法。)

这个程序要用到开方函数,所以要使用头文件math.h;判断输入的3条边是否能构成三角形的条件;按照流程图的顺序一步一步地完成这个程序

程序运行如下:

实验练习2:编写求N阶乘的函数

问题的简单描述:编写函数,求出从主调函数传来的数值i的阶乘值,然后将其传回主调函数并输出。

程序流程图:

实验代码:

#include"stdio.h"

#define N 5/*定义符号常量N,代表数字5*/

long function(int i)

{

static long f=1;/*定义局部静态变量f并赋初值1*/

f=f*i;/*求形参i的阶乘值并存放在f中*/

return f;

}

main()

{

long product;

int i;

for(i=1;i<=N;i++)

{

product=function(i);/*调用函数function()求阶乘值,并赋值给product*/

printf("i的阶乘是:%d\n",product);

}

}

问题分析:

这个程序首先要定义一个符号变量N,具体的写法之前的一次实验中,我们也是有做过的,然后要定义一个局部静态变量,并实验long型变量来存放所求的值,最后按照流程图走,将程序代码补充完整。

程序运行如下:

实验练习3:求两个整数的最大公约数

问题的简单描述:编写程序,从键盘输入两个整数,调用gcd()函数求它们的最大公约数,并输出结果。

程序流程图:

实验代码:

#includeint gcd(int a,int b)

{

int temp;

int remainder;

if(a

问题分析:这个程序关键部分还是那个算法,确实要理解这个算法要良好的数学功底。定义函数的时候首先要判断输入两个整数的大小关系,总是要较大的数除以较小数,如果顺序不对,要先交换顺序才能继续相除,然后就是while语句里输完a=b;b=remainder;后还没完结,还要再次输入remainder=a%b,不然程序是不能算出最大公约数的。

程序运行结果如下:

实验练习4:打印输出指定图形

问题的简单描述:输入整数n,输出高度为n的等边三角形。当n=5时的等边三角形。

程序流程图:

实验代码:

#includevoid trangle(int n)

{

int i,j,k;

for (i=0;i<=n;i++)

{

for( j=i;j

问题分析:(重点分析在实验过程中出现的问题,及解决方法。)

这个程序其实之前我们就已经做过了类似的了,根据书中给出的等边三角形,可以发现等边三角形的组成规律,每一行星号前的空格都比上一行的少一个,每一行的星号个数也是有规律的,可以用2i-1来表示,最后按照这些规律将代码补齐,程序就运行成功了。

程序运行结果如下:

6.4.2:模块化程序设计 实验练习1:求500以内的所有亲密数对

问题的简单描述:若正整数A的所有因子(包括1担不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数。例如:6的因子之和为1+2+3=6,因此6与6为一对亲密数(即6自身构成一对亲密数);又如,220的因子之和为1+2+3+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220,因此,220与284为一对亲密数。

具体要求如下:

(1)编制一个函数facsum(m),返回给定正整数m的所有因子(包括1但不包括自身)之和。

(2)编制一个主函数,调用(1)中的函数facsum(),寻找并输出500以内的所有亲密数对。

(3)输出要有文字说明。在输出每对亲密数时,要求从小到大排列并去掉重复的亲密数对。

(4)所有函数中的循环均为for循环。

程序流程图:

实验代码:

#includeint facsum(int m)

{

int sum=1,f=2;

while(f<=m/2)/*while循环的循环体*/

{

if(m%f==0)/*循环求m的因子之和并存放在sum变量中*/

sum=sum+f;

f=f+1;

}

return sum;

}

main()

{

int m=3,n,k;

while(m<=500)/*求500以内亲密数对的while循环体*/

{

n=facsum(m);/*调用facsum求m的因子之和并存入k中*/

k=facsum(n);/*调用facsum求k的因子之和*/

if(m==k&&m<=n)/*判断是否是亲密数对的if条件语句*/

printf("%d,%d\n",m,n);

m++;

}

}

3问题分析:(重点分析在实验过程中出现的问题,及解决方法。)

要做出这个程序首先要弄清楚什么是亲密数对,亲密数对成立的条件是什么,然后在facsum(m)模板中,求出m的所有因子,并将它们的和作为返回值。在主函数中,for循环从m=3开始调用facsum(m),再计算m是否有亲密数对。

程序运行如下:

三、实验小结(在本次实验中收获与不足)

这节课内容确实比之前的要麻烦好多,涉及的内容也比较宽广。或许太久没有编写代码了,刚开始就有点陌生,犯一些小毛病,在一些细节方面,;“ 啥的忘记打了。还是要多加练习吧,只有形成了惯性思维才不会出错。

C语言第六章函数实验报告,第六章实验报告相关推荐

  1. 【课后习题】高等数学第七版上第一章 函数与极限 第六节 极限存在准则 两个重要极限

    习题1-6 1. 计算下列极限: (1) lim⁡x→0sin⁡ωxx\lim _{x \rightarrow 0} \frac{\sin \omega x}{x}limx→0​xsinωx​; (2 ...

  2. c语言第七章函数实验总结,第六章 实验报告 (函数与宏定义)

    c语言实验报告 实验项目: 1.编写由三角形三边求面积的函数 2.编写求N的阶层 3.求两个整数的最大公约数 4.打印输出的指定图形 5.模块化程序设计 姓名:张顺利实验地点:第一教学楼514教室   ...

  3. c语言编写计算ackerman函数的递归函数ack(n,x,y),第六章函数与宏定义实验报告二...

    C程序设计实验报告 实验项目: 6.4.2.2. 利用复化梯形公式计算定积分 6.4.2.3. 计算Ackerman函数 6.4.3.1. 编写计算x的y次幂的递归函数getpower(int x,i ...

  4. c语言复化求积公式程序,第六章 函数与宏定义实验2

    C程序设计实验报告 实验项目: 一.模块化程序设计 1.利用复化梯形公式计算定积分. 2.计算Ackerman函数. 二. 函数的递归调用 1.编程计算x的y次幂的递归函数getpower(int x ...

  5. 第六章函数与宏定义实验报告(后半部分)

    实验项目:函数与宏定义实验报告 姓名:谢丽萍     实验地点:514教室       实验时间:2019 5.16 一.实验目的与要求 1.利用复化梯形公式计算定积分 ①掌握c语言中定义函数的方法 ...

  6. C语言输入中10A20B,C语言实验报告第3章答案.doc

    C语言实验报告第3章答案.doc 3.2基础实验一.程序分析1.以下程序若输入a,则输入格式为c1a:运行结果为_a,A_.includestdio.hintmain char c1,c2;scanf ...

  7. 安徽大学电气工程及自动化学院本科实验报告(MATLAB)——六、七章

     学号 Z11714047    专业  自动化     姓名 耿严       实验日期        指导教师  章军    实验成绩       安徽大学电气工程及自动化学院本科实验报告  [课 ...

  8. 聊城大学c语言实验报告,c语言程序设计(包云)c第1章概述.ppt

    c语言程序设计(包云)c第1章概述.ppt C语言程序设计,讲授包云 单位聊城大学计算机学院,第1章 C语言概述,3,主要内容,1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C语言的发展 ...

  9. 沈阳师范大学大一上册C语言PTA题目集以及答案(第六章 指针 函数题篇)

    沈阳师范大学大一上册C语言PTA题目集以及答案(第六章 指针 函数题篇) 6-1 字符串的连接 (15分) 本题要求实现一个函数,将两个字符串连接起来. 函数接口定义: char *str_cat( ...

最新文章

  1. 给JFinal添加 Sqlite 数据库支持
  2. 深入浅出 JavaScript 数组 v0.5
  3. 车载信息安全企业自发成立联盟
  4. 中西医与算法之间的联系
  5. iOS之深入解析如何构建动态库与framework动态更新
  6. 隐式调用 Intent 大全
  7. MongoDB在linux下的启动
  8. lisp删除块中图元_DeleteBlocks
  9. Ubuntu 16.04 LTS 安装Mongodb 3.4
  10. Alfred中使用技巧:不要迷失在翻译中,在Alfred中使用Google翻译
  11. 单片机编程用什么软件?单片机开发软件有哪些?
  12. 02Windows日志分析
  13. 2. Zigbee应用程序框架开发指南 - 应用程序框架结构
  14. html css工资条样式,JS+CSS3交互式拖动滑块选择工资条代码
  15. 计算机等级考试《二级Java语言程序设计》题库
  16. VC2005操作Word
  17. FUEL: Fast UAV Exploration using Incremental Frontier Structure and Hierarchical Planning
  18. C语言1013山东理工大学试题,流体试题真题山东理工大学3页
  19. 塞尔达传说——黄昏公主的几个障碍
  20. 计算机论文指导记录16次,论文指导记录怎么写 你知道吗

热门文章

  1. 电邮里面是图片怎么下载_这是最有效的采访后谢谢您的电子邮件
  2. mongodb的分组求和(使用aggregate方法)
  3. 使用Wifi pineapple(菠萝派)进行Wi-Fi钓鱼攻击
  4. servicecontroller 无法打开计算机 服务,ServiceController似乎无法停止服务
  5. 奋战7个月拿下offer【结果被裁,我哭了】
  6. APP爬虫|frida-某资讯app逆向过程,带你一起使用 frida 进行完整逆向
  7. 华为S5720S重置密码
  8. Axios 的简易学习笔记
  9. mysql 1032 1062_MySQL 主从复制 ERROR-1032
  10. graylog3.0收集飞塔防火墙日志