C语言入门系列二之基本语法和输入输出语句

         鉴于书本和教材文字过多、又难懂的缺点,所以我打算写一系列通俗移动的C语言入门教程,让大家在短时间内学习和掌握C语言,以及遇到C语言的一些问题该如何得到快速的解决。希望这些系列的教程,能够帮助到大家!该系列包括:
        1、C语言入门系列一之C语言介绍、环境配置和运行执行
        2、C语言入门系列二之基本语法和输入输出语句
        3、C语言入门系列三之数据类型、变量、常量、关键词和运算符
        4、C语言入门系列四之顺序结构、分支结构和循环结构
        5、C语言入门系列五之函数和递归
        6、C语言入门系列六之数组和指针
        7、C语言入门系列七之结构体
        8、C语言入门系列八之文件操作
        9、C语言入门系列九之总结和下一步打算

一、小试牛刀

        在学习本章节之前,不妨先打开C在线编译器网站 c在线编译器,c语言在线解释器,在线编程网站,如果不出意外(如果有意外请根据下面的代码一个一个敲上去)该网站已经自动帮你写好了下面的代码:

#include <stdio.h>

int main(void) { 
	printf("test");
	return 0;
}

        接下来点击网站下面的run按钮,程序的输出就会如下:

        这个文本“test”就是程序的执行结果,也可以称之为程序的输出。该程序是最简单的C语言程序,它没有包含输入,而仅仅包含输出,你可以通过修改printf("test")语句双引号的内容,比如我把“test”修改为“HelloWorld”,然后重新运行程序你就会发现程序的输出结果和之前执行的不一样了。通过这个例子,相信你已经知道一个C语言程序如何执行了,但可能你还是不明白,为什么我的程序要那么写,那些#include、main、int、void、return之类的文字是什么,到底有什么意思?接下来,我会逐一地解释的。

