函数的定义和声明

1.函数定义:函数是一个完成特定功能的代码模块,通常有参数,也可以没有参数;通常有返回值,也可以是空值。

2.一般形式:<数据类型><函数名称>(<形式参数说明>)

函数名称是一个标识符,要符合命名规则(以数字字母_组成,但不能以数字开头,不能是关键词)

3.数据类型是整个函数返回值的类型,不需要返回值时,数据类型可用void;

4.函数的优点:代码复用,模块化,便于维护,阅读。

5.形参可以是任意类型变量,各参数之间用逗号分隔,在进行函数调用时将赋予这些形参实际的值。

6.函数不可重复定义,并且不能嵌套定义。

7.被调用函数必须是已经声明的函数,或者被调函数的位置位于调用函数之前。

8.如果在调用函数前没有对函数进行声明,则编译系统会把第一次遇到的该函数形式(函数定义或函数掉用)作为函数的声明,并将函数返回值的类型默认为int;

9.函数调用:嵌套调用,递归调用(注意结束条件)。

10.全局变量的缺点:易被修改,生命周期长,占内存,易被屏蔽(在函数中重新赋值导致被覆盖)。

11作用域:1.{}内为局部 ;2全局:定义到程序结束

函数的返回值

1.函数的返回值只能通过return 语句返回主函数,且只能返回一个值;

2.函数返回值的类型和函数定义的数据类型应保持一致,若不一致,则以函数定义中的类型为准,自动进行类型转换,没有返回值 ,可以定义为void类型。

一些例子

1.用函数求1+2+.......+n的和

#include <stdio.h>
int sum(int n)
{
    if(n==0)
        return 0;
    return n+sum(n-1);//递归调用

}

int main(int argc, char *argv[])

   int a;
    a=sum(100);
    printf("%d",a);
    return 0;
}

2.求X^n的值

#include <stdio.h>
double work(double x,int n)
{
    int i;
    double m=x;
    for(i=1;i<n;i++)
       {
           x=m*x;
       }
    return x;

}
int main(int argc, char *argv[])

    double s;
    double c;
    int d;
    scanf("%lf%d",&c,&d);
    s=work(c,d);
    printf("%f",s);
    return 0;
}

3.输入鸡和兔的总只数和脚的总数,求解鸡和兔分别有多少只?

#include <stdio.h>
void number(int x,int y)
{
    int i,j;
    for(i=0;i<=x;i++)
    {
        for(j=0;j<=x;j++)
        {
            if(i+j==x&&2*i+4*j==y)
            {
                printf("兔的只数=%d鸡的只数=%d\n",j,i);
                return ;
            }
            
        }
    }
    printf("invail!\n");
    return;

}
int main(int argc, char *argv[])

    int a,b,m;
    printf("请输入总只数和总脚数\n");
    scanf("%d%d",&a,&b);
    number(a,b);
    return 0;
}

4.写一个判断闰年的函数

#include <stdio.h>
int leapyear(int x)//判断闰年的函数
{
    if(x%4==0&&(x%100!=0||x%400==0))
        return 1;
}
int main(int argc, char *argv[])

    int x,i;
    printf("please input year\n");
    scanf("%d",&x);
    i=leapyear(x);
    if(i==1)
        printf("%d is a leap year\n",x);
    else
        printf("%d is not a leap year\n",x);
    return 0;
}

5.写一个判断质数的函数

#include <stdio.h>
int prime(int x)//判断质数函数
{
    int i;
    for(i=2;i<x;i++)
    {
        if(x%i!=0)
            {
                return 1;
            }

}
    return 0;
}
int main(int argc, char *argv[])

    int x,a;
    printf("please input a number\n");
    scanf("%d",&x);
    a=prime(x);
    if(a==1)
        printf("the number is a prime number\n");
    else
        printf("the number is not a prime number\n");
    return 0;
}

6.猜数字游戏

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])

    int number;
    int guess;
    int i;
    srand((unsigned)time(NULL));
    number=rand()%100;
    number++;
    printf("guess number game!\n");
    printf("the range of number is 1-100\n");
    for(i=0;;i++)
    {
         printf("please input number\n");
         scanf("%d",&guess);
         if(guess>number)
         {
            printf("大了\n");

}
         else if(guess<number)
            printf("小了\n");
         else
         {
             printf("victory!\n");
             break;
         }
    }
    return 0;
}

