学习日记5-C语言函数的应用

函数的定义和声明

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;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值