• C语言-笔记一


    笔者简介:

    本人是现在是在校的一枚研二的学生,最近同实验室的师兄找工作,感觉真心不容易,也让我感到很焦虑,想想现在的我,对编程语言掌握的并不好,糊里糊涂的,想想明年的我,感觉压力很大。所以,每天抽出点时间专门去学习一下编程语言,并记录一下学习笔记,给自己一个鞭策。

    那么,选择哪一个编程语言呢? - -C语言,公司招聘基本上都要求掌握的语言当中必有C,系统的学习一下C还是非常有必要的。本科阶段学过C语言,不过学的很糊涂,现在重新系统的学习一遍,希望自己有一个不小的收获。

    正文:

    好了,开始我们今天的第一个笔记啦:
    本笔记参考的书籍为: Stephen Prate著 C Primer Plus
    C语言是一个编译性的语言。我们写的代码并保存为.c格式,这个称其为源码,然后经过编译器生成可执行文件,也就是.exe文件,如下面的代码:我们保存为Happy.c ,然后在在命令行下输入:

    gcc Happy.c -o Happy

    即可完成编译任务,生成可执行文件Happy.exe,注意:键入上述命令时,首先你电脑上要有C编译器,并且在源码的文件路径下。

    来向祖国道一声“生日快乐吧!”:

    /* 这是一个祝福祖国生日快乐的简单C程序 */
    #include<stdio.h>
    int main(void) //这是主函数,无论这个函数在文件的哪个位置,程序从这里开始
    {
    int age = 69;
    printf("Happy birthday to my motherland at the age of %d.
    ", age);
    
    return 0;
    }

    #include<stdio.h> :该语句的作用相当于你在文件中该行所在的位置键入了文件stdio.h的完整内容。实际上,它是一种剪切和粘贴的操作,这样可以方便地在多个程序间共享公用的信息。那么,这个stdio.h文件里包含了什么东东呢?由于上述程序中使用了printf()函数,可是我们并没用去定义这个函数,那这个函数怎么就可以把"Happy Birthty Day To Chian"输出到控制台的呢?那是因为,你没有定义函数,但是你复制粘贴了stdio.h这个文件了呀,这个文件里有定义了printf()这个函数,在这个文件中它说明了函数名以及该函数如何使用,但是函数的实际代码并不在这个文件了,而是在一个预编译代码的库文件中。那什么是预编译呢?#include语句是C预处理指令的一个例子,通常,C编译器在编译前要对源代码做一些准备工作,这就称为预处理。在C世界中,人们称出现在文件顶部的信息集合为头(header),C实现通常都带有许多头文件。

    int main(void): main(),这是一个函数名为main的函数,也是C程序执行的起始函数,int 指这个函数处理后要返给操作系统一个int值。void: 表明这个主函数并不接受任何参数。

    {}: 表示所有的C函数都使用花括号来表示函数体的开始和结束,花括号还可以用来把函数中的语句聚集到一个单元或代码块中来。

    int age = 69 : 生明并初始化变量age为69

    ;分号 -- 表明一个语句的结束

    %d : int 类型变量的占位符

    : 转义字符,表示光变换到下一行

    return 0 表示,这个主函数结束,返回一个int类型的值 0

    /* */ 注释,可以在/*和*/之间写多行注释

    // 这是单行注释,在//之后的字符会被编译器忽略

    age: 是int类型的变量名,给变量起名字尽量一眼就能看出其含义,方便阅读源代码。变量名的起名规则: 可供使用的字符有小写字母、大写字母、数字和下划线。第一个字符必须是字母或者下划线。

    除了使用标准的printf()函数外,怎么把自己的函数加入到程序中呢?

    #include<stdio.h>
    void question(void); // C 函数原型
    void answer(void); 
    void question(void)
    {
    printf("What's the date today?
    ");
    }
    int main(void)
    {
    int age = 69;
    printf("Happy birthday to my motherland at the age of %d.
    ", age);
    question();
    answer();
    
    return 0;
    }
    void answer(void)
    {
    printf("Today is October 1st National Day.
    ");
    }

    answer()函数在上述程序中出现了3次。第一次是出现在原型中,通知编译器要用到的函数。第二次是在main()函数中以函数调用的形式出现的。最后,程序给出了函数的定义,既函数本身的源码。而在上述关于printf()函数的谈论,现在也可以进一步的解释,在文件stdio.h中,类似void answer(void);这样声明了函数的名字及参数,但函数本身的代码并不在stdio.h文件中,而在预编译代码库中。简单的理解,也就是stdio.h文件提供了printf()函数的接口。而,question()函数本身的代码却在main()函数的上面,这实际没有影响的,程序是从main()函数开始执行的,只要在main()函数之前有通知了编译器有question()这个函数了就行。


    第二章编程练习习题及答案(已经编译通过)
    /*
    1. 编写一个程序,调用printf()函数在一行上输出您的名和姓,再调用一次printf()函数在两个单独的行上输出您的名和姓,然后调用一对printf()函数在一行上输出您的名和姓。
    输出应如下所示:

    Anton Bruckner 第一个输出语句
    Anton 第二个输出语句
    Bruckner 第三个输出语句
    Anton Bruckner 第四个输出语句

    */

    #include<stdio.h>
    int main(void)
    {
    printf("Anton Bruckner
    ");
    printf("Anton
    Bruckner
    ");
    printf("Anton ");
    printf("Bruckner");
    
    return 0;
    }

    /*

    2. 编写一个程序输出您的姓名及地址
    */

    #include<stdio.h>
    int main(void)
    {
    printf("My name is Double Lin.
    ");
    printf("Localtion: Heifei, Anhui.
    ");
    
    return 0;
    }

    /*

    3. 编写一个程序,把您的年龄转换成天数并显示二值的值。不用考虑平年或者闰年的问题,一年=356
    */

    #include<stdio.h>
    int main(void)
    {
    int age = 23; //声明年龄为23
    printf("age: %d days: %d ",age,age*356);
    
    return 0;
    }

    /*
    4. 编写一个能够产生下面输出的程序:

    For he's a jolly good fellow!
    For he's a jolly good fellow!
    For he's a jolly good fellow!
    Which nobody can deny!

    程序中除了main()函数之外,要使用两个用户定义的函数:一个用于把上面的夸奖消息输出一次; 另一个用于把最后一行输出一次
    */

    #include<stdio.h>
    void function_1(void); // 原型函数
    void function_2(void);
    
    void function_1(void)
    {
    printf("For he's a jolly good fellow!
    ");
    }
    
    int main(void)
    {
    function_1();
    function_1();
    function_1();
    function_2();
    
    return 0;
    }
    
    void function_2(void)
    {
    printf("Which nobody can deny!");
    }

    /*
    5. 编写一个程序,创建一个名为toes的整数变量。让程序把toes设置为10,。再让程序计算两个toes的和以及toes的平方。程序应该输出所有的3个值,并分别标识它们

    */

    #include<stdio.h>
    int main(void)
    {
    int toes = 10;
    
    printf("toes: %d
    sum of toes: %d
     squared of toes: %d
    ",toes,2*toes,toes*toes);
    
    return 0;
    }

    /*
    6. 编写一个能够产生下列输出的程序:

    Smile!Smile!Smile!
    Smile!Smile!
    Smile!

    在程序中定义一个能显示字符串Smile!一次的函数,并在需要的时使用该函数

    */

    #include<stdio.h>
    void function(void);
    
    void function(void)
    {
    printf("Smile!");
    }
    
    int main(void)
    {
    function();
    function();
    function();
    printf("
    ");
    function();
    function();
    printf("
    ");
    function();
    
    return 0;
    }

    /*
    7. 编写一个程序,程序中要调用名为one_three()的函数。该函数要在一行中显示单词"one",再调用two()函数,然后再在另一行中显示单词"three". 函数two()应该能在一行中显示单词"two"
    main()函数应该在调用one_three()函数之前显示短语"starting now";函数调用之后要显示"done!".这样,最后的输出结果应如下所示:
    starting now:
    one
    two
    three
    done!
    */

    #include<stdio.h>
    void one_three(void);
    void two(void);
    
    int main(void)
    {
    printf("starting now:
    ");
    one_three();
    printf("done!
    ");
    }
    
    void one_three(void)
    {
    printf("one
    ");
    two();
    printf("three
    ");
    }
    
    void two(void)
    {
    printf("two
    ");
    }
  • 相关阅读:
    svmlight、libsvm 和 svmtorch(torch) 极夜.潜的日志 网易博客
    ObjectiveC学习之旅(二)函数、类、作用域
    快速掌握 ObjectiveC (For C/C++ developer)
    MAC系统使用总结
    VM虚拟机安装苹果雪豹操作系统
    asp.net调试遇到的问题
    C#调用WebService
    SqlServer2008建立触发器实例
    sqlserver2008无法登陆问题
    IIS上面部署网站
  • 原文地址:https://www.cnblogs.com/double-lin/p/9735852.html
Copyright © 2020-2023  润新知