C

1. C语言教程-第一个程序

1. First Program

Posted by xuepro on October 30, 2017

“教小白精通编程”系列之“C语言教程” (版权所有,不得转载,擅自抄袭转载将承担法律责任)

1.第一个程序

最简单的C程序:下面的是最简单的C语言程序

void main()
{
}

任何C语言程序都是从一个叫做”main”的“函数”执行的,所谓函数就是一个命名的程序块(或者说一组语句)。一个函数由4个部分组成: 返回类型、函数名、参数列表、函数体

返回类型  函数名 (参数列表)
{
  函数体
}

比如上面的最简单程序中的函数名叫做”main”,其前面的void是这个函数的返回类型,表示函数不返回任何结果值。函数名后的圆括号()包含一些函数的”形式参数“,成为“参数列表”。以后我们会说明什么叫“形式参数”,目前这个函数的参数列表是空的,即没有任何形式参数。参数列表后面由花括号{}包围起来的叫做函数体。函数体中就是这个函数里面的程序语句。目前也是空的,表示这个函数里没有任何语句,也就是说这个函数什么也不做!

我们再看一个程序,请用任意一个文本编辑器编辑如下的内容:

#include < stdio.h>

void main(){
   printf("\nHello World\n");
}

将上面内容保存到一个文件( 如 hello.c)中,然后在命令行中输入如下的命令编译Compile 该文件:

 gcc hello.c

将在文件所在目录中生成一个叫做 a.out (Unix/Linux)或a.exe(windows系统)的可执行文件。可以执行该程序:

  ./a.out  
 
    a

这个程序会在控制台窗口里输出:1个空行、一行字符串、1个空行


Hello World

当然,我们也可以按照上一篇 “C语言介绍”中的说明或本文下面的视频链接在集成开发环境或sublime中编辑源程序代码、编译运行这个程序!

这个所谓的“hello world”程序在main函数的函数体中包含了一条程序语句

   printf("\nHello World\n");

其中的printf又是一个函数,而这个函数是C语言实现者帮我已经写好在标准库中的一个函数,为了能是编译器知道printf是一个什么样的函数,我们就需要在main函数的前面包含一下这个函数的说明所在的头文件stdio.h,stdio.h中包含了所有标准输入输出(input/output,简称io。std是标准standard)函数的说明。

为了将这个stdio.h内容包含进我们的程序文件,需要用到一个预处理命令 #include:

#include < stdio.h>

编译工具在编译这个程序时,首先会使用一个“预处理器”对所有的预处理命令如#inlude进行相应的处理,对于#include,预处理器会用stdio.h的内容替换掉预处理语句”#include < stdio.h>”。然后编译器才对这个处理过的C源程序进行编译,因为stdio.h中已经对printf函数进行了说明,所以当在main函数中遇到printf时,就知道这是一个“函数调用”,即调用printf函数中的程序代码对圆括号()中的“实际参数”进行处理,即将两个双引号”“括起来的字符串中内容输出到屏幕窗口中。

C程序中双引号括起来的表示的是一个字符串(即一串字符)。字符有字母、数字、下划线_等可以在屏幕上直接看到的字符,还有一些不能看到的字符如回车、换行符等, C语言中一个字符用单引号表示,如’A’、’4’、’\n’。这个字符’\n’表示的是一个字符而不是2个字符\和n。当printf函数遇到这个特征的字符’\n’时会执行换行动作,因此上面的程序中输出时,先1个空行,最后又是1个空行。

这种’\n’用反斜杠表示不可打印的字符叫做转义字符。还有一些常用的转义字符如下:

   '\t'  表示的是“制表符”,printf函数遇到这个字符会输出几个空格
   '\\'  表示的是反斜杠字符\
   '\''  表示的是单引号字符'   

再看下面的程序:

/* ------2017-10-30-----
   这是第一个程序,
   
   即著名的“hello world”程序
   
   作者:hello world
   
*/

#include < stdio.h>

void main(){
   printf("\nHello World\n");
}

