您的位置:首页 > 编程语言 > C语言/C++

2020.2.26 c语言作业小记

2020-04-05 07:21 435 查看

【我常见的c语言误区,也有平时学漏了现在才发现的内容】

  1. 指针
    使用指针时,发现在使用*p类型的情况下,*p++;无法对地址的内容进行加减,需要写成(p)++;的形式,而p+=;则可以正常使用。

  2. 冒泡排序
    我最常用的冒泡排序是这种写法:
    for(i=1;i<len;i++){
    for(j=0;j<len-i;j++{
    if(num[j]>num[len-i]){
    judge = num[j];
    num[j] = num[len-i];
    num[len-i] = judge;
    }
    }
    }
    而另一种比较常见的写法是:
    for(i=0;i<len;i++){
    for(j=0;j<len-i-1;j++){
    if(num[j]>num[len-i]){
    judge = num[j];
    num[j] = num[len-i];
    num[len-i] = judge;
    }
    }
    }

    而这两种写法最容易造成的误区是把第一种写法的j<len-i写成j<len-i-1,或者是把第二种写法里的i=0写成i=1,都会得出错误答案。两种写法都各有各的缺点,并且我认为第一种写法的计算量应该更小一些。

  3. 两数交换(不涉及第三个参数)
    我认为使用按位异或运算符(^)比使用加减法简单一些
    a = a^b;
    b=b^a;
    a=a^b;

  4. 其他
    在程序运行不出来/出错后回去检查发现还有很多很低级的错误,比如把i和j写反了导致冒泡排序没有顺利进行,或者是在哪里多加了一个分号(还偏偏是很难看出来的那种)导致我一脸懵逼。。希望以后能改正把(第一篇博客,想想还有点兴奋!)

  • 点赞
  • 收藏
  • 分享
  • 文章举报
a_cobblestone 发布了1 篇原创文章 · 获赞 0 · 访问量 77 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: