• C语言程序设计第五次实验报告


    C程序设计实验报告

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

    姓名:胡俊 实验地点:家 实验时间2020.4.21

    一、实验目的与要求

    1、熟练地掌握函数的定义方法和调用规则。
    2、掌握在C语言程序中主调函数和被调用函数之间进行数据传递的规则。
    3、了解函数的返回值及其类型,并正确使用它。
    4、了解局部变量和全局变量的作用域及它们与存储分类的关系,理解变量的存在性和可见性的概念
    5、练习递归函数的使用

    二、实验内容

    1、实验练习:6.3.1-1

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

    2、流程图:

    3、实验代码:

    #include<math.h>
    #include<stdio.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 a,b,c,ts;
     	printf("输入三角形的三边:
    ");
     	scanf("%f,%f,%f",&a,&b,&c);
     	ts=area(a,b,c);
     	if((a+b>c)&&(a+c>b)&&(b+c>a)) 	
     	printf("area=%f
    ",ts); 
     	else printf("Data error!");
     }
    

    3、问题分析:主程序用来判断三角形三边的是否构成三角形,area()函数用来计数三角形的面积。

    2、实验练习:6.3.1-2

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

    2、流程图:

    3、实验代码:

    #include"stdio.h"
    #define 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的阶乘为%d
    ",i,product);	
    	}
    }
    

    4、问题分析:使用长整型变量存放累乘积;使用局部静态变量存放累乘积;使用全局变量存放累乘积。

    3、实验练习:6.3.1-3

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

    2、流程图:

    3、实验代码:

    #include <stdio.h>
    int gcd(int a,int b)
    {
    	int temp;
    	int remainder;
    	if(a<b)
    	{
    		temp=a;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 divisor is %d",fac);
    }
    

    4、问题分析:无

    4、实验练习:6.3.1-4

    1、问题的简单描述:

    2、流程图:

    3、实验代码:

    #include<stdio.h>
    void trangle(int n)
    {
    	int i,j;
    	for(i=1;i<=n;i++)
    	{
    		{
    			for(j=0;j<=n-i;j++)
    		printf(" ");
    	}
    	{
    		for(j=1;j<2*i;j++)
    		printf("*");
    	}
    		putchar('
    ');
    	}
    }
    main()
    {
    	int n;
    	printf("请输入一个整数:");
    	scanf("%d",&n);
    	printf("
    ");
    	trangle(n);
    }
    

    4、问题的分析:无

    5、实验练习:6.3.2.1

    1、问题的简单描述:
    若正整数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以内的所有亲密数对。
    具体要求如下。
    ( 1)编制一个函数facsum(m), 返回给定正整数m的所有因子(包括1但不包括自身)之和。
    (2)编制- -个主函数, 调用( 1)中的函数facsum(),寻找并输出500以内的所有亲密数对。
    (3)输出要有文字说明。在输出每对亲密数时,要求从小到大排列并去掉重复的亲密数对。
    (4)所有函数中的循环均采用for循环。

    2、流程图:

    3、实验代码:

    #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;
    	for(m;m<=500;)
    	{
    		n=facsum(m);
    		k=facsum(n);
    		if((m==k)&&(m<=n))
    		printf("%d,%d
    ",m,n);
    		m++;
    	}
    }
    

    4、问题的分析:无

    6、实验练习:6.3.3.1

    1、问题的简单描述:编写程序,分别从键盘输入数据x和y,计算x的y次幂并输出。

    2、流程图:

    3、实验代码:

    #include"stdio.h"
    long getpower(int x,int y)
    {
    	if(y==1)
    	return x;
    	else
    	return x*getpower(x,y-1);
    }
    main()
    {
    	int num,power;
    	long answer;
    	printf("输入一个数:");
    	scanf("%d",&num);
    	printf("输入幂次方:");
    	scanf("%d",&power);
    	answer=getpower(num,power);
    	printf("%d^%d=%ld
    ",num,power,answer);
    }
    

    4、问题分析:无

    四、实验小结(剖析个人得失)

    得:已经可以简单的掌握c语言中函数的定义与调用。
    个人问题:在定义与调用的函数过长时会混乱。

  • 相关阅读:
    【VS开发】如何判断客户端SOCKET已经断开连接?
    【VS开发】如何判断客户端SOCKET已经断开连接?
    【VS开发】从sockaddr中取得客户端或者数据源的Ip地址和端口号
    【VS开发】从sockaddr中取得客户端或者数据源的Ip地址和端口号
    【VS开发】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
    【VS开发】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
    【VS开发】最小化到托盘 shell_notifyicon和NOTIFYICONDATA
    【VS开发】最小化到托盘 shell_notifyicon和NOTIFYICONDATA
    【网络开发】winsock组播
    【网络开发】winsock组播
  • 原文地址:https://www.cnblogs.com/mzbhq/p/12743481.html
Copyright © 2020-2023  润新知