在”#include”语句前面的以/*开头和*/结尾的,其中可能有多行文字的,称为“注释”。所谓“注释”就是用于对程序说明的文字,它们不是程序本身的语句,仅仅对程序做一下说明或解释。其目的是为了方便他人能阅读理解程序,也为了自己今后能回顾当时是怎么写这个程序的。如如同我们在一本书上做笔记注解一样,这些笔记注解不是程序的一部分,完全可以删除,不会影响程序的运行! 但“对程序进行注释”是一个良好的习惯!

2011年批准的C语言新标准C11,还允许所谓的“单行注释”,即 以2个斜杠 // 开头的这一行之后的文字都属于注释。如


//  这是第一个程序,
   
//   即著名的“hello world”程序
   
//   作者:hello world
   
//  2017-10-30

#include < stdio.h>

int main(){                      // 返回类型int,表示返回一个int类型的整数值 

   printf("\nHello World\n");    // 用printf函数输出1个空行,1个字符串和另外1个空行
   
   return 0;                     // 用关键字return返回int类型的整数值0给操作系统,表示成功,
   
                                 // 如果返回不是0的值一般表示失败,不同整数值代表不同的错误
                                 
}

总结:

1) c程序执行的是一个名字叫做main的函数,该函数也称为主函数。

2) 函数是由“返回类型、函数名、参数列表、函数体”四部分组成的,由左右花括号包围的多个语句称为“程序块”或“复合语句”.一个函数中可以有调用其他函数的“函数调用”语句,比如main函数中的“printf(“\nHello World\n”)”调用了printf函数中的代码。C语言中的复合语句(或称语句块)的格式为:

{
   语句1
   语句2
   ...
}

3) printf是一个(标准库中的)函数, 标准库中别人已经写好了很多这样的标准函数,程序员就不要自己重新写这些代码了,直接拿来用就可以了,可以大大节省了时间、提高了编程的效率!这些函数如同别人已经加工好的标准件一样,不需要自己从头加工了。

因为printf这个函数的规范是在标准输入输出头文件 stdio.h 说明的,所以需要用预处理关键字#include将这个头文件包含进来,这样,编译器将来遇到这个标识符printf才能知道这是一个什么东东! (变量?函数?类型?) 

4) C语言的每个东东如函数名、变量名、类型名等都是用一个标识符表示的,如上面程序的函数名main、printf,用来区别不同的东东。所谓标识符就是一串满足下列规定的字符串:

  a) 只能以下划线_和字母开头,
  b) 只能包含下划线_、字母和数字
  c) 不能与C语言已经使用(保留的)名字相同
  d) 标识符是区分大小写的,即  printf和Printf是不同的标识符!

5) 字符串是用双引号括起来,而字符则用单引号括起来.转义字符是以反斜杠\开头的表示一个单个的不可见的字符。

6) 以/*开头和*/结尾的之间的内容是程序注释,方便阅读理解,它们不属于程序代码的组成部分。

7) 程序语句是以分号 ; 结束的,因此上面程序也可以写成下面的样子:

   #include <stdio.h> void main(){printf("\nHello World\n");}

虽然是一样的正确程序,但显然不如一开始的那样的格式更加具有可读性!我们习惯上每行写一个语句,而且不同程序块的语句要具有一定的缩进,这样的代码,自己和别人看起来都舒服!就像我们写文章,一般段落开头缩进2个字一样! 

注意:预处理命令本质上不是C语言程序语句。

练习:

  1. 判断下面的程序输出是什么样的? 
#include < stdio.h>
    
void main(){ 
   printf("\n");
   printf("Hello\tWorld");
   printf("\n");
}
  1. 下面的程序定义了函数f,然后main函数调用它2次,请先判断函数运行结果,然后实际编译运行该程序看看是否符合你的预期 ```cpp void f(){ printf(“这是函数f\n”); }

int main(){    f(); //调用函数f

   f(); //调用函数f

return 0; }

3. 请编程输出下面的图案.并想一想你还能用pritnf做一些什么工作呢?

```c
         *
       *   *
     *   *   *
   *   *   *   *

C语言程序的编译与运行,请查看微博的视频,如:

mingW-GCC编译C程序

sublime配置MinGW搭建C/C++编程环境 视频

CodeBlocks编译C程序

VS2017的安装及编译运行C程序

关注“教小白精通编程”博客微博“教小白精通编程”  


支付宝打赏 微信打赏

您的打赏是对我最大的鼓励!