您现在的位置是:首页 >其他 >C 语言详细教程网站首页其他
C 语言详细教程
目录
说明:本教程中的代码除一二三个之外,都在https://lightly.teamcode.com/dashboard (C99) 或 visual studio 2022上测试过,visual studio 2022需要做如下配置:改预定义处理:右击项目,点击“属性”,打开属性页后,点击“预处理器”,在预处理器定义中添加“_CRT_SECURE_NO_DEPRECATE ”,然后点击确定,再点击应用,最后再确定。
第一章 C语言基础知识
第一节 C语言的发展和特点
一、C语言的发展
ALGOL60 -> CPL -> BCPC -> B ->C ->标准C
目前在微机上使用的C编译程序有: Turboc、Microsoft C、Quick C。
二、C语言特点
1.结构化语言
C语言具有良好的结构化(顺序,选择和循环)语句。
C语言的函数是程序的基本模块,便于实现程序的模块化。
2.运算能力强大
C语言提供了三十多种运算符,表达式的种类多样。
3.数据类型丰富
包括整型、实型、字符型、数组型、结构体类型、指针类型、空类型等。
4.具有预处理能力
5.可移植性好
6.程序执行效率高 由C源程序生成目标代码的效率一般仅比汇编语言低10% ·20%
7.程序设计自由度大
C语言的语法限制不严格,允许程序员具有较大的自由度。
C语言允许直接对计算机硬件进行操作,即具有高级语言的功能,又具有代级语言的功能,所以也被称为“中间语言”,可用来编定系统软件。
第二节 C语言基本词法
一、字符集
C语言的字符集就是ASCII字符集,主要包含下列四类:
1.大小写英文字母A~Z, a~z(52个).
2.数字0、1 .. 9
3.非字母、非数字的可显示字符(33个), 即键盘可输入的字符
4.转义字符
二、关键字
在C语言中有特殊含义的单词称为"保留字", 也称“关键字”, 主要用于构成语句,共32个。
根据关建字的作用,可以将32个关键字分为四类
数据类型关键字(12)
控制语句关键字
存储类型关键字
其他关键字
注意:所有的保留字均由小写字母组成的,一旦有一个字母大写,其不再是保留字原来的含义。
三、标识符
标识符是用户自定义的字符序列,比如符号常量名、变量名、数组名、函数名等。
C语言规定,标识符是由字母或下划线开头的字母、数字、下划线组成的字符序列。
C语言标识符中的字母是区分大小写的。
标识符的命名应遵循简洁明了和顾名思义,以增加程序的可读性。
用户自定义的标识符既不能是C语言的关键字,也不能与用户已编写的函数或C语言的库函数重名。
四、词汇分类
C语言的词类主要分为下列六类:
1.常量: C程序运行中其值不发生变化的量,
2.标识符: C 程序中使用的变量名、函数名和标号等统称为标识符
3.关键字:由C语言规定的具有特定意义的字符串
4.运算符:C语言中用于计算的符号
5.注释符
注释符有两种: 一种是以"/" 开头,并以"/"结尾的; 多行注释:是以“//”开头的单行注释。
注释可以出现在程序的任何位置,可有多行,但 不可嵌套,注释的作用是为用户提示或解释程序的意义。编译源程序时,不对注释进行任何处理。
在调度程序时对暂不使用的语句也可用注释符括起来,待调试结束后再去掉注释符。
6.分隔符: C 语言的分隔符包括逗号和空格两种。
第三节 C语言基本语句分类
按照语句功能或构成的不同,将C语言的语句分成八类。
1.数据定义语句:用来定义程序中使用的各种能存放数据的对象的名称和特性。
2.赋值语句:形如"变量=表达式"的语句,功能是计算表达式的值并赋予变量。
3.函数调用语句:形如"函数名(实际参数表)"的语句,功能是调用指定函数。
4.表达式语句: 仅由任何表达式组成的语句。
5.流程控制语句:用来控制程序执行过程的语句。
选择控制语句: if () ~else~ switch
循环控制语句: for()~、while()~、do~while()
中止语句:break
继续循环语句: continue
返回语句: return
无条件转移语句:goto
6.复合语句: 用花括号括住的一组任意语句
main()
{
{.....} /*复和语句
}
7.空语句:无任何操作的语句,即只由分号组成的语句,一般在程序中用作空循环体。
注意: while(getchar()!=' '); 和上面程序段功能一样。
8.其他语句: 包括编译预处理命令、用户自定义类型语句等。
例:#include "stdio.h"
第四节 C程序基本组成
例1:从键盘输入两个整数,计算其乘积
#include <stdio.h> /*编译预处理命令*/
int main(void) /*主函数*/
{
int n1,n2, result; /*定义保存两个整数及其乘积的变量 */
printf("please input the two numbers:
"); /*屏幕显示提示信息*/
scanf("%d%d", &n1, &n2); /*从键盘输入两个整数并分别保存到变量n1和n2*/
result = n1 * n2; /*计算整数n1和n2的乘积并保存到就变量result*/
printf("the result is:%d
", result); /*输出变量 result 中的两个整数的乘积*/
return 0; /*返回*/
}
#include <stdio.h>
int main(void)
{
int n1, n2, result; /*定义保存两个整数及其乘积的变量 */
printf("please input the two numbers:
"); /*屏幕显示提示信息*/
scanf_s("%d%d", &n1, &n2); /*从键盘输入两个整数并分别保存到变量n1和n2*/
result = n1 * n2; /*计算整数n1和n2的乘积并保存到就变量result*/
printf("the result is:%d
", result); /*输出变量 result 中的两个整数的乘积*/
return 0; /*返回*/
}
例2:从键盘输入两个整数,计算其乘积(使用用户自定义函数实现)
#include <stdio.h> /*编译预处理命令*/
int mul(int a, int b) /*定义一个函数mul*/
{
int c; /*定义一个整型变量c*/
c = a * b; /*计算两个整数的乘积并保存到变量中*/
return (c); /*返回变量c中的两个整数的乘积*/
}
#include <stdio.h> /*编译预处理命令*/
int main(void) /*主函数*/
{
int n1,n2, result; /*定义保存两个整数及其乘积的变量 */
printf("please input the two numbers:
"); /*屏幕显示提示信息*/
scanf("%d%d", &n1, &n2); /*从键盘输入两个整数并分别保存到变量n1和n2*/
result = mul(n1, n2); /*调用函数mul计算整数n1和n2乘积并赋值给变量result*/
printf("the result is:%d
", result); /*输出变量 result 中的两个整数的乘积*/
return 0; /*返回*/
}
二、C程序基本组成的特点
1.函数是C程序的基本单元。每个C程序是由一个或多个函数构成的。每个C程序有且仅有一个主函数,该主函数的函数名规定为main.
2.每个函数(包括主函数)的定义分为两个部分:函数首部和函数体。
函数首部:返回值的类型 函数名(类型 形式参数名, ....)
函数体: {
数据定义部分
实现函数功能 的语句串
}
注意:当函数没有形式参数时写void
3.C程序中的每个语句以“分号”作为语句的结束,“分号”是C语句的组成部分,不可以省略。但预处理令和函数首部之后不能加分号.
4.C 语言本身没有输入/输出语句,而是通过调用库函数scanf()、printf()、getchar()、putchar()实现的。
5.C程序的任意位置都可以加注释,注释不编译。
/* ... */ 单行或多行注释,注意不可嵌套
//... 单行注释
6.C程序的书写格式灵活,一行内可书写多条语句,一条语句也可以写在多行上,可以任意插入空格和回车。
但为了程序清单层次分明、便于阅读,通常都采用缩格并对齐的书写方法。
一个说明或一条语句点一行。
使用空格或TAB缩进。
{}对齐
有足够的注释
有合适的空行
7.C程序中主函数和其他函数的位置是任意的,但程序的执行总是从主函数开始,并在主函数结束。其他函数总是通过函数调用语句被执行。
8.主函数可以调用任何其它函数;任何其它函数都可以相互调用,但不能调用主函数。
9.C程序中可以有预处理命令(例include命令),通常预处理命令应放在程序的最前面。
10.C语言编译系统区分字母大小写。
第五节 C程序开发环境
一、C程序的运行步骤
二、C程序的运行
第二章 数据类型、运算符和表达式
第一节 数据类型
一、C语言的数据类型及其关系图
二、C语言数据类型的说明
-
C 语言规定在使用一个数据之前,必须定义数据的类型,因为数据类型决定了数据占用内存的字节数、 取值范围以及在其上可以进行的操作等。
-
C语言的数据有常量和变量之分,它们分别属于上述的类型。
-
数据类型丰富,包括整型、实型、字符型、数组型、结构休类型、指针型和空类型等。
第二节 常量
常量的基本概念
常量以称为常数,是在程序运行过程中其值不能改变的数据。
C语言规定常量包括: 整型常量,实型常量,字符型常量、字符串常量和符号常量。
使用常量时,不需要事先定义,只需在程序中直接写出。常量的类型系统可通过书写形式自动识别,无须定义。
一、整型常量
在C语言中,整型常量有三种书写形式:
1.十进制整数:由数字0 - 9和正负号表示。如: 0、-111、+15、21等.
2.八进制数(以0开头)。例如00、-0111、+015、021
3.十六进制整数(以0x开关)。 例如0x0、 -0x111、 +0xff、0x2d
说明:(1) 正整数前面的" +" 号可以省略。
(2)整型常量在16位计算机中占用2个字节,数值范围为-2^15 ~ 2^15 -1, 即-32768 ~ 32767.
(3)长整型常量(在整数的末尾字母“L”);例如0L(十进制)、 0111L(八进制)、0x15L(十六进制)长整型常量在计算机中占用4个字符。其取值范围可达 -2^31 ~ 2^31 -1.
注意: 10 和 10L是不同的 整型常量,虽然它们有相同的数值,但它们在内存中占用不同数量的字节。
二、实型常量
实型常量只使用十进制,它的书写形式有两种:
1.十进制数形式:(必须有小数点)如: 0.123, .123, 123.0, 0.0, -.123
2.指数形式:(e或E之前必须有数字; 指数必须为整数)
如:12.3e3, 123E2,1.23e4, 错误: e-5,1.2E3.5
说明: (1)实型常在计算机中占用4个字节,数值范围都是 -10^38 ~ 10^38
(2) 实型常量有效数字是7位,例如, 1.23456789和1.234567是相同的。
三、字符常量
字符常量: 用一对单引号前后括住的单个字符。例如: 'a'、'1'、'%'、'A'。
转义字符: 一种特殊形式的字符常量,以反斜杠""开头,后跟单个字符或若干个字符组成。
四、字符串常量
字符串常量简称为“字符串”。字符串就是用两个双引号(“)前后括住的一串字符。例如, "abc"、"12345"、"a"、"A"、"101 x43"都是字符串。
空字符串:没有字符的字符串称为"空字符串". 例如:"";
字符串的长度: 一个字符串中所有字符的个数称为该字符串的长度。
例如:""的长度为0; "ab12c"的长度为5; "101 x43ab"的长度为5.
说明:
1.空串与空格串是不同的。空串不含任何字符,长度为0;空格串是包含若干空格字符的字符串,其长度为所含空格字符的个数。
2.每个字符串在内存中占用的字节数等于字符串的长度+1,其中最后一个字节存放的字符为“空字符”,其值为0, 书写时常用转义字符"