您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页C语言 实验六 函数

C语言 实验六 函数

来源:化拓教育网

C语言 实验六 函数

一、实验目的
1.掌握函数定义与调用的方法。
2.掌握实参和形参的对应关系以及函数调用时的数据传递方式。
3.了解函数的嵌套调用和递归调用。
4.掌握局部变量、全局变量、自动变量和静态局部变量的使用方法。
二、实验学时
4 学时
三、实验内容
1.编一函数 void print(int x),功能是输出下列图形

程序代码如下:
1.
①正三角

#include<stdio.h>
void print(int x)
{
    int i,m,n;    
    for(i=1;i<=x;i++)    
    {
             for(n=1;n<=x-i;n++)         
             {
                          printf(" ");         
              }         
              for(m=1;m<=2*i-1;m++)         
              {
                           printf("*");         
               }           
               printf("\n");    
      }
}

int main(void)
{
    int x;
    printf("请输入行数x:");
    scanf("%d",&x);    
    print(x); 
}

②倒三角

#include<stdio.h>

void print(int x)
{
    int i,m,n;    
    for(i=1;i<=x;i++)    
    {    
         for(m=1;m<=i;m++)         
         {        
              printf(" ");         
         }         
         for(n=1;n<=2*x+1-2*i;n++)         
         {        
              printf("*");         
         }           
         printf("\n");    
    }
}

int main(void)
{
    int x;printf("请输入行数x:");
    scanf("%d",&x);    
    print(x); 
}
#include<stdio.h>
#define zero 1e-8

double yyds(double a,double b)
{
    double y;    
    if(a+b<=zero)    
    printf("输入无效");    
    else    
    {
        y=(a-b)/(a+b);    
        printf("y=%lf",y);    
      } 
 }

main(void)
{
    double a,b;    
    int c;    
    printf("请输入a,b:");    
    c=scanf("%lf,%lf",&a,&b);    
    while(c!=2)    
    {
        while(getchar()!='\n');    
        printf("输入无效,请重新输入:");    
        c=scanf("%lf,%lf",&a,&b);    
     }    
     yyds(a,b);
}

①普通调用

#include<stdio.h>
int Nrin(int m,int n)
{
    int s;    
    for(s=1;s%m!=0||s%n!=0;s++);    
    printf("m和n的最小公倍数=%d\n",s);
 }
 
 int Zer(int m,int n)
 {
      int s;     
      for(s=m;m%s!=0||n%s!=0;s--);     
      printf("m和n的最大公约数=%d\n",s);
  }

main(void)
{
     int m,n;     
     printf("请输入两个正整数m,n:");     
     scanf("%d,%d",&m,&n);     
     Nrin(m,n);     
     Zer(m,n);
 }

②多级调用( xy=最小公倍数最大公约数)

#include<stdio.h>
int Nrin(int m,int n)
{
   int s;    
   for(s=1;s%m!=0||s%n!=0;s++);    
   return s;
}

int Zer(int m,int n)
{
    int x;     
    x=m*n/Nrin(m,n);     
    return x;
}

main(void)
{
    int m,n;     
    printf("请输入两个正整数m,n:");     
    scanf("%d,%d",&m,&n);     
    printf("m和n的最小公倍数=%d\nm和n的最大公约数=%d\n",Nrin(m,n),Zer(m,n));
}

①非递归:

#include<stdio.h>
int fac(int x)
{
     int i;     
     long j=1;     
     for(i=1;i<=x;i++)     
     j*=i;     
     return j;
 }

int main(void)
{
     int n,m;     
     long p;     
     do
     {
                 printf("输入n,m (n>=m>0):");            
                 scanf("%d,%d",&n,&m);          
       }   while(n<m||n<=0||m<0);          
       p=fac(n)/(fac(m)*fac(n-m));          
       printf("%ld\n",p);          
       return 0;
}

②递归

#include<stdio.h>
int fac(int x)
{
     if(x==0||x==1)     
     return 1;     
     else      
     return (x*fac(x-1));
}

int main(void)
{
          int n,m;     
          long p;     
          do
          {
                      printf("输入n,m (n>=m>0):");            
                      scanf("%d,%d",&n,&m);          
           }   while(n<m||n<=0||m<0);          
           p=fac(n)/(fac(m)*fac(n-m));          
           printf("%ld\n",p);          
           return 0;
}
#include<stdio.h>
int ftss(int  x)
{
      int i,flag=0;      
      for(i=2;i<x;i++)      
      if(x%i==0)      
      flag=1;      
      if(flag==1||x==0||x==1)      
      printf("%d不是一个素数",x);      
      else       
      printf("%d是一个素数",x);
}

int main(void)
{
      int x;      
      printf("请输入整数x:");      
      scanf("%d",&x);      
      ftss(x);      
      return 0;
}
#include <stdio.h>
#include <stdlib.h>                   
long zer(long n)
{
	int m;	
	if ((m=n/10)!=0)		
	zer(m);	
	putchar(n%10+'0');
}

int main()
{
	long num;	
	printf("请输入整数number: ");      	
	scanf("%d", &num);	
	zer(num);  	
	return 0;
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务