第一个C语言程序

Hello World

这个世界上, 几乎所有程序员入门的第一段代码都是Hello World, 原因是当年C语言的作者Dennis Ritchie(丹尼斯 里奇)在他的名著 < The C Programming Language> 中第一次引入, 传为后世经典, 其它语言亦争相效仿, 以示敬意。

创建C语言文件

后续的都直接下一步即可创建好了

C语言程序的组成

  • 手机有很多功能, "开机", "关机", "打电话", "发短信", "拍照" 等等。
  • 手机中的每一个功能就相当于C语言程序中的一个程序段(函数)
  • 众多功能中总有一个会被先执行, 不可能多个功能一起执行。
  • 想使用手机必须先执行手机的开机功能。
  • 所以C语言程序也一样, 由众多功能、众多程序段组成, 众多C语言程序段中总有一个会被先执行, 这个先执行的程序段我们称之为 "主函数"。

  • 一个C语言程序由多个 "函数" 构成, 每个函数有自己的功能。
  • 一个程序 有且只有一个主函数。
  • 如果一个程序没有主函数, 则这个程序不具备运行的能力。
  • 程序运行时系统会 自动调用 主函数, 而其它函数需要开发者 手动调用。
  • 主函数有固定书写的格式和范写。

函数定义格式

主函数定义的格式:

  • int 代表函数执行之后会返回一个整数类型的值。
  • main 代表这个函数的名字叫做 main。
  • () 代表这是一个函数。
  • {} 代表这个程序段的范围。
  • return 0; 代表函数执行完之后返回整数0。
int main() {
    // insert code here...
    return 0;
}

其它函数定义的格式:

  • int 代表函数执行之后会返回一个整数类型的值。
  • call 代表这个函数的名字叫做 call。
  • () 代表这是一个函数。
  • {} 代表这个程序段的作用范围。
  • return 0; 代表函数执行完之后返回整数0。
int call() {
    return 0;
}

执行定义好的函数

主函数(main)会由系统自动调用, 但其它函数不会, 所以想要执行其它函数就必须在main函数中手动调用定义好的函数。

  • call 代表找到名称叫做 call 的某个东西。
  • () 代表要找到的名称叫 call 的某个东西是一个函数。
  • ; 代表调用函数的语句已经编写完成。
  • 所以 call(); 代表找到 call 函数, 并执行 call 函数。
int main() {
    call();
    return 0;
}

往屏幕上输出内容

  • 输出内容是一个比较复杂的操作, 所以系统提前定义好了一个专门用于输出内容的函数叫做 printf 函数, 我们只需要执行系统定义好的 printf 函数就可以往屏幕上输出内容。
  • 但凡需要执行一个函数, 都是通过函数名称 + 圆括号的形式来执行。
  • 如下代码的含义是: 当程序运行时系统会自动执行 main 函数, 在系统自动执行 main 函数时我们手动执行了call 函数和 printf 函数。
  • 经过对代码的观察, 我们发现两个问题。
  • 并没有告诉 printf 函数, 我们要往屏幕上输出什么内容。
  • 找不到 printf 函数的实现代码。
int call(){
    return 0;
}

int main(){
    call();
    printf();
    return 0;
}

告诉 printf 函数要输出的内容,将要输出的内容编写到 printf 函数后面的圆括号中即可,注意: 圆括号中编写的内容必须用双引号引起来。

printf("Hello World!");

找到 printf 函数的实现代码,由于 printf 函数是系统实现的函数, 所以想要使用 printf 函数必须在使用之前告诉系统去哪里可以找到 printf 函数的实现代码, #include <stdio.h> 就是告诉系统可以去 stdio 这个文件中查找 printf 函数的声明和实现。

#include <stdio.h>

int call(){
    return 0;
}

int main(){
    call();
    printf("Hello World!");
    return 0;
}

运行编写好的程序

方式1:

  • 点击小榔头将 "源代码" 编译成 "可执行文件"。
  • 找到编译后的源代码, 打开终端(CMD)运行可执行文件。

