03-第一个C语言程序

  1. 云栖社区>
  2. 博客>
  3. 正文

03-第一个C语言程序

极客江南 2018-08-21 18:11:00 浏览1056
展开阅读全文

Hello world

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


    img_129170804bc69b901f044332fa4c77e0.png

如何创建C语言文件

  • img_44fee038bb4dc9ae2f8f8c0dfa241f0a.png
  • img_8dca296501f0c84c12e845a72a22c537.png
  • img_f2b7b57a9bfafc7d104a3bba10636a9e.png
  • img_0632d06132acd709a26fbcbee0d55f56.png
  • img_9cddbf524935a3a17dc49b65450cda4b.png
  • img_a3cf587ab43e30cfb493ceebca5fd70e.png

C语言程序组成

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


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


    img_f5f1a151a663b168af7a2c2a88d60c65.png

函数定义格式

  • 主函数定义的格式:
    • 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\n");
  • 如何找到printf函数的实现代码
    • 由于printf函数是系统实现的函数, 所以想要使用printf函数必须在使用之前告诉系统去哪里可以找到printf函数的实现代码
    • #include <stdio.h> 就是告诉系统可以去stdio这个文件中查找printf函数的声明和实现
#include <stdio.h>

int call(){
    return 0;
}

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

如何运行编写好的程序

  • 方式1:
    • 点击小榔头将"源代码"编译成"可执行文件"
    • 找到编译后的源代码, 打开终端(CMD)运行可执行文件
      • img_1c7cdd3fa63986b7bf5d9dce9635e0a0.png
      • img_bbe4866633d84b5ddc4ef2b4bf0ca243.png
      • img_ddf0544be992fcd0e711231956e15cec.png
      • img_142315360ea261d44aeee8a0a56165ca.png
      • img_ebc2ce8e16d03e941b8e944a28872333.png
  • 方式2
    • 直接点击Qt开发工具运行按钮
      • img_f753cd32f3be5f06ba935ad9b7cb14db.png
      • img_d659cde7ebe0f9ccca6c4944698ebaa1.png

main函数注意点及其它写法

  • C语言中,每条完整的语句后面都必须以分号结尾
int main(){
    printf("hello world\n") // 如果没有分号编译时会报错
    return 0;
}
int main(){
    // 如果没有分号,多条语句合并到一行时, 系统不知道从什么地方到什么地方是一条完整语句
    printf("hello world\n") return 0;
}
  • C语言中除了注释和双引号引起来的地方以外都不能出现中文
int main(){
    printf("hello world\n"); // 这里的分号如果是中文的分号就会报错
    return 0;
}
  • 一个C语言程序只能有一个main函数
int main(){
    return 0;
}
int main(){ // 编译时会报错, 重复定义
    return 0;
}
  • 一个C语言程序不能没有main函数
int call(){ // 编译时报错, 因为只有call函数, 没有main函数
    return 0;
}
int mian(){ // 编译时报错, 因为main函数的名称写错了,还是相当于没有main函数
    return 0;
}
  • main函数前面的int可以不写或者换成void
#include <stdio.h>
main(){ // 不会报错
    printf("hello world\n");
    return 0;
}
#include <stdio.h>
void main(){  // 不会报错
    printf("hello world\n");
    return 0;
}
  • main函数中的return 0可以不写
int main(){ // 不会报错
    printf("hello world\n");
}
  • 多种写法不报错的原因
    • 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\n");
    return 0;
}

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


C语言程序练习

  • 编写一个C语言程序,用至少2种方式在屏幕上输出以下内容
   *** ***
  *********
   *******
    ****
     **
  • 普通青年实现
printf(" *** *** \n");
printf("*********\n");
printf(" *******\n");
printf("  ****\n");
printf("   **\n");
  • 2B青年实现
printf(" *** *** \n*********\n *******\n  ****\n   **\n");
  • 文艺青年实现(装逼的, 先不用理解)
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");
}

初学者如何避免程序出现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
        ´´▓▓▓▓▓▓▓▓▓▓▓▓▓▒´´                 代码风格:江哥style
        ´´▒▒▒▒▓▓▓▓▓▓▓▓▓▒´´´´´              
        ´.▒▒▒´´▓▓▓▓▓▓▓▓▒´´´´´              
        ´.▒▒´´´´▓▓▓▓▓▓▓▒                   
        ..▒▒.´´´´▓▓▓▓▓▓▓▒                   
        ´▒▒▒▒▒▒▒▒▒▒▒▒                      
        ´´´´´´´´´███████´´´´´              
        ´´´´´´´´████████´´´´´´´
        ´´´´´´´█████████´´´´´´
        ´´´´´´██████████´´´´             大部分人都在关注你飞的高不高,却没人在乎你飞的累不累,这就是现实!
        ´´´´´´██████████´´´                     我从不相信梦想,我,只,相,信,自,己!
        ´´´´´´´█████████´´
        ´´´´´´´█████████´´´
        ´´´´´´´´████████´´´´´
        ________▒▒▒▒▒
        _________▒▒▒▒
        _________▒▒▒▒
        ________▒▒_▒▒
        _______▒▒__▒▒
        _____ ▒▒___▒▒
        _____▒▒___▒▒
        ____▒▒____▒▒
        ___▒▒_____▒▒
        ███____ ▒▒
        ████____███
        █ _███_ _█_███
——————————————————————————女神保佑,代码无bug——————————————————————

多语言对比

  • C语言
#include<stdio.h>
int main() {
    printf("南哥带你装B带你飞");
    return 0;
}
  • C++语言
#include<iostream>
using namespace std;
int main() {
    cout << "南哥带你装B带你飞" << endl;
    return 0;
}
  • OC语言
#import <Foundation/Foundation.h>
int main() {
    NSLog(@"南哥带你装B带你飞");
    return 0;
}
  • Java语言
class Test
{
    public static viod main()
    {
        system.out.println("南哥带你装B带你飞");
    }
}
  • Go语言
package main
import  "fmt" //引入fmt库
func main() {
    fmt.Println("南哥带你装B带你飞")
}

配套视频地址:www.it666.com

网友评论

登录后评论
0/500
评论
极客江南
+ 关注