• 值交换-及求素数


    #include <stdio.h>        // 系统环境变量(通常包含的是标准库头文件)
    #include "header.h"        // 当前路径 + 系统环境变量(通常包含的是用户自定义的文件)
    #include <conio.h>
    
    // 使用函数的三个步骤: 声明函数 + 定义函数 + 调用函数
    
    // check 函数的函数声明: 函数声明应该写在函数调用之前
    //    当函数的定义位于函数调用之前,就可以省略函数声明
    int check(unsigned int number);
    
    // 实参(实际参数):[函数调用]时实际传入的参数
    // 形参(形式参数):[函数声明定义]的参数列表中(会是实参的拷贝)
    
    // C 语言中函数的传参方式: 值传递 + 址传递(指针传递)
    
    //    值传递: 传递的只是实参的拷贝,所以通过
    //        形参交换实参对实参没有任何的影响。
    void swap1(int a1, int a2)
    {
        int temp = a1;
        a1 = a2;
        a2 = temp;
    }
    
    // 地址传递: 传递的是想要修改的变量的地址,
    //        在通过指针交换两个数的时候,实际是
    //        根据指针找到指针指向的地址,交换地址
    //        上保存的数据。    
    void swap2(int* a1, int* a2)
    {
        // 通过解引用将指针 a1 指向的内存上保存的内容赋值给 temp
        int temp = *a1;
    
        // 将指针 a2 指向的内存上保存的内容放置到指针 a1 指向的位置
        *a1 = *a2;
    
        // 将 temp 的值放置到指针 a2 指向的位置
        *a2 = temp;
    }
    
    // 用于打印形参地址的函数
    void print_addr(int a)
    {
        // 形参只是实参的拷贝,例如存在函数调用 printf_addr(number)
        // 编译器会为我们生成类似 int a = number; 的操作
    
        printf("形参地址: %p
    ", &a);
    }
    
    int main(void)
    {
        int number1 = 10, number2 = 30;
    
        // 在函数的外部打印实参的地址
        printf("实参地址: %p", &number1);
        print_addr(number1);
    
        // 调用一个值传递函数,传入的就是值
        swap1(number1, number2);
    
        // 调用一个指针传递函数,传入的就是[具体变量的地址]
        swap2(&number1, &number2);
    
        // 判断 100 以内的素数
        for (int i = 3; i < 100; ++i)
        {
            if (check(i) == 1)
                printf("%d 是素数
    ", i);
        }
    
        return 0;
    }
    
    /*    函数定义的基本语法
        返回值类型 符合命名的函数名(形参列表)
        {
            // 函数体: 整个函数的具体逻辑实现
    
            // 如果有返回值类型的指定,需要使用
            //    return 返回相应类型的值(表达式)
            return 1 + 1;
        }
    */
    
    // 一个函数,用于判断传入的整数是否是素数,如果是就返回 1 否则返回 0
    //    根据作用确定名称 + 确定参数是 int + 确定返回值是 int
    int check(unsigned int number)
    {
        //    素数: 自然界大于 1 的整数中,只能被 1 和自身整除的数
        for (unsigned int i = 2; i < number / 2; ++i)    // 2 <= i < number
        {
            // 如果说能够被其中的某一个数整除就直接返回 0
            if (number % i == 0)
                return 0;
        }
    
        // 如果整个循环执行结束,那么就说明没有能够被整除的数
        return 1;
    }
  • 相关阅读:
    MySQL主从复制报错 Errno 1205
    MySQL添加索引优化SQL
    MySQL通过添加索引解决线上数据库服务器压力大问题
    手把手教你搭建MySQL双主MM+keepalived高可用架构
    SQLSERVER 维护计划无法删除
    Form表单中Post与Get方法的区别
    ASP.NET MVC中常用的ActionResult类型
    Web安全相关(五):SQL注入(SQL Injection)
    Web安全相关(四):过多发布(Over Posting)
    Web安全相关(三):开放重定向(Open Redirection)
  • 原文地址:https://www.cnblogs.com/lianfeng132/p/12358657.html
Copyright © 2020-2023  润新知