点击小榔头之后才会有的,进入点击了小榔头之后生成的文件夹中的 debug 目录当中。

进入 CMD 运行可执行文件,效果如下所示:

方式2:

  • 直接点击Qt开发工具运行按钮。

效果和我们之前 CMD 的方式一样的。

main函数注意点及其它写法

C语言中, 每条完整的语句后面都必须以分号结尾。

int main(){
    printf("Hello World") // 如果没有分号编译时会报错
    return 0;
}
int main(){
    // 如果没有分号, 多条语句合并到一行时, 系统不知道从什么地方到什么地方是一条完整语句
    printf("Hello World") return 0;
}

C语言中除了注释和双引号引起来的地方以外都不能出现中文。

int main(){
    printf("hello world\n"); // 这里的分号如果是中文的分号就会报错
    return 0;
}

一个C语言程序只能有一个 main 函数。

int main(){
    return 0;
}
// 编译时会报错, 重复定义了
int main(){
    return 0;
}

一个C语言程序不能没有 main 函数

// 编译时报错, 因为只有 call 函数, 没有main函数
int call(){
    return 0;
}
// 编译时报错, 因为main函数的名称写错了,还是相当于没有main函数
int mian(){
    return 0;
}

main 函数前面的 int 可以不写或者换成 void

#include <stdio.h>

// 不会报错
main(){
    printf("hello world");
    return 0;
}
#include <stdio.h>

// 不会报错
void main(){
    printf("hello world");
    return 0;
}

main 函数中的 return 0 可以不写

// 不会报错
int main(){
    printf("hello world");
}

多种写法不报错的原因。

  • C语言最早的时候只是一种规范和标准(例如 C89, C11等)
  • 标准的推行需要各大厂商的支持和实施。
  • 而在支持实施的时候由于各大厂商利益、理解等问题, 导致了实施的标准不同, 发生了变化。
  • Turbo C。
  • Visual C(VC)
  • GNU C(GCC)

所以大家才会看到不同的书上书写的格式有所不同, 有的返回 int, 有的返回 void, 有的甚至没有返回值。

所以大家只需要记住最标准的写法即可, no zuo no die。

#include <stdio.h>

int main(){
    printf("hello world");
    return 0;
}

Tips:

  • 语法错误:编译器会直接报错。
  • 逻辑错误:没有语法错误,只不过运行结果不正确。

C语言程序练习

编写一个C语言程序, 用至少2种方式在屏幕上输出以下内容。

   *** ***
  *********
   *******
    ****
     **

普通青年实现。

#include <stdio.h>

int main(){
    printf(" *** *** \n");
    printf("*********\n");
    printf(" *******\n");
    printf("  ****\n");
    printf("   **\n");
    return 0;
}

2B青年实现。

#include <stdio.h>

int main(){
    printf(" *** *** \n*********\n *******\n  ****\n   **\n");
    return 0;
}

文艺青年实现。

#include <stdio.h>

int main(){
    int  i = 0;
    while (1) {
        if (i % 2 == 0) {
            printf(" *** *** \n");
            printf("*********\n");
            printf(" *******\n");
            printf("  ****\n");
            printf("   **\n");
        }else
        {
            printf("\n");
            printf("   ** ** \n");
            printf("  *******\n");
            printf("   *****\n");
            printf("    **\n");
        }
        sleep(1);
        i++;
        system("cls");
    }
    return 0;
}

