C语言第六章函数实验报告,第六章实验报告
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-6 1. 计算下列极限: (1) limx→0sinωxx\lim _{x \rightarrow 0} \frac{\sin \omega x}{x}limx→0xsinωx; (2 ...
- c语言第七章函数实验总结,第六章 实验报告 (函数与宏定义)
c语言实验报告 实验项目: 1.编写由三角形三边求面积的函数 2.编写求N的阶层 3.求两个整数的最大公约数 4.打印输出的指定图形 5.模块化程序设计 姓名:张顺利实验地点:第一教学楼514教室 ...
- 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 ...
- c语言复化求积公式程序,第六章 函数与宏定义实验2
C程序设计实验报告 实验项目: 一.模块化程序设计 1.利用复化梯形公式计算定积分. 2.计算Ackerman函数. 二. 函数的递归调用 1.编程计算x的y次幂的递归函数getpower(int x ...
- 第六章函数与宏定义实验报告(后半部分)
实验项目:函数与宏定义实验报告 姓名:谢丽萍 实验地点:514教室 实验时间:2019 5.16 一.实验目的与要求 1.利用复化梯形公式计算定积分 ①掌握c语言中定义函数的方法 ...
- C语言输入中10A20B,C语言实验报告第3章答案.doc
C语言实验报告第3章答案.doc 3.2基础实验一.程序分析1.以下程序若输入a,则输入格式为c1a:运行结果为_a,A_.includestdio.hintmain char c1,c2;scanf ...
- 安徽大学电气工程及自动化学院本科实验报告(MATLAB)——六、七章
学号 Z11714047 专业 自动化 姓名 耿严 实验日期 指导教师 章军 实验成绩 安徽大学电气工程及自动化学院本科实验报告 [课 ...
- 聊城大学c语言实验报告,c语言程序设计(包云)c第1章概述.ppt
c语言程序设计(包云)c第1章概述.ppt C语言程序设计,讲授包云 单位聊城大学计算机学院,第1章 C语言概述,3,主要内容,1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C语言的发展 ...
- 沈阳师范大学大一上册C语言PTA题目集以及答案(第六章 指针 函数题篇)
沈阳师范大学大一上册C语言PTA题目集以及答案(第六章 指针 函数题篇) 6-1 字符串的连接 (15分) 本题要求实现一个函数,将两个字符串连接起来. 函数接口定义: char *str_cat( ...
最新文章
- 给JFinal添加 Sqlite 数据库支持
- 深入浅出 JavaScript 数组 v0.5
- 车载信息安全企业自发成立联盟
- 中西医与算法之间的联系
- iOS之深入解析如何构建动态库与framework动态更新
- 隐式调用 Intent 大全
- MongoDB在linux下的启动
- lisp删除块中图元_DeleteBlocks
- Ubuntu 16.04 LTS 安装Mongodb 3.4
- Alfred中使用技巧:不要迷失在翻译中,在Alfred中使用Google翻译
- 单片机编程用什么软件?单片机开发软件有哪些?
- 02Windows日志分析
- 2.	Zigbee应用程序框架开发指南 - 应用程序框架结构
- html css工资条样式,JS+CSS3交互式拖动滑块选择工资条代码
- 计算机等级考试《二级Java语言程序设计》题库
- VC2005操作Word
- FUEL: Fast UAV Exploration using Incremental Frontier Structure and Hierarchical Planning
- C语言1013山东理工大学试题,流体试题真题山东理工大学3页
- 塞尔达传说——黄昏公主的几个障碍
- 计算机论文指导记录16次,论文指导记录怎么写 你知道吗
热门文章
- 电邮里面是图片怎么下载_这是最有效的采访后谢谢您的电子邮件
- mongodb的分组求和(使用aggregate方法)
- 使用Wifi pineapple(菠萝派)进行Wi-Fi钓鱼攻击
- servicecontroller 无法打开计算机 服务,ServiceController似乎无法停止服务
- 奋战7个月拿下offer【结果被裁,我哭了】
- APP爬虫|frida-某资讯app逆向过程,带你一起使用 frida 进行完整逆向
- 华为S5720S重置密码
- Axios 的简易学习笔记
- mysql 1032 1062_MySQL 主从复制 ERROR-1032
- graylog3.0收集飞塔防火墙日志