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

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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值