zoukankan      html  css  js  c++  java
  • 【启蒙】C笔记之初学阶段(上篇)

     

    (全是干货,如果你是C语言的初学者,搞懂如下推荐的题目,你就已经比你的同学走在前面很多了!)-------(后期补充)

    (如果有些代码你看不懂,请将你的问题写在评论区,我一定会回复你的!)

    这是我初学的时候觉得一些比较难的题目,我把这些题目推荐给大家,免去了做一些无用的题,还浪费了一些时间,无脑题少做,虽然很爽,但是对提高没啥好处。。。

    比如说,,这题:https://www.luogu.com.cn/problem/P1000

    榜一大佬的答案就是了,,,,不过嘞。。。。。。如果你的思路是榜二的思路,强烈推荐写一波(得费点神咯,hh~)

     做题流程:

    做题前审题一定要仔细,观察有哪一些限制条件,将关键词记下。(限制条件一定要找完整,要不然到后面会浪费很多时间)。
    一定要带草稿纸,在草稿纸中把你心里的想法用简单的C语言表达出来,
    写完之后对照限制条件顺着你自己的思路走一下,限制条件如果有点多的话,多自己用几个例子
    去代替,碰到错误纠正过来。
    最后照着纸的内容快速打码。
     
    思路大家都知道,最主要是调试代码的能力,我们平时刷题,练的就是调试代码的能力,如果你能很快的调试出代码的问题,那么你就能多争取一些时间去刷下一题,千万不要遇到困难就退缩,记得当时刷题的时候,一个题目要改几天,万匹草泥马奔腾而过,,,,时不时口吐芬芳。。。。。
     

    小提示:

    ①有时候思路是对的,感觉写的算正确,但是就是得不到满分。那可能题目再卡你的点,把范围开大一点,对于初学者来说,想开多大就开多大。开在主函数里面数据大了就会爆栈,所以开数组的话推荐开到主函数外面去。
     
    ②有循环这种语法就一定要好好用到,因为电脑是死的,不会偷懒,只会干傻逼事,所以我们有时候就没必要帮他想,累了自己。
    初学者一定要把思路转换过来,用电脑的思维去想问题,机器可没你那么聪明伶俐、冰雪聪明、秀外慧中、聪明才智、颖悟绝伦..........聪明....绝顶。
    (兄弟保重,我先剃为敬!)
     
    例:
     
    对于此题,我刚开始想,应该用什么数学公式,把双休日分开算,最后七算八算经过麻烦的死,一看答案,我的妈呀!!!真简单,就让电脑循环算,给他一个限制条件,给他一个终止命令,此题结束!  
    审题一定要仔细,弄清楚题目究竟要让你干什么。别被题目迷惑了。
    看完了一点提示,先做一下这题吧:https://www.luogu.com.cn/problem/P1424
     
     

    题目推荐

    在初学的时候,我就被这题绕住了,当时在网上搜到极简代码,用指针写,当时一脸懵逼,到了后面刷的题多了一点,才知道这题其实很简单,所以我把这题推荐给大家。

    http://www.51cpc.com/problem/1059

    附上个人题解:

     https://www.cnblogs.com/Attacking-vincent/p/12720837.html

    这题是有关于acill码的题目,当时对这个东西有点陌生。

    这里有个小技巧,(适用于不记得ACILL码,而且没网,,大多是在考试的时候),你可以这样:

    #include<stdio.h>
    int main(){
        char ch='a';
        printf("%d
    ",ch);
        return 0;
    } 
    关注点个赞吧!

    https://www.luogu.com.cn/problem/P1914

     这题就是利用了取模思想,有了取模,你就可以将一条直线的关联信息变成环状。

    #include<stdio.h>
    #include<string.h>
    int a[1000];
    int main(){
        int n,i;
        char a[1000];
        scanf("%d%s",&n,a);
        for(i=0;a[i]!='';i++){
            printf("%c",(a[i]-'a'+n)%26+'a');
        }
        return 0;
    }

    Tips:

    ①遇到辨别单词个数之类的时候用空格区分。(如果学了C++就不用写了)

    例题好好做哦,不会的知识点可留言哦,我肯定及时回答。

    附上题目http://www.51cpc.com/problem/1061

    附上个人题解https://www.cnblogs.com/Attacking-vincent/p/12721966.html

     ②只有奇数才会是质数。

    ③要懂得运用已有的数据,不要将数据复杂化,能减少变量就减少变量!

     
     

    题目解题方法

    冒泡排序法
     
     
    它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。(摘自百度百科)
     
     
    选择排序法
     
    它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。(摘自百度百科)
    个人感觉就是冒泡排序的升级版。
     
    有这种小数点的定要注意精度,防止精度丢失。
     

    递归函数相关概念

    对于递归函数,就是调用自己设计的函数,相当于循环函数;
    在这之中分为有参和无参
     

    递归例子:

     
    (如过你做过此题,请你再做一遍,真的很经典!)
    累计记得的单词数
     
    看完这个,我们再看看另一个题目吧
     
     
    做递归题,我们不能太着急,先在草稿纸中写好累积的算法,然后再调用函数。为什么会反着输出呢,是因为,要知道第一个摘下的桃子数量,就得先过第九天的程序,反向得到答案,运用电脑的特性,死算。
     
     

    一种新的数字倒序输出法!!

    这个想法当初被老师夸奖了一波,我现在推荐给大家,大家要好好用哦!!
     
     
    END?????
    看到这里感觉怎么样???
     
    什么???太简单了,同学都会。
    那就看看下篇中的我学习过程中遇到当时觉得比较好的代码吧!
     
    如果你这篇不懂,记得评论区留言哦!
    我会加以修改,说的更详细,谢谢你关注!
     
    【启蒙】C笔记之初学阶段(下篇)https://www.cnblogs.com/Attacking-vincent/p/12721609.html
     
     
    给个赞再走呗!
  • 相关阅读:
    HDU 2196 Computer
    HDU 1520 Anniversary party
    POJ 1217 FOUR QUARTERS
    POJ 2184 Cow Exhibition
    HDU 2639 Bone Collector II
    POJ 3181 Dollar Dayz
    POJ 1787 Charlie's Change
    POJ 2063 Investment
    HDU 1114 Piggy-Bank
    Lca hdu 2874 Connections between cities
  • 原文地址:https://www.cnblogs.com/Attacking-vincent/p/12720675.html
Copyright © 2011-2022 走看看