《C程序设计》课程学习(9)——第八章 函数(另一个版本)

本文详细介绍了C语言中的函数,包括函数的定义、调用、参数传递、局部和全局变量、存储类别,以及函数的嵌套和递归调用。强调了函数在解决复杂问题中的作用,如求素数、计算最大公约数等。同时讨论了数组作为函数参数的使用,以及静态和动态存储的区别。最后,讲解了内部函数和外部函数的声明及多文件程序的编译运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例:编程求3至100之间满足下列条件的各组素数:每组有3个素数,第2个比第1个大2,第3个比第2个大4。

§8.1 概述

分类:

例:

#include<math.h>
main( )
{ int  x;
  float  y;
  scanf("%d",&x);
  y=sin(x);
  printf("%f ",y);
}
  int max( int  x, int  y) 
  {    int z;
       z=x>y ? x : y ;
           return(z);  
    }
      main( )
    { int  a,b,c;
      scanf("%d%d",&a,&b);
      c=max(a,b);
      printf("max=%d\n",c);
      }

§8.2  函数的定义

三、空函数

§8.3 函数的调用

三、函数参数和函数的值

例4:

int  sa(int  x,int  y)             
{ if(x>y)     return(1.6);
   if(x==y)   return(0.7);
   return(-1.9);
}

main( )
{int  a,b;
  scanf("%d%d",&a,&b);
  printf("%d\n",sa(a,b));
  printf("%d\n",sa(6,2*a));
}

说明:

1.实参 → 形参单向值传递。  

2.形参为变量时,实参可以是表达式。  

3.实参与形参类型一致或赋值兼容。  

4.函数的返回值通过 return 语句获得,return 语句可以有0~n个。  

5.函数类型决定返回值的类型。

四、对被调用函数的声明

例5

main( )
{int  a,b;
  void  swap(int  x,int  y);
  scanf("%d%d",&a,&b);
  swap(a,b);
  printf("a=%d,b=%d\n",a,b);
}

void  swap(int  x,int  y)             
{int  z; 
  z=x; x=y; y=z;
  printf("x=%d,y=%d\n",x,y);
}

可以省略对被调函数声明的几种情形:

1. 被调函数的定义出现在主调函数之前。

2. 在所有函数定义之前,在函数的外部已做了函数声明(例如下图代码)。

3. 被调用函数类型为整型。(不提倡)

例1: 编写求阶乘的函数。

float jiec(int  n)
{ float   y=1;
   int   i;
   for (i=1;i<=n;i++)
     y=y*i;
   return (y);
  }
main( )
{ int  i;  float  s;
   s=0;
   for(i=1;i<=10;i++)       s=s+jiec(i);
   printf("%e\n",s);
}

例2:  编写判断一个整数是否素数的函数。

求一组数中素数之和?

main( )
{int  a[100],n,i,num=0;
  scanf("%d",&n);
  for(i=0;i<n;i++)
       {scanf("%d",&a[i]);
         if (prime(a[i])==1)
                num++;
       }
  printf("num:%d\n",num);
}

编写函数时考虑:

1. 是否有返回值。→ 函数值类型  

2. 函数名不可与关键字或主调函数中其它量重名。  

3. 形参:需要从主调函数接收几个数据、类型。  

4. 若有返回值需有 return 语句。

例3: 编写函数,判定某数字是否在某正整数中,若在,打印 TRUE,否则打印 FALSE 。

 main( )
  { int m,n;
     int among(int  m, int  n );
    scanf("%d %d",&m,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值