实验项目:函数和宏定义实验

姓名:谢丽萍    试验地点:教学楼514教室    实验地点:2019 年4月30日

一、实验目的与要求

1、掌握函数的定义方法和调用规则

2、掌握在c语言程序中主调函数和背调函数之间进行数据传递的规则

3、了解函数的返回值及其类型,并用正确使用它

4、了解局部变量和全局变量的作用域及他们与存储分类的关系,理解变量的存在性和可见性的概念

5、练习递归函数的使用

6、理解宏的概念,掌握定义无参宏和代参宏的方法了解文件包含的概念,掌握其方法

7、理解内部函数和外部函数,了解外部函数的编译和链接的方法

二、实验内容

1、实验练习:函数的定义和调用

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

流程图:

实验代码:

#include<stdio.h>
#include<math.h>
float 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("please input the value of x and y and z:\n");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!");
}

运行结果:

问题分析:这道题的思路还挺清晰的,难度不是很大,加上流程图的帮助,就没遇到什么问题。

2、实验练习:

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

流程图:

实验代码:

#include<stdio.h>int N=5;long function(int i){static long f=1;f=f*i;return f;}main(){long product;int i;for(i=1;i<=N;i++){product=function(i);printf("%d!=%ld\n",i,product);}}

运行结果:

问题分析:这道题与上次讲的一道书上的例题相似,只是用的方法不同,这次是调用函数的调用来实现的,所以对比之前的方法,感觉这种方法更简单,代码更简洁,也更好理解。

3、实验练习:

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

流程图:

实验代码:

#include<stdio.h>
int gcd(int a,int b)
{int temp;int remainder;if(a<b){temp=a;a=b;b=remainder;                         }remainder=a%b;while(remainder!=0){gcd(a,b);}return b;
}
main()
{int x,y;int fac;printf("please input two integers:\n");scanf("%d%d",&x,&y);fac=gcd(x,y);printf("Thr great common divisor is:%d",fac);
}

运行结果:

问题分析:这道题我不知道为什么回来后在自己的电脑上运行结果与在实验室的不同,这道题刚开始的时候有点卡住了,后来老师见同学上去讲了之后加上老师的分析,就理解了。但对于现在遇到的问题我很不解。

4、实验练习:

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

流程图:

实验代码:

#include<stdio.h>
trangle(int n)
{int i,j;for(i=0;i<n;i++){for(j=0;j<n-i;j++)printf(" ");for(j=0;j<=2*i;j++)printf("*");putchar('\n');}
}
main()
{int n;printf("please input the value n:\n");scanf("%d",&n);printf("\n");trangle(n);
}

运行结果:

问题分析:这道题之前有做过,所以做起来比较轻松。

5、实验练习:

问题描述:若正整数A的所有因子之和为B,而B的因子之和为A,则称A和B为一对亲密数。例如,6的因子之和为1+2+3=6,因此6与6为一对亲密数;又如,220的因子之和为1+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220,因此220与284为一对亲密数。求500以内的所有亲密数对。

流程图:

实验代码:

#include<stdio.h>
int facsum(int m)
{int sum=1,f=2;while(f<=m/2){if(m%f==0)sum=sum+f;f++;}return sum;
}
main()
{int m=3,n,k;while(m<=500){n=facsum(m);k=facsum(n);if(m==k&&m<=n)printf("%d,%d\n",m,n);m++;}
}

运行结果:

问题分析:这道题比较新颖,因为之前没接触过,再做的过程中虽说没遇上很大的困难,因为有流程图,但对于这道题还是值得去深刻的理解的。

三、实验小结

对于这次实验我还是觉得要多练习多想吧,因为只有不断的去想问题才有可能使自己的思路更开阔。不管怎样还是要多看书,要善于类比学习,这样才能更好的理解其中的精髓。

转载于:https://www.cnblogs.com/xieliping/p/10817343.html

