zoukankan      html  css  js  c++  java
  • 值交换-及求素数

    #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;
    }
  • 相关阅读:
    使用XMLReader读XML
    C#命名空间大全详细教程
    C# using 三种使用方式
    SVN服务器搭建
    简单的自定义Session
    python学习第十八天 --错误&异常处理
    锁的等级:方法锁、实例锁、类锁
    java线程池如何合理的设置大小
    挖掘两个Integer对象的swap的内幕
    实现线程同步的方式
  • 原文地址:https://www.cnblogs.com/lianfeng132/p/12358657.html
Copyright © 2011-2022 走看看