7.求N的阶层

#include <stdio.h>

int factorial(int n)//FOR循环求阶乘
{
    int i;
    for(i=n;i>1;i--)
    {
        n=n*(i-1);
    }
    return n;
}
int funtion(int n)//递归求阶乘
{
    if(n==1)
        return 1;
    return n*funtion(n-1);
}
int main(int argc, char *argv[])

    int n;
    int sum;
    printf("please input n\n");
    scanf("%d",&n);
    //sum=factorial(n);
    sum=funtion(n);
    printf("%d的阶乘为%d\n",n,sum);
    return 0;
}

8.打印1000-2000年的闰年

#include <stdio.h>
void leapyear(int n)
{
    int i;
    for(i=n;i<=2000;i++)
    {
        if(i%4==0&&(i%100!=0||i%400==0))
            printf("%-8d",i);
    }
    return;
}
int main(int argc, char *argv[])

    leapyear(1000);
    return 0;
}

9.计算1!+2!+3!+...........+N!

#include <stdio.h>
int sume(int n)
{
    int i,j;
    int sum=1;
    int S=0;
    for(i=1;i<=n;i++)
    {
        sum=sum*i;
        S=S+sum;
    }
    return S;

}
int main(int argc, char *argv[])

    int n,sum;
    printf("输入你要求的阶乘数\n");
    scanf("%d",&n);
    sum=sume(n);
    printf("阶乘之和为%d\n",sum);
    return 0;
}

10.求1!-2!+3!-............+N!

#include <stdio.h>
int sume(int n)
{
    int i,j;
    int sum=1;
    int S=0;
    for(i=1;i<=n;i++)
    {
       
        sum=sum*i;
        S=S+sum;
        sum=(-1)*(sum);
    }
    return S;

}
int main(int argc, char *argv[])

    int n,sum;
    printf("输入你要求的阶乘数\n");
    scanf("%d",&n);
    sum=sume(n);
    printf("阶乘之和为%d\n",sum);
    return 0;
}

11.登陆系统,三次错误后退出系统
#include <stdio.h>
#define password 1234
int system(int n)
{
    int i=1;
    int mm;
    while(i<=n)
    {
        printf("input your password\n");
        scanf("%d",&mm);
        if(mm==password)
        {
            return 1;
        }
         i++;
    }
    return 0;
}

int main(int argc, char *argv[])

     int a;
     a= system(3);
    if(a==1)
        printf("login succeeded!\n");
    else
        printf("your password is wrong!login out system\n");
    return 0;
}

12.求两个数的最大公约数

#include <stdio.h>
int conven(int x,int y)
{
    int i,r;
    for(i=1;i<=x&&i<=y;i++)
    {
        if(x%i==0&&y%i==0)
               r=i;
    }
    return r;
        
}
int main(int argc, char *argv[])

    int x,y,a;
    printf("input two number\n");
    scanf("%d%d",&x,&y);
    a=conven(x,y);
    printf("%d和%d的最大公约数为%d",x,y,a);
    return 0;
}

