1-为什么学习C语言

  你可能会从别的老师、师兄那得到这样的答案——“将来有可能会用到的这是基本的程序素养,锻炼一下以后有好处

你为什么学?

  1) 只是希望考试,考完不准备继续用,但还是想考好。

  2) 希望投身计算机科学,获得可以和优秀的人一起共事的机会,进入大企业创造社会价值或进入优秀的研究院改变世界。

2-C语言编程的环境

开发工具的选择

  编程环境自行选择,自行百度!

  我用的是Linux环境下的vim。

  对于程序语言的初学者来说,不要轻易地使用太复杂的 IDEintegrated development environment,集成式开发环境) 。IDE 会隐藏很多本来应该让你学习到的知识,让你丧失很多学习的乐趣,也会让你变(如果你坚持要使用 IDE,对于初学的你,我们推荐你使用 Code::Blocks Dev C++ 这种相对轻量的 IDE)。

  推荐你使用 Vim 编辑器

如果可能,你都可以试一试,找到你最喜欢、用起来最顺手的那个(在编辑器的选择上没有最好,只有最适合你,千万不要太纠结)。

 

 从代码到程序的完整过程如下图:

 

从代码到程序

 

 

 

  你编写的 C 语言程序通常以.c结尾,例如main.c。对于一个文件,可以通过执行gcc -o program main.c进行 编译(compile) ,告诉一个叫gcc的编译器,我们要编译生成一个名叫program的可执行文件(用-o program进行说明),被编译的代码文件是 main.c

  如果编译成功,我们在同一个目录下可以得到一个编译后的可以执行的program程序。再通过执行./program的方式你就可以运行这个程序了。

编写第一个程序的步骤:

  1)在配置好的Linux环境里,输入 vim a.c 进入文件,按 i 开始编辑写程序代码

  2)内容如下:

    1 #include <stdio.h>

 

    2 int main() {

 

    3  printf("Hello World\n");

 

    4 return 0;

 

    5 }

  3)然后按Ese,输入 :wq (冒号wq是保存退出的意思)回车退出

  4)编译程序:gcc -o program a.c

  5)执行程序./program , 然后命令行输出 Hello World

 

3-你的第一个C语言程序

如图,想一想下面的几个问题。

 

  你刚刚用过printf来输出了“Hello”。你有没有想问一下printf是个什么东西呢?其实,我们通过#include<stdio.h>这行代码引入了一个名为stdio Standard Input & Output)的 库(library) ,而printf则是一个在这个库中被定义的函数function),因为我们引入了这个库,你就可以用这个函数了。

  而其中用引号包裹的"Hello"则被称为函数接收的一个参数(parameter argument)。当printf函数只有一个像我们写的"Hello"这样的参数时,会直接把Hello输出。至于其它printf函数的用法,你将在之后的课程中学习到。

 

  我们已经知道,这段代码中#include <stdio.h>帮助我们引入了一个用于标准输入输出的库,这其中呢,就包括了我们用于输出的printf函数。

我们会发现,除了我们已知的部分外,剩下的代码如下:

1 int main() {

2 return 0;

3 }

  这部分代码其实完成了一个名叫main的函数的实现。它是一个特殊的函数,多数时候main函数被规定为 C 语言程序运行的入口。我们一系列的程序逻辑的拟写,都需要在main这个函数的大括号所包围的范围内完成。也就是说,当我们的 C 语言程序被编译、运行时,一切有效的逻辑,将会从main函数大括号内第一行语句开始。

这份代码中你尚未理解的部分,应该只剩下intreturn 0了吧?

  在这里,int表示了我们预期的函数的返回值类型—— 整数(integer) , int就是取自整数英文单词“integer”的前三个字母。而return 0就是在main函数的结束位置将一个整数 0 作为main函数的 返回值(return value) 交给 操作系统(operating system) 。操作系统接收到程序返回的 0 时就会认为程序正常结束,而如果接收到其他数值(无论是正整数还是负整数)则会认为程序非正常结束。

函数的基本结构

  在 C 语言中,我们可以实现一些自己的函数,形如:

1 [返回值类型] [函数名]([参数]) {

2     [函数内的语句]

3     return [返回值];

4 }

函数调用

  我们也可以在 C 语言中用通过[函数名]([传入参数值])的形式调用我们的函数,让函数内语句实现的逻辑被执行。在之后的课程中我们用专门的一章对函数进行讨论。

 

 

无处不在的函数

  “函数的英文function,直译过来就是【功能】,每一个函数其实就对应了一种功能。编程就是发挥不同功能的积木的堆积,搭好了就能解决巨大的问题”

C语言是由函数组成的

我们之后开发 C 语言程序的过程,其实也是将包含了各自逻辑意义的函数互相调用的过程(就像我们已经在main函数中调用了printf函数这样)。只不过这些函数中,有一些是外部的库中已经定义好的,我们引入了库就可以使用,比如printf是一个在stdio的库中已经定义好了可以直接使用的,而另一些可能需要你自己去定义、实现之后,你才可以进一步去进行调用。

不知道你晕菜了没有……如果没有晕,老师在这里赞一下你的“天资聪慧”!如果你已经晕了,那也没关系,后面我们还会给你很多的机会慢慢弄懂这些内容的。

4-将变量嵌入输出

#include <stdio.h>

int main() {

    int number;

    char alpha;

    // 在上面声明了两个变量,请在下面给他们赋值

    number = 1;

    alpha = 'A';

    printf("%c is %dst letter",alpha,number);

    return 0;

}

 

第一个参数中的占位符的数量与printf除第一个参数外的其他参数数量相等,并且一一对应。例如,作为函数第一个参数的字符串"%c is %dst letter"

·第一个占位符是 %c,那么它就对应了待嵌入的第一个变量 alpha ;

·第二个占位符是 %d,那么它就对应了带嵌入的第一个变量 number ;

·如果printf 第一个参数的字符串中有n个占位符,那么之后也应该有n 待嵌入的变量作为参数与之对应。

5-变量名的使用

C语言中合法的变量名需要满足以下条件:

·由大写字母、小写字母、数字、下划线

·不能以数字开头

·不能是intreturn等特定含义的保留字

除此之外,为了保证程序容易被人理解,我们会尽可能的避免a,b之类没有具体含义的命名方式,而根据变量所代表的实际意义进行命名。
例如:·year表示年    ·month表示月    ·weather表示天气

 

6-变量的作用域

在之前的课程内容中,我们学习了变量的概念,并且对变量可以被使用的范围 —— 作用域进行了解释。我们说,我们可以简单的理解一个变量的 作用域(scope) 一般可以被界定为变量声明语句之后、包裹了它的声明语句的最内一层 {} 之内。例如下图中,对于变量 alpha,图中的绿色标记了包裹了它的声明语句的最内一层 {} 所在的区域;而黄色的剪头标记出了自它声明后,它的实际作用域范围(也就是作用域)。

 

读一下下面这个 C 语言程序,选出关于这个程序描述的所有正确选项(请注意,如果输出格式的引号中有 \n,程序输出的位置将换行)。

1  #include <stdio.h>

2  int main(){

3    int year;

4    year = 2011;

5    {

6      int month;

7      month = 5;

8      printf("%d%d\n", year, month);

9      year = 2016;

10   }

11   int month;

12   month = 3;

13   printf("%d%d\n", year, month);

14   return 0;

15  }

初次开始写博客,如果那里写的不好欢迎大家评论,我会改正和优化。

posted on 2022-07-15 13:35  天天笑开心  阅读(325)  评论(0编辑  收藏  举报