函数--max函数,判断是否为素数--函数调用

1、函数一,两个数字的大小比较

#include<stdio.h>
int max(int x,int y){    //定义函数
      if(x>y)
            return x;
      else
            return y;
}
int main(){         //main函数主体,应用函数
      int n=max(4,6);
      printf("%d %d\n",n,max(20,n));
      return 0;
}

输出结果为:
6 20

2、判断是否为素数

#include<stdio.h>
#include <stdbool.h>      //c89中要导入这个头部文件,否则直接使用bool会报错,unknown type
bool IsPrime(unsigned int n)
{
      if(n<=1)
            return false;
      for(int i=2;i<n;i++)
                  if(n%i==0)
                        return false;
            return true;
      }
int main(){
      printf("%d %d %d %d\n",IsPrime(3),IsPrime(2),IsPrime(4),IsPrime(5));
}

3、
函数使用实例3 : 已知三角形三个顶点位置, 求边长
给定平面上不共线的三个点,其坐标都是整数,编写程序,求它们构成的三 角形的三条边的长度。输入是6个整数: x1,y1,x2,y2,x3,y3代表三个点的坐标 ,以任意顺序输出三条边的长度均可。

采用了数组的方式;
#include<stdio.h>
#include<math.h>
#define PW(a) ((a)*(a))
int main(){
      double a[3][2];
      double A,B,C;
      for(int i=0;i<3;i++)
            for(int j=0;j<2;j++)
                  scanf("%lf",&a[i][j]);
                  A=sqrt(PW(a[1][0]-a[0][0])+PW(a[1][1]-a[0][1]));
                  B=sqrt(PW(a[2][0]-a[0][0])+PW(a[2][1]-a[0][1]));
                  C=sqrt(PW(a[2][0]-a[1][0])+PW(a[2][1]-a[1][1]));
                  printf("%lf %lf %lf\n",A,B,C);
            return 0;
}
sample1:
0 0 1 0 0 1
1.000000 1.000000 1.414214
sample 2:
0 0 0 1 1.7320508 0
1.000000 1.732051 2.000000
Program ended with exit code: 0

方法二:采用函数调用的方式

#include<stdio.h>
#include<math.h>
#define pw(a) a*a
double distance(double x1,double y1,double x2,double y2){
      return sqrt(pw(x1-x2)+pw(y1-y2));
}
int main(){
      int x1,x2,x3,y1,y2,y3;
      scanf("%d %d %d %d %d %d",&x1,&y1,&x2,&y2,&x3,&y3);
      printf("%lf %lf %lf",distance(x1,y1,x2,y2),distance(x2,y2,x3,y3),distance(x1,y1,x3,y3));
            return 0;
}

4、返回值为void的函数
void DrawCircle(double x,double y,double r)
{
//下面的代码在屏幕上以(x,y)点为圆心,r为半径画圆 …
return;
}
调用:
DrawCircle(0,0,1);

#include<stdio.h>
void swap(int a,int b)
{
      int tmp;
      tmp=a;
      a=b;
      b=tmp;
      printf("in swap:a=%d,b=%d\n",a,b);
}
int main(){
      int a=4;
      int b=5;
      swap(a,b);
      printf("after swaping a=%d,b=%d\n",a,b);
      return 0;
}


in swap:a=5,b=4        //这里确实变化了
after swaping a=4,b=5   //最后结果没有变
Program ended with exit code: 0``

函数的形参是实参的一个拷贝,且形参的改变不会影响到实参 (除非形参类型是
数组引用 --- 引用的内容本课不涉及)

 
***一维数组作为函数的参数***
一维数组作为形参时的写法如下: 类型名 数组名[ ]
不用写出数组的元素个数。例如: void PrintArray( int a[ ]) { }
数组作为函数参数时,是传引用的,即形参数组改变了,实参数组也会改变。

 
一维数组作为函数的参数
编写一个求整型数组最大值的函数
#include<stdio.h>
int findmax(int a[],int length){
      int mx=a[0];
      for(int i=0;i<length;i++)
            if(mx<a[i])
                  mx=a[i];
      return mx;
}
int main(){
      int a1[4]={4,15,6,9};
      int a2[]={3,18,56,40,78};    //可以不写元素个数
      printf("%d\n",findmax(a1,sizeof(a1)/sizeof(a1[0])));
      printf("%d\n",findmax(a2,sizeof(a2)/sizeof(a2[0])));
      return 0;
}

调用把每个数组的元素变为0

#include<stdio.h>
int a1[4]={4,15,6,9};
void settozero(int a[],int length){   //函数不需要返回值,返回类型可以写成
      for(int i=0;i<length;i++)
            a[i]=0;
}
int main(){
      settozero(a1,4);
      for(int i=0;i<4;i++)
      printf("%d ",a1[i]);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值