首页 > 其他分享 >C语言学习记录 ----函数2

C语言学习记录 ----函数2

时间:2023-09-17 23:04:10浏览次数:40  
标签:return 函数 int C语言 ---- num printf include

#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>


判断素数

int is_prime(int n)
{
    int j = 0;
    for(j =2; j<=sqrt(n);j++)
    {
        if(0 == n%j)
        {
            return 0;
        }
    }
    if (j > sqrt(n))
    {
        return 1;
    }
}

int main()
{
    int i = 0;
    for(i = 101; i<=200;i+=2)
    {
        if(is_prime(i) == 1)
        {
            printf("%d ",i);
        }
    }
    return 0;
}

判断闰年

int is_leap(int n)
{
    if(n %4 ==0 && n%100 != 0)
    {
        return 1;
    }
    else if( n%400 == 0)
    {
        return 1;
    }
}

int main()
{
    int year = 0;
    for(year = 1000;year<= 2000;year++)
    {
        if(is_leap(year) == 1)
        {
            printf("%d\t",year);
        }
    }
    return 0;
}

优化

int is_leap(int n)
{
    if((n %4 ==0 && n%100 != 0) || n%400 == 0)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}

int main()
{
    int year = 0;
    for(year = 1000;year<= 2000;year++)
    {
        if(is_leap(year) == 1)
        {
            printf("%d\t",year);
        }
    }
    return 0;
}

 函数 二分法找有序数组中的数字


int is_target(int arr[],int n,int target)
    //这里的arr本质上是一个地址
{
    int left = 0;
    int right =n - 1 ;
    while(left <= right)
    {
        int mid = (left+right)/2; //这个必须在循环里面
        if(arr[mid] == target)
        {
            return mid;
        }
        else if(arr[mid] < target)
        {
            left = mid+1;
        }
        else
        {
            right = mid -1;
        }
    }
    return -1;

}

