C语言函数基础

函数

函数是一种能完成特定功能的程序代码的一个单元。它提供给我们一个和黑子的概念,让代码模块化,当你需要实现某一功能的时候,即可调用一个函数来帮你做,这样减少了重复工作,也让代码更加模块化,使得代码的阅读,完善和维护更加简单。

函数的分类

按函数的定义分类

1.标准函数,系统自带的函数,不需要程序员来定义的函数,如scanf()和printf()。
2.自定义函数,系统中并不存在的函数,由程序员来定义函数并调用。

按函数的返回值来分类

按返回值来分类。 返回值:该类函数被调用执行完毕,将向调用者返回一个执行结果,称为函数的返回值
1.有的函数并没有返回值,返回值需定义类型,如double,int,char等
2.有的函数没有返回值,在函数类型部分写void

函数定义

我们只介绍自定义函数
定义格式:

 返回值类型   函数名称(数据类型 变量名称, 数据类型 变量名称 ……………………){
    函数体,对传进来的变量执行相关操作;
    // 如果函数返回值类型不为空,则一定要写return 返回值;
 }
函数参数

函数的参数有两类:形参和实参
函数定义时的参数称为形参,参数在函数未被调用时是没有确定值的,只是形式上的参数,函数调用时使用的参数称为实参
c语言规定,实参对形参的数据传递是“值传递”,即单向传递,
只是把实参的值传递给形参,而不能把实参的值再传递给实参。
再内存当中,实参与形参是不同的单元,不管名字是否相同,因此函数中对形参值的任何改变都不会影响到实参的值。

函数定义位置

函数定义有两种可以放置的位置
第一种:
在主函数之前定义并实现。
第二种:
在主函数之前定义,在主函数之后实现。

函数实战

1.输出图形

用来输出m行由 ∗ * 构成的图形。(m≥1)
第一行包含1个 ∗ * ,第二行包含2个 ∗ * …………第m行包含m个*。
主函数如下:

#include <stdio.h>
void print(int);// 在主函数之前定义,在主函数之后实现。
int main() {
    int m,n;
    scanf("%d",&m);
    for(n=1;n<=m;n++)
        print(n);
    return 0;
}

输出函数如下:
此函数功能要求仅仅是输出,不需要返回数据内容,所以返回值类型是void,传入的变量是整数,所以定义为int a.

void print(int a){
    for(int i=1;i<=a;i++){
        printf("*");
    }
    printf("\n");
}

在主函数之前定义,在主函数之后实现,完整代码如下:

#include <stdio.h>
void print(int m);// 在主函数之前定义,在主函数之后实现。
//注意函数定义结束后要有分号。
int main() {
    int m,n;
    scanf("%d",&m);
    for(n=1;n<=m;n++)
        print(n);
    return 0;
}
void print(int a){
    for(int i=1;i<=a;i++){
        printf("*");
    }
    printf("\n");
}

在主函数之前定义并实现代码如下:

#include <stdio.h>
void print(int a){ // 在主函数之前定义并实现
    for(int i=1;i<=a;i++){
        printf("*");
    }
    printf("\n");
}
int main() {
    int m,n;
    scanf("%d",&m);
    for(n=1;n<=m;n++)
        print(n);
    return 0;
}
2.定义函数prime,判定正整数n是否素数

程序的功能:输出[a,b]范围内的所有素数
要求每行输出10个。
主函数代码如下:

#include <stdio.h>
int prime(int);
int main() {
    int a,b,i,c;
    scanf("%d%d",&a,&b);
    c=0;
    for(i=a;i<=b;i++)
    {
        if(prime(i))
        {
            printf("%6d",i);
            c++;
            if(c%10==0)
            {
                 c=0;
                 printf("\n");
            }
        }
    }
    return 0;
}

prime函数如下:
此函数用来判断是否为素数,C语言中一般用0代表false用1代表true,
所以判断是素数返回1不是素数返回0.

#include<math.h>
int prime(int n){
    for(long long i=2;i<=sqrt(n);i++){
        if(n%i==0){
            return 0;
        }
    }
    return 1;
}

完整程序如下:

#include <stdio.h>
#include <math.h>
int prime(int n){
    for(long long i=2;i<=sqrt(n);i++){
        if(n%i==0){
            return 0;
        }
    }
    return 1;
}
int main() {
    int a,b,i,c;
    scanf("%d%d",&a,&b);
    c=0;
    for(i=a;i<=b;i++)
    {
        if(prime(i))
        {
            printf("%6d",i);
            c++;
            if(c%10==0)
            {
                 c=0;
                 printf("\n");
            }
        }
    }
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值