避免程序出现BUG

                          _ooOoo_
                         o8888888o
                         88" . "88
                         (| -_- |)
                          O\ = /O
                      ____/`---'\____
                    .   ' \\| |// `.
                     / \\||| : |||// \
                   / _||||| -:- |||||- \
                     | | \\\ - /// | |
                   | \_| ''\---/'' | |
                    \ .-\__ `-` ___/-. /
                 ___`. .' /--.--\ `. . __
              ."" '< `.___\_<|>_/___.' >'"".
             | | : `- \`.;`\ _ /`;.`/ - ` : | |
               \ \ `-. \_ __\ /__ _/ .-` / /
       ======`-.____`-.___\_____/___.-`____.-'======
                          `=---='

       .............................................
              佛祖保佑                   永无BUG
━━━━━━神兽出没━━━━━━
         ┏┓    ┏┓
        ┏┛┻━━━━━━┛┻┓
        ┃        ┃
        ┃   ━    ┃
        ┃ ┳┛   ┗┳ ┃
        ┃        ┃
        ┃   ┻    ┃
        ┃          ┃
        ┗━┓    ┏━┛Code is far away from bug with the animal protecting
          ┃    ┃    神兽保佑,代码无bug
          ┃    ┃
          ┃    ┗━━━┓
          ┃        ┣┓
          ┃     ┏━━┛┛
          ┗┓┓┏━┳┓┏┛
           ┃┫┫ ┃┫┫
           ┗┻┛ ┗┻┛

      ━━━━━━感觉萌萌哒━━━━━━
        ´´´´´´´´██´´´´´´´
        ´´´´´´´████´´´´´´
        ´´´´´████████´´´´
        ´´`´███▒▒▒▒███´´´´´
        ´´´███▒●▒▒●▒██´´´
        ´´´███▒▒▒▒▒▒██´´´´´
        ´´´███▒▒▒▒██´                      项目:第一个C语言程序
        ´´██████▒▒███´´´´´                 语言: C语言
        ´██████▒▒▒▒███´´                   编辑器: Qt Creator 
        ██████▒▒▒▒▒▒███´´´´                版本控制:git-github
        ´´▓▓▓▓▓▓▓▓▓▓▓▓▓▒´´                 代码风格:BNTang style
        ´´▒▒▒▒▓▓▓▓▓▓▓▓▓▒´´´´´              
        ´.▒▒▒´´▓▓▓▓▓▓▓▓▒´´´´´              
        ´.▒▒´´´´▓▓▓▓▓▓▓▒                   
        ..▒▒.´´´´▓▓▓▓▓▓▓▒                   
        ´▒▒▒▒▒▒▒▒▒▒▒▒                      
        ´´´´´´´´´███████´´´´´              
        ´´´´´´´´████████´´´´´´´
        ´´´´´´´█████████´´´´´´
        ´´´´´´██████████´´´´             大部分人都在关注你飞的高不高,却没人在乎你飞的累不累,这就是现实!
        ´´´´´´██████████´´´                     我从不相信梦想,我,只,相,信,自,己!
        ´´´´´´´█████████´´
        ´´´´´´´█████████´´´
        ´´´´´´´´████████´´´´´
        ________▒▒▒▒▒
        _________▒▒▒▒
        _________▒▒▒▒
        ________▒▒_▒▒
        _______▒▒__▒▒
        _____ ▒▒___▒▒
        _____▒▒___▒▒
        ____▒▒____▒▒
        ___▒▒_____▒▒
        ███____ ▒▒
        ████____███
        █ _███_ _█_███
——————————————————————————女神保佑,代码无bug——————————————————————

多语言对比

C语言。

#include<stdio.h>

int main() {
    printf("BNTang 带你装B带你飞");
    return 0;
}

C++语言。

#include<iostream>
using namespace std;

int main() {
    cout << "BNTang 带你装B带你飞" << endl;
    return 0;
}

OC语言。

#import <Foundation/Foundation.h>

int main() {
    NSLog(@"BNTang 带你装B带你飞"");
    return 0;
}

Java语言。

class Test
{
    public static viod main()
    {
        system.out.println("BNTang 带你装B带你飞");
    }
}

Go语言。

package main
// 引入fmt库
import "fmt"

func main() {
    fmt.Println("BNTang 带你装B带你飞")
}
posted @ 2020-12-06 23:40  BNTang  阅读(0)  评论(0)    收藏  举报