第六章实验报告(函数与宏定义)相关推荐

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

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

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

    ##C程序设计实验报告 ###一.实验项目: 1.编写由三角形三边求面积的函数 2.编写求N阶乘的函数 3.求两个整数的最大公约数 4.打印输出三角形 5.求500以内的所有亲密数对 ##姓名:戴求  ...

  3. 第六章实验报告(函数和宏定义实验)

    C程序设计实验报告 一.实验项目: 1.编写由三角形三边求面积的函数 2.编写求N阶乘的函数 3.求两个整数的最大公约数 4.打印输出三角形 5.求500以内的所有亲密数对 姓名:廖云福 实验地点:教 ...

  4. 第六章 实验报告(函数与宏定义)

    C程序设计实验报告 一.实验项目: 1.编写由三角形三边求面积的函数 2.编写求N阶乘的函数 3.求两个整数的最大公约数 4.打印输出三角形 5.求500以内的所有亲密数对 姓名:戴求  实验地点:教 ...

  5. C语言第六章函数实验报告,第六章实验报告

    C程序设计实验报告 实验项目: 6.4.1.函数的定义和调用 1.编写由三角形三边求面积的函数 2.编写求N阶乘的函数 3.求两个整数的最大公约数 4.打印输出三角形 5.求500以内的所有亲密数对 ...

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

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

  7. 第六次实验报告第二部分

    第六章函数和宏定义 姓名:廖云福 实验地点:514教室 实验时间:5.16 一.实验目的与要求 1.模块化程序设计: 6.4.2.2. 利用复化梯形公式计算定积分 掌握C语言中定义函数的方法: 掌握通 ...

  8. 大学计算机实验6实验报告,东华大学计算机病毒课实验六宏病毒实验报告

    <东华大学计算机病毒课实验六宏病毒实验报告>由会员分享,可在线阅读,更多相关<东华大学计算机病毒课实验六宏病毒实验报告(12页珍藏版)>请在读根文库上搜索. 1.计 算 机 病 ...

  9. 计算机病毒检测报告.pdf,东华大学计算机病毒课实验六宏病毒实验报告.pdf

    东华大学计算机病毒课实验六宏病毒实验报告 计 算 机 病 毒 实验报告 姓 名: 学 号: 老 师: 日 期: 一. 实验目的 Word宏是指能组织到一起为独立命令使用的一系列Word指令,它能 使日 ...

最新文章

  1. js调用linux命令,xshell调用js脚本开发
  2. oracle磁盘使用率很高,oracle安装磁盘使用率100%导致数据插入等操作报错
  3. mysql恢复root密码
  4. 下载 golang.org/x 包出错不用代理的解决办法
  5. 数学建模亚太赛优秀论文_泰迪杯数据分析职业技术大赛总结暨亚太地区大学生数学建模经验分享会...
  6. GNU Linux系统变量(sysctl配置命令)综合使用
  7. python语法简图
  8. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第1节 网络通信概述_3_网络通信协议分类...
  9. 微信第三方开放平台研发实战
  10. UG NX8.0安装教程
  11. matlab画平滑曲线的两种方法
  12. [WebGL入门]三十一,Quaternions(四元数)
  13. 【电商吧 - 3】支付第一步,支付宝网页支付!
  14. pass parameters to view(参数视图)
  15. JavaScript 变量命名规范总结
  16. 数据库实验一:数据库与数据表定义(2)—— 数据表相关操作
  17. 微信小程序:中老年用户群体的流量生意如何做?
  18. python代码桌面壁纸_Python实现设置windows桌面壁纸代码分享
  19. html2canvas解决图片空白,网络图片跨域
  20. Oracle 实验六:PL/SQL编程基础(1)

热门文章

  1. 消防工程师 第四篇 其他建筑、场所防火 第五篇 消防安全评估
  2. 过渡和动画的基本知识
  3. Vue中实现过渡动画
  4. 【精品】pinia详解
  5. postgresql根据周和年计算周对应的时间段
  6. 歌谣学前端之react笔记之学习日历样式的设置
  7. 阿里云验证码邮件html代码模板
  8. php小蛋白奶粉有哪些牌子,部分水解蛋白奶粉有哪些
  9. Android 与 Unity(随笔录)
  10. 解决Win7启动时出现“windows未能启动。原因可能是最近更改了硬件或软件”的问题