学习日记5-C语言函数的应用相关推荐

  1. ffmpeg学习日记506-源码-av_image_copy()函数分析及功能

    ffmpeg学习日记506-源码-av_image_copy()函数分析及功能 实现文件 av_image_copy()实现在libavutil/imgutils.c中 函数原型 void av_im ...

  2. C/C++学习日记:C语言栈区与堆区浅谈

    在编程中,内存分为五大分区:栈区内存,堆区,静态区,常量区,代码区. 看下面一个函数,你能发现它又什么问题?又该如何改正? char * getString() { char str[20] = &q ...

  3. 22.2.26学习日记:php intval( )函数

    今天在ctf-show里面完成了web萌新1,对php intval()函数有了一些了解. 首先先看题目,直接给出了源码 里面运用到了intval函数,对此特别进行学习! (部分内容来自PHP int ...

  4. Python学习日记(十一) 内置函数

    什么是内置函数? 就是Python中已经写好了的函数,可以直接使用 内置函数图表: 以3.6.2为例 内置函数分类: 一.反射相关 1.hasattr() 2.getattr() 3.setattr( ...

  5. Java学习日记-Day01

    Java学习日记-Day01 Java语言概述 比特(byte)与字节 内存 Java基础知识图解 人机交互方式 常用的DOS命令 常用快捷键 计算机编程语言介绍 第一代语言 第二代语言 第三代语言 ...

  6. Python语言学习之lambda:lambda函数的简介、使用方法、案例大全之详细攻略

    Python语言学习之lambda:lambda函数的简介.使用方法.案例大全之详细攻略 目录 lambda函数的简介 1.lambda匿名函数的格式 2.lambda函数特点 3.lambda函数与 ...

  7. Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略

    Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略 目录 logging日志用法之详细攻略 logging日志用法之详细攻略 K Llogging.basicConfig( ...

  8. Python语言学习之字母E开头函数使用集锦:endswith使用用法之详细攻略

    Python语言学习之字母E开头函数使用集锦:endswith使用用法之详细攻略 目录 endswith用法之详细攻略 enumerate()函数 endswith用法之详细攻略 if my_file ...

  9. Python语言学习之字母D开头函数使用集锦:del、dict使用方法之详细攻略

    Python语言学习之字母D开头函数使用集锦:del.dict使用方法之详细攻略 目录 del.dict使用方法 del dict()    #创建字典 del.dict使用方法 del a=1,  ...

  10. Python语言学习之字母G开头函数使用集锦:global用法之详细攻略

    Python语言学习之字母G开头函数使用集锦:global用法之详细攻略 global全局变量用法 global全局变量:python使用的变量默认一定是用局部变量:如果想使用作用域之外的全局变量,则 ...

最新文章

  1. Kruskal算法模版
  2. [转]使用 .NET Framework 2.0 在您的应用程序中支持证书
  3. hive后台启动_数据仓库组件:Hive环境搭建和基础用法
  4. python numpy逆_关于python:为什么numpy和scipy中的矩阵求逆函数对于大的二次矩阵返回不同的结果?...
  5. LLVM每日谈之三 如何创建一个LLVM工程
  6. 大数据数学基础 python描述下载_正版 大数据数学基础(Python语言描述)Python 大数据 数学 高职-计算机-大数据技术...
  7. linux log变色
  8. [SQL面试经验] 经典sql面试题及答案第1期
  9. 怎样关闭vivo的HTML查看器,vivo安全模式在哪儿关闭?
  10. 【AD笔记】--封装库PCB
  11. yuv420p 详解_YUV格式详解,图文详解YUV420数据格式
  12. 文件误删除如何找回呢?四步妙招解决
  13. qq企业邮箱登录服务器,腾讯邮箱登录入口(腾讯企业邮箱免费用户申请)
  14. 支付宝 alipay.fund.trans.uni.transfer(单笔转账接口)功能整合
  15. 技术领导者 第44讲|空降技术高管的“择业七计”
  16. 后端接口如何提高性能?
  17. 双向可控硅晶片光耦 (TLP160J TLP260J TLP525G) 基本原理及应用实例
  18. 全国信息竞赛语言有python吗_2019年全国信息学竞赛有哪些
  19. CPU处理器的分类(ARM系列中央处理器)
  20. OSPF从初学到放弃 2.1

热门文章

  1. 洛谷 P1562 智破连环阵 题解(搜索)
  2. c#基础知识学习——枚举、元组(四)
  3. c#--Fleck WebSocket使用 (C#版Websocket实例)
  4. git提交提示workspace.xml出现conflicted
  5. Easyui项目之添加购物车、清空购物车
  6. 2DPCA以及增强的双向2DPCA详解
  7. iPhone2018年最全iPhone尺寸
  8. 13 个非常有用的 Python 代码片段,建议收藏
  9. [机器学习与scikit-learn-33]:算法-回归-通过PolynomialFeatures实现数据的升维
  10. 考研数学易错知识点总结