二、基本语法

        一门程序语言最核心的部分就是它的语言规则,上面所说到的include这些字段就是C语言程序的规则,比较官方的说法是C语言语法。C语言语法,在学习的过程中不需要死记硬背,需要用到的时候查阅相关知识便好,你可以在一些教程网站(例如C 语言教程 | 菜鸟教程),或者在CSDN博客中查(直接搜索引擎搜索,找有输出截图的网站)即可。语法知识是很多很多的,不用死记硬背,需要什么查什么就好。

       C语言程序语法主要包括六大部分:预处理器指令、函数、变量、语句、表达式和注释。

       预处理器指令都是以井号(#)开头的,它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。预处理器指令包括:#define、#include、#undef、#ifdef、#pragma等。函数是一组一起执行一个任务的语句,所以它所对应的英文名称为function(功能)。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。变量是程序可操作的存储区(这个存储区即你电脑内存条所对应的内存某个区域)的名称。C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上。语句就是C程序执行部分的组成单元,简单来说,在程序中,是按照语句这样的单元一条一条按顺序执行的,通常包括表达式语句、复合语句、空语句、函数调用语句、控制语句等。表达式则由一系列运算符(operators)和操作数(operands)组成的,运算符即“+”、“-”、“*”、“/”等运算符号,当然不止这几个;操作数就是我们日常所见的数字或者变量,例如123、-5、0、0.11等等这些,变量的话就是用它的名称作为操作数;完整的表达式示例如:123+a、56*0、(66+99)/a等。注释就是相当于笔记那样的东西,帮助我们理解的C语言语法,程序在你的编译器编译的时候注释会被自动忽略,它通过“//”符号实现单行注释,或者通过“/*   */”这样的方式实现多行注释,是个很重要的语法,初学者必须掌握,因为它能让你的代码更加容易令人看懂。

#include <stdio.h>

int main(void) { 
	printf("test"); // 输入字符串"test"
	return 0;
}

        下面我将解释上面程序的一些语法。

        1.#include<stdio.h>

       #include是一个预编译指令,在C语言程序用于引入头文件,后面紧跟的<>里面的内容便是具体的头文件。这里如果不理解不要紧,因为这是语法,它是一种定义,跟数学的一些定义一样抽象,我们只需要掌握它的用法即可。这里最关键的是头文件,通常头文件由系统和用户(这里的用户说的是就是你,程序猿)自定义组成,系统提供的标准库函数原型有这些:assert.h、ctype.h、errno.h、float.h、limits.h、locale.h、math.h、setjmp.h、signal.h、stdarg.h、stddef.h、stdio.h、stdlib.h、string.h、time.h。这些标准库函数根据系统的不同而有些差异(例如你的电脑系统是Win10,与一些Linux系统的标准库函数可能会不怎么一样)。其中比较常用的是stdio.h(标准输入输出)、stdlib.h(标准库)、string.h(字符串)、time.h(时间)、math.h(数学运算)。这些头文件会提供很多便利、可直接使用的函数,例如printf()。库函数具体有哪些,这些可通过网上即可查到,也是需要用的时候查阅。

       stdio.h就是我们上面所说的头文件,因为printf()这个函数是在stdio.h头文件里面所定义的,因此我们需要引入这个头文件,否则C语言程序就会报错,而报错就会令程序无法执行。换句话说,如果我们需要调用printf()函数,就需要引入stdio.h这个头文件

        2.intvoid

       在C语言程序中,int是一个数据类型,它用来声明变量或函数的类型,一个变量是有类型,比如变量a=10,那么a则是一个int(整型)数据类型,它被定义为范围从[-2147483648, 2147483647]的整数(32位电脑)。一个函数也是有类型的,它是用来表示函数返回的变量的类型。例如在上面的程序中main函数它返回的变量的类型便是int。数据类型除了int,还有char、long等等,具体可在一些C语言工具书或网上查询得到。

       void既可以是参数列表,也可以是函数返回的数据类型,它的实际意义就是空或者无,即无参数列表、无返回数据的意思。

        3.main(void)

       main就是C语言程序中不可缺少的函数,它同时也是程序执行起始的地方。而函数的定义如下:

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

       上述代码中的main函数里,void就是函数定义中的参数列表,它的参数列表就是没有参数列表,int就是main函数返回的数据类型;其函数体便是大括号和大括号里面的内容,它包含两条语句(printf("test");return 0;),注释不算语句,因为编译的过程会自动跳过。

        4.{}

       大括号里面可以包含很多条语句,也可以是空语句。

        5.printf("test");

       该函数的原型为:

int printf(const char *format, ...);

       这个函数比较复杂,其调用格式为: printf("<格式化字符串>", <参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原 样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符(常见的是%d整数、%c字符、%s字符串等), 用来确定输出内容格式。 参量表输出参数个数必须与格式化字符串输出参数个数一样多, 各参数之间用","分开, 且一一对应, 否则将会出现意想不到的错误。使用方法如下:

#include <stdio.h>

int main(void) { 
	int a;
    char b = 'M';
    a = 10;
    printf("%d\n",a);// 其中\n是换行的意思
    printf("%c\n",b);// 其中\n是换行的意思
    printf("%d %s %c", a, " Hello ", b);
	return 0;
}

       以上代码其运行结果如下:

        6.return

       return只在函数中使用到,根据程序的需要确定return的位置和个数,当return语句被执行的时候,使用该return语句的函数立刻执行完毕,并返回相关的数据或者不作返回(当函数的返回数据类型为void时不作任何返回,只是结束函数的执行)。在上面的main函数中,return 0是指main函数运行结束的时候返回了0,它的意义是告诉系统这个main函数正常的结束,而没有出现异常,出现异常时main函数返回的值不是0,而是非0值。

        7.注释

       在C语言程序中,有两种注释方式:单行注释和多行注释,其主要的作用便是提高程序的可读性。使用方法分别如下:

#include <stdio.h>

int main(void) { // 这是一行注释
    /*
    这是多行注释
    */
	return 0;
}

       现在重新看回最开始我们运行的C语言代码,你是否感觉已经对C语言程序和基本的一些语法程序有所了解了呢?

#include <stdio.h>

int main(void) { 
	printf("Helloworld!"); // 输入字符串"Helloworld!"
	return 0;
}

       这些解释连起来就是:我引入了输入输出的标准函数库的函数定义(即这样可以调用printf函数),然后在C语言程序最基本、最不可缺少的main函数中调用printf函数输出了字符串“Helloworld!”,然后返回数值0,程序正常运行结束。

三、输入输出语句

       前面提到了一个输出语句,即printf("Helloworld!");那么实际上输入输出语句是C语言学习者会经常使用到的语句,但实现输入输出的可不单单只有printf那么简单。经常会使用到的输入函数(都是标准输入输出函数库里面的,意味着你需要引入stdio.h头文件)有:

int scanf(const char *format, ...)从标准输入 stdin 读取格式化输入。

int getchar(void)                        从标准输入 stdin 获取一个无符号字符。

char *gets(char *str)                  从标准输入 stdin 读取一行,并把它存储在 str 所指向的字符串中。

#include <stdio.h>

int main(void) { 
	// 建议:使用离线编译器,例如Devc++或者其他的编译器
    // 输入的时候,如果是字符就输入一个字符,然后回车;
    // 如果是数字,就输入数字,输完之后再按回车。
    int a;
    char c;
    // getchar函数的使用
	c = getchar();
	printf("%c\n", c);// 输出c的值 
    
	// scanf函数的使用 
	scanf("%d", &a);// &a是获取变量a的内存地址,然后scanf函数把你输入的数存储到那个地址
    printf("%d\n",a);// 输出a的值
	return 0;
}

       经常会使用到的输出函数(同样是标准输入输出函数库里面的)有:

int printf(const char *format, ...)发送格式化输出到标准输出 stdout。

int putchar(int char)                  把参数 char 指定的无符号字符写入到标准输出 stdout 中。

int puts(const char *str)            把一个字符串写入到标准输出 stdout,直到空字符,但不包括空字符。

       上面所说的stdin、stdout实际上就是从程序执行窗口中输入、输出的意思。例如,scanf是从程序执行窗口中格式化输入的意思,putchar是输出一个字符到程序执行窗口中。其他的输入输出语句当你需要的时候网上查询如何使用,不懂的也可留言,博主会尽快解决你的问题。

#include <stdio.h>

int main(void) { 
    char c;
    // getchar函数的使用
    // putchar函数的使用
	c = getchar();
	putchar(c);// 输出c的值 
	return 0;
}

四、有趣的练习

        其实上面这些知识不懂一点关系都没有,最重要的其实是实践见真知。对于这些基础的知识而言,就是看一看就好,通过实践以后,真正理解这些东西,现在不理解,在以后的某一天理解那也是很好的。因此在这里,我给读者设置2道有趣的习题,答案并不唯一,能实现就好。写出来的可以在留言处评论~

        1.加法计算器。分别输入两个整数,输出它们之和。

        2.可恶的复读机。输入一串字符串,让你的程序输出你刚刚输入的字符串,并让这个过程无限循环,令人厌恶。提示:需要使用到while循环,请自行查询while循环如何使用。

五、参考资料

[1]:printf,百度百科printf_百度百科

[2]:C在线工具,菜鸟工具C 在线工具 | 菜鸟工具

[3]:c在线编译器,c语言代码测试c在线编译器,c语言在线解释器,在线编程网站

[4]:C语言基本概念之表达式,CSDNC语言基本概念之表达式_astrotycoon-CSDN博客_c语言表达式astrotycoon

[5]:C语言教程,菜鸟教程 C 简介 | 菜鸟教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞机火车巴雷特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值