c语言练习 插入排序 gcd求解

来源:互联网 发布:多功能双肩背包 知乎 编辑:程序博客网 时间:2024/06/07 22:02

12月7随笔

else if 语句使用时注意在判断中只进入一次。

if(year % 4 ==0){    if(year % 100!= 0)}  else if(year % 400 ==0)   //不会进到这一句的

vc 编译器 F10 调试 F11进函数 可以通过宏定义可以消除warning 。

32位 指针是4字节

volatile 保证内存可见性。每次取变量从内存中取 .在c编译环境,const 从语法层面限制了 变量不可定义,从而可以通过指针修改内存中变量的值。在cpp编译环境,const 会被优化,其值被送往寄存器,从而不可改变。linux环境下可以加 -o2 使gcc编译环境同样优化const。

volatile const int num = 10;

static 修饰局部变量延长了生命周期,没有改变作用域。
初始化不是随机值,而是0。

extern 还需要研究和 static 修饰全局变量 还不太懂,待研究
static int num =0 // 只会静态初始化一次


内存的分配:

栈 局部变量

堆区 动态内存申请

静态区 静态变量,全局变量。


练习1. 给定两个整形变量的值,将两个值的内容进行交换

int main(){    int a = 10,b = 20;    int tmp = 0;    tmp = a;    a = b;    b = tmp;    printf("%d %d",a,b);}

练习2.不允许创建临时变量,交换两个数的内容

int main(){    int a=10,b=20;    b = a +b;    a = b -a;           //a =30 - 10    b = b -a;             //b = 30 -20    printf("%d %d",a,b);}

练习3. 求10 个整数中最大值

int main(){    int i = 0;    int a[10]={0};    for (i=0;i<10;i++){        a[i]= 10*i;    }    int max = a[0];    for (i=0 ; i<10 ;i++){        if(a[i]>max){            max = a[i];        }    }    printf("%d",max);}

练习4. 将几个数按从大到小输出

//插排#include <stdio.h>int main(){    int j =0;    int i = 0,tmp = 0;    int a[5] = {1,5,7,2,9};    for(i = 1 ;i < 5 ;i++){            //假设第一个位置排好了        tmp = a[i];        for( j = i-1;j>=0&&tmp > a[j];j--){    //一直找,直到j位置>=tmp            a[j+1] = a[j];                           }        a[j+1] = tmp;                        //j位置腾出来,j--后 用j +1 抵消,把tmp放进去    }    for(i =0 ;i< 5;i++){        printf("%d ",a[i]);    }} 

练习5.求两数最大公约数

#include <stdio.h>int main(){    int a =75,b = 25;    int c = 0;    while(b !=0){    //辗转相除         c = a%b;              a = b;       //把ab较小的数给a         b = c;       //把余数给b     }    printf("最大公约数是%d",a);}
原创粉丝点击