例:编程求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,