int main()
{
    int n = 0;
    int i = 0;
    printf("请输入存在的整数个数>:");
    scanf("%d",&n);

    int arr[n];
    printf("请输入%d个整数>:",n);
    for(i = 0 ;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    int target = 1;
//                  数组传递过去的是首元素的地址
    int result = is_target(arr, n, target);
    if(result == -1)
    {
        printf("数组中不存在目标\n");
    }
    else
    {
        printf("目标所在位置>:%d \n",result);
    }
}

写一个函数,每调用一次这个函数,就会将 num 的值增加1。

void increment(int *num) {
    (*num)++;
}

int main() {
    int num = 0;

    printf("初始值:%d\n", num);  // 输出初始值

    increment(&num);  // 第一次调用函数,将 num 增加 1
    printf("第一次调用后的值:%d\n", num);

    increment(&num);  // 第二次调用函数,将 num 增加 1
    printf("第二次调用后的值:%d\n", num);

    increment(&num);  // 第三次调用函数,将 num 增加 1
    printf("第三次调用后的值:%d\n", num);

    return 0;
}

函数的嵌套调用和链式访问

嵌套调用

函数和函数之间可以根据实际的需求进行组合的,也就是互相调用的。

void new_line()
{
 printf("hehe\n");
}
void three_line()
{
    int i = 0;
 for(i=0; i<3; i++)
   {
        new_line();
   }
}
int main()
{
 three_line();
 return 0;
}

函数可以嵌套调用,但是不能嵌套定义。

链式访问

把一个函数的返回值作为另外一个函数的参数

int main()
{
    char arr[20] = "hello";
 int ret = strlen(strcat(arr,"bit"));//这里介绍一下strlen函数
 printf("%d\n", ret);
 return 0;
}
#include <stdio.h>
int main()
{
    printf("%d", printf("%d", printf("%d", 43)));
    //结果是啥?
    //注:printf函数的返回值是打印在屏幕上字符的个数
    return 0;
}

函数的声明和定义

函数声明:

1. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。但是具体是不是存在,函数声明决定不了。

2. 函数的声明一般出现在函数的使用之前。要满足先声明后使用

3、函数的声明一般要放在头文件中的

函数的声明多用于项目,有多个不同的文件,将声明放在一个头文件,定义放在一个源文件,然后在另一个源文件用这个函数

函数定义:

函数的定义是指函数的具体实现,交待函数的功能实现。

test.h的内容

放置函数的声明

#ifndef __TEST_H__
#define __TEST_H__
//函数的声明
int Add(int x, int y);
#endif //__TEST_H__

test.c的内容

放置函数的实现

#include "test.h"
//函数Add的实现
int Add(int x, int y)
{
 return x+y;
}

标签:return,函数,int,C语言,----,num,printf,include
From: https://blog.51cto.com/u_16251486/7504135

相关文章

  • vue3项目rem自适应大小如何实现
    ❝rem自适应方案只是页面自适应的解决方案之一,本文主要讲解一下实现过程!本文演示的是Vue3语法!❞rem自适应随着现在互联网设备的日益更新,各大尺寸的屏幕参差不穷导致我们的布局在某些小屏或者大屏上与UI的表现并不一致所以,很多人寻求各种解决方案,我们现在的很多移动端框架都是支持......
  • destoon添加自定义字段报错INSERT INTO [pre]fields
     今天做destoon开发时候在后台添加自定义字段时候出现:destoon7.0-8.0添加自定义字段报错MySQLQuery:INSERTINTO[pre]fields(tb,name,title,note,type,length,html,default_value,option_value,width,height,input_limit,addition,search,display,front)VALUES('article_21',......
  • Lua05——Lua基本数据类型
    lua是动态类型语言,变量使用前不需要定义类型,在使用时直接赋值即可。1基本数据类型值可以存储在变量中,作为参数传递或作为结果返回。lua中有八个基本数据类型:nil只有值nil属于该类,表示一个无效值(在条件表达式中相当于false)boolean布尔类型,true和falsenumber双精度......
  • 剑指Offer面试题5:替换空格
    一、题目请实现一个函数,把字符串中的每个空格替换成“%20”。例如:输入“Wearehappy.",则输出”We%20are%20happy."。二、解析2.1解法一申请一个临时数组,然后再遍历这个字符串的每个字符,如果不是空格就把遍历的字符添加到临时数组中,如果是空格就添加3个符'%','2','0'分别到临时数组......
  • 设计模式-工厂模式
    (目录)设计模式-工厂模式介绍工厂模式是一种创建对象的设计模式,它提供了一种将对象的创建逻辑封装在一个工厂类中的方式。工厂模式可以隐藏对象的创建细节,使客户端代码与具体的对象创建过程解耦。在工厂模式中,有一个抽象的工厂类,它定义了一个创建对象的接口,具体的对象创建由实......
  • Ubuntu软件包管理
    一:概述在Linux系统中,常用的软件包管理格式有两种:RPM和DEB,而DEB格式就是Ubuntu上使用的格式,软件名的扩展名为.deb。CentOS和Ubuntu中的软件包管理方式不同。二:Ubuntu中显示软件包信息的软件包Ubuntu提供了好的安装apt命令来进行查看、安装卸载软件包。apt命令管理deb软件包工具,它可......
  • jQuery与Ajax:“特别的”load()方法(筛选文档、传递方法、回调函数)
    “大名鼎鼎的”jQuery因为其极简的引用方式而在N年前备受追捧,而今“浪潮”过去,还剩下什么?我认识jQuery,只是在去年接触ajax时了解,从而感兴趣,进而深入探究(其实也没多深入,只是相关的看了一下)。不得不说,jQuery对ajax支持的四个type:post(一般用于发送)、get(一般常用于接收)、put(修改)、dele......
  • Python入门系列1-基础语法
    一、标识符标识符由字母、数字和下划线组成,但是不能以数字开头。标识符是区分大小写的。以下划线开头的标识有特殊意义。以单下划线开头_foo的代表不能直接访问的类属性,需要通过类提供的接口进行访问,以双下划线开头的__foo代表类的私有成员,以双下划线开头和结尾的__foo__代表Python......
  • Git学习笔记
    一、使用Git的前期准备,即告诉Git你是谁,即需要进行个人信息配置,即:用户名、邮箱。配置用户名:gitconfig--globaluser.email "邮箱地址"配置邮箱:gitconfig--globaluser.name"用户名"二、想用Git进行版本控制,需要分几步走?1、版本控制 -> Git管理文件夹:①、进入需要管理的文......
  • List,Set,Map三者的区别,Java 创建对象有几种方式
    一、List,Set,Map三者的区别List(对付顺序的好帮手):List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象Set(注重独一无二的性质):不允许重复的集合。不会有多个元素引用相同的对象。Map(用Key来搜索的专家):使用键值对存储。Map会维护与Key有关联的值。两个Key可......