C程序设计实验报告

一、实验项目:

1、编写由三角形三边求面积的函数
2、编写求N阶乘的函数
3、求两个整数的最大公约数
4、打印输出三角形
5、求500以内的所有亲密数对

姓名:戴求  实验地点:教学楼514教室  实验时间:2019.4.30

一、实验目的与要求

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

  • 调用area()函数求三角形的面积;
  • 在求面积函数中运用海伦公式;

2.编写求N的阶层

  • 定义符号常量;
  • 使用长整型变量存放累乘积;
  • 在函数中,使用局部静态变量存放累乘积;
  • 使用全局变量存放累乘积;

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

  • 调用gcd()函数求两个整数的最大公约数;
  • 掌握辗转相除法求两个整数的最大公约数;

4.打印输出的指定图形

  • 调用trangle()函数输出三角形;
  • 在trangle()函数中用for循环的嵌套输出指定的结果;

5.模块化程序设计

  • 掌握C语言中定义函数的方法;
  • 掌握通过值传递调用函数的方法。

二、实验内容

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

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

  • 实验代码:
#include<stdio.h>
#include<math.h>
float area(float a,float b,float c)
{float s,p,area;p=(a+b+c)/2;s=p*(p-a)*(p-b)*(p-c);/*根据海伦公式求三角形面积*/ area=sqrt(s);return(area);}
main()
{float x,y,z,ts;printf("请输入三角形的三条边:"); scanf("%f%f%f",&x,&y,&z);/*键盘输入三角形的3条边*/ ts=area(x,y,z);/*调用求三角形面积函数*/ if(x+y>=z&&x+z>=y&&y+z>=x)/*判断是否构成三角形*/ printf("area=%f\n",ts);elseprintf("data error!");
}

运行结果如下:

  • 问题分析:无。

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("%d的阶乘是:%d\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的值*/ a=b;b=temp;}remainder=a%b;while(remainder!=0){a=b;/*辗转相除求最大公约数*/ b=remainder;remainder=a%b;}return b;
}
main()
{int x,y;int fac;printf("please input two integers:");scanf("%d%d",&x,&y);fac=gcd(x,y);/*用输入的两个数调用最大公约数的函数*/ printf("The great common divisior is:%d",fac);
}

运行结果如下:

  • 问题分析:当按照书上的代码运行程序时,没有运行结果。当时,有人提出在while循环中加入break,让其跳出循环,但是,也没有用。认真的检查了一下程序之后,发现while循环里面并没有循环 remainder=a%b;,导致程序运行不下去,加上之后才发现,运行正常。还有一种方法来求最大公约数,就是“更相减损法”。下面我来用更相减损法来编写一个程序来求最大公约数。

  • 流程图如下:

  • 实验代码:
#include<stdio.h>
#include<math.h>int gcm (int m,int n)
{           int i,f,e,c,a,k;while(m % 2 == 0 && n % 2 == 0){m=m/2;n=n/2;i++;}if(m>n){f=m;e=n;c=f-e;  }else{f=n;e=m;c=f-e;}while(c!=e){if(c>e){f=c;e=e;c=f-e;}else{f=e;e=c;c=f-e;}}return c*pow(2,i);
}
main()
{int x,y;int fac;printf("please input two integers:");scanf("%d%d",&x,&y);fac=gcm(x,y);/*用输入的两个数调用最大公约数的函数*/ printf("The great common divisior is:%d",fac);
}

运行结果如下:

运行结果如下:

4、打印输出指定图形

  • 问题的简单描述:输入整数n,输出高度为n的等边三角形。流程图如下:

  • 实验代码:
#include<stdio.h>
void 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("请输入一个整数:");scanf("%d",&n);printf("\n");trangle(n);
}

运行结果如下:

  • 问题分析:无。

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

  • .问题的简单描述:若正整数A的所有因子(包括1但不包括自身,下同)之和为B,而B的因子之和为A,则称A和B为一对亲密数。例如,6的因子之和为1+2+3=6,因此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++;}elsef++;}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++;}
}

运行结果如下:

  • 问题分析:无。

三、实验小结

  1. 在调用其他公式时,要注意程序开头要有头文件。
  2. 在定义函数和调用函数时,我们要知道什么是形参,什么是实参,什么是全局变量,什么是局部变量。
    3.在编写程序时,我们要多进行思考这个程序的可行性。

转载于:https://www.cnblogs.com/daiqiu/p/10808133.html

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

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

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

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

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

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

    实验项目:函数和宏定义实验 姓名:谢丽萍    试验地点:教学楼514教室    实验地点:2019 年4月30日 一.实验目的与要求 1.掌握函数的定义方法和调用规则 2.掌握在c语言程序中主调函数 ...

  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. Robolectric
  2. 数据结构与算法 / 默克尔树
  3. 深入理解RCU | RCU源码剖析
  4. 简述使用REST API 的最佳实践
  5. collections求和方法_java集合求和最大值最小值示例分享
  6. 译林 五年级上 单词_译林版小学英语五上Unit 4 HobbiesStory time公开课优质课件教案视频教案...
  7. AutoCad 批量打印
  8. htc magic 刷机
  9. 基于 DolphinDB 的行情中心解决方案
  10. 计算机桌面图标多一个箭头,怎么去掉电脑桌面图标箭头(一个小妙招解决win图标小箭头)...
  11. 计算机类的毕业论文是怎么查重的,论文检测软件是如何实现查重功能的
  12. 腾讯游戏学院专家:如何避免出海游戏服务器水土不服?
  13. ubuntu20 从wine安装到微信3的使用(解决微信乱码、无法输入)
  14. 自然语言处理中的Attention Model:是什么及为什么
  15. SAP PCA利润中心会计案例教程案例介绍
  16. 如何寻找软件外包公司?
  17. 《A fast and elitist multiobjective genetic algorithm: NSGA-II》阅读笔记
  18. GeoGebra-一个功能类似于几何画板的开源绘图软件
  19. 红帽RHCE之HTTP
  20. 东邪、西毒、南帝、北丐

热门文章

  1. 毕业论文范文计算机,计算机毕业论文范文参考
  2. java安装好了打不开机_门套安装是45度拼接还是直角好?当初不懂行,没有半年就重装!...
  3. 远程连接linux的mysql_【Linux开启mysql远程连接的设置步骤】 mysql开启远程连接
  4. 排序函数c语言流程图,各种排序的流程图 大家帮忙弄一下
  5. javascript class static
  6. 18 File Duplication and Pipes
  7. Python Pandas General functions(静态方法)
  8. Pandas timedelta_range
  9. Ansible Privilege Escalation
  10. Hadoop HIVE 聚合查询