当前位置:首页 > 情感技巧 > 正文内容

c语言基础教程(c语言基础)

hacker2年前 (2022-07-10)情感技巧76

本文目录一览:

C语言入门知识

C语言基础知识

1.1 C语言简介

C语言于1972年由美国的Dennis Ritchie发明,并首次在配备了UNIX操作系统的DEC PDP-11计算机上实现。它由早期的编程语言BCPL(Basic Combind Programming Language)发展演变而来。1970年,ATT贝尔实验室的Ken Thompson根据BCPL语言设计出了较先进并取名为B的语言,通过不断修改、完善,更先进的C语言问世了。

C语言是一种功能强大、应用广泛、具有发展前途的计算机语言。它既可用于系统软件的设计,也可用于应用软件的开发。许多著名的系统软件都是由C语言编写的。C语言具有下列特点:

(1)C语言既具有低级语言直接操纵硬件的特点,又具有高级语言与 自然语言和人的思维逻辑相似的特点,C语言程序易编写、易查错,而且实用性很强。

(2)C语言具有丰富的数据类型和运算符,语法结构简单。

(3)C语言是一种结构化程序设计语言,提供了完整的程序控制语句。

(4)C语言是一种模块化程序设计语言,适合大型软件的开发和研制。

(5)C语言还有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型,其程序移植性好。

1.2 C语言的数据类型

数据是程序处理的对象,数据类型是数据的内在表现形式。例如,学生的年龄和成绩具有一般数值的特点,在C语言中称为数值型,其中年龄是整数,称为整型;成绩可以为小数,称为实型。而学生的姓名和性别是文字,在C语言中称为字符型数据。

C语言具有丰富的数据类型,其中基本的数据类型有整型、实型、字符型。

1.2.1 变量

变量是在程序执行过程中其值可以被改变的量。

1.变量命名规则

和人的取名一样,变量的命名也有一定的规则。

(1)由字母、数字和下划线组成;

(2)必须以字母或下划线打头;

(3)字母区分大小写(在系统默认状态下);

(4)前32个字符有效(在系统默认状态下)。

例如:a,Book,book,_Make_Cipher都是合法的变量名,且Book与book是不同的变量名,而123A,x+y都不是变量名。

2.变量的数据类型

变量可以是任意的一种数据类型,如整型变量、字符型变量、指针变量等。C语言中的基本数据类型及其特性如表1-1所示。

表1-1 C语言的基本数据类型

数据类型名 数据类型描述 数据类型的长度(字节) 数据取值范围

char 字符型 1 0~255

int 有符号整型 2 –32 768~32 767

unsigned int 无符号整型 2 0~65 535

short 短整型 2 –32 768~32 767

long 长整型 4 –2 147 483 648~2 147 483 647

unsigned long 无符号长整型 4 0~4 294 967 295

float 单精度实数 4 |3.4×10–38|~|3.4×1038|

double 双精度实数 8 |1.7×10–308|~|1.7×10308|

long double 长双精度实数 10 |3.4×10–4932|~|3.4×104932|

3.变量的定义

每个变量在使用前都必须先定义其数据类型,定义变量数据类型的语法格式如下:

数据类型符 变量名1,变量名2,…;

例如:

int age,score; /* 定义年龄和成绩为整型 */

char name[20]; /* 定义姓名为至多含20个字符的字符数组 */

4.变量的存储类型

当定义某个变量时,C语言的编译系统就要给该变量分配若干个存储单元用来存放该变量的值。而在计算机中寄存器和内存都可以存放数据,内存又可分为临时占用和长期占用。变量的存储类型是指变量在计算机中的存放位置及时间。

定义变量存储类型的语法格式如下:

存储类型符 数据类型符 变量名1,变量名2,…;

变量的存储类型有自动型(auto)、寄存器型(register)、静态型(static)和外部型(extern),具体特点和使用方法在后面的章节中详细介绍。

在变量定义时,如未说明存储类型,则系统默认为自动型(auto)。

5.变量的初始化

变量的初始化是给变量赋初值的一种方法,是指在变量定义时就给变量赋予初始值。变量初始化的方法很简单,在变量定义的语句中,在变量名后加一个等号和初值即可。

例如:

int x, age=20, score=100;

在上面的定义中,变量x未赋初值,而变量age和score的初值分别为20和100。

在程序中,变量未赋值之前不允许使用,即要遵循“先赋值后使用”的规则。

1.2.2 常量

常量是在程序运行过程中值不发生改变的数据。例如,圆周率3.1415926就是一个常量。常量也有数据类型,它们是整型常量、实型常量、字符常量、字符串常量及符号常量,整型常量及实型常量的数据长度及取值范围与变量的规定相同。

1.整型常量

整型常量用来表示整数,整型数据可以以不同数制形式来表示,不同的进位制有其不同的表示方式,其表示方式如表1-2所示。

表1-2 整型常量的表示方式

数 制 表 示 方 式 示 例

十进制 一般整数的写法 0,–22,55

八进制 在八进制整数前加数字0 00,–072,+0331

十六进制 在十六进制整数前加数字0和字母x 0x0,0x1B5,–0xb3

另外,对于长整型常量,应当在其后加后缀L或l,例如30L。30L和30数值一样,但占用内存的大小不一样。30占用2个字节的存储空间,而30L占用4个字节的存储空间。

2.实型常量

实型常量只有十进制数表示方式,它没有单精度和双精度之分。其表示方式有定点数表示和浮点数表示两种。具体表示方式如表1-3所示。

表1-3 实型常量的书写方法

类 别 表 示 方 式 示 例

定点数 整数部分.小数部分 0.0,1.34,–34.0

浮点数 尾数E(或e)指数 3.57E10,–5.6e–9

说明:

(1)浮点数表示方式相当于数学中的科学计数法,其换算公式如下:

尾数E(或e)指数=尾数×10指数

(2)浮点数中的指数部分只能是整型数,尾数可以大于或等于10。

3.字符常量

字符常量是用两个单引号引住单个字符来表示的。例如:'A'、'*'、'!'等。使用字符常量时应注意以下几点:

(1)空格也是字符,表示为'a'。

(2)单引号中必须恰好有一个字符,不能空缺。如' '是错误的字符常量。

在C语言中有一类特殊的字符常量,被称为转义字符。它们用来表示特殊符号或键盘上的控制代码,常见的转义字符如表1-4所示。

表1-4 常用转义字符表

转 义 字 符 意 义 转 义 字 符 意 义

\n 回车换行符 \a 响铃

\t 水平制表符 \" 双引号

\v 垂直制表符 \' 单引号

\b 左退一格 \\ 反斜杠

\r 回车符 \ddd 1~3位八进制数ddd对应的字符

\f 换页符 \xhh 1~2位十六进制数hh对应的字符

4.字符串常量

字符串是用双引号引住的若干个字符。例如,"hello!","485769","a"。

字符串可以不含任何字符,称为空串,表示为""。

字符串中所含的字符个数称为字符串的长度。例如,"abc123","3",""的长度分别为6,1,0。计算字符串长度时应注意以下几点:

(1)对于含有转义字符的字符串,应将转义字符计算为1个字符。例如,"abc\\12\n"的长度为7,而不是9;"abc\\\12\n"及"abc\\\123\n"的长度均为6。

(2)在字符串中,反斜杠表示转义字符的开始,如果其后面没有表1-4中所列出的转义符号,则该反斜杠被忽略,并不参与计算长度。例如,"\A"的长度为1,但"\"是非法的。

5.符号常量

上面所介绍的常量都是具体数据,在程序中也可以用特定符号来表示某个常量,这个符号被称为符号常量。

符号常量的语法格式如下:

#define 符号常量名 常量

例如:

#define PI 3.1415926

经过上述定义后,可以在程序中使用PI来代替3.1415926。

在程序中使用符号常量有两个好处:一是提高了程序的易读性;二是为修改程序提供了方便。例如,当不需要太高精度时,只需要将符号常量定义修改为

#define PI 3.14

而不需要在程序中去修改每一处的圆周率。

1.3 算术运算符与算术表达式

用来表示各种运算的符号称为运算符。C语言中包括以下七大类的基本运算符:算术运算符、逻辑运算符、关系运算符、赋值运算符、逗号运算符、条件运算符和位运算符。本节主要介绍算术运算符,其他的运算符将在后续章节中详细介绍。

1.3.1 算术运算符

C语言中的算术运算符和数学中的算术运算相似,是对数据进行算术运算的。算术运算符的运算对象、运算规则及结合性如表1-5所示。

表1-5 算术运算符

运算对象个数 名 称 运 算 符 运 算 规 则 运算对象

数据类型 结 合 性

单目 正 + 取原值 整型或实型 自右向左

负 – 取负值

双目 加 + 加法运算 自左向右

减 – 减法运算

乘 * 乘法运算

除 / 除法运算

模 % 整除取余 整型

单目 增1(前缀) ++ 先加1,后使用 整型、字符型、指针型变量或数组元素、实型 自右向左

增1(后缀) ++ 先使用,后加1

减1(前缀) – – 先减1,后使用

减1(后缀) – – 先使用,后减1

在C语言中,参加运算的对象个数称为运算符的“目”。单目运算符是指参加运算的对象只有一个,如+10,–67,x++。双目运算符是指参加运算的对象有两个,如2+3,7%3。

相同运算符连续出现时,有的运算符是从左至右进行运算,有的运算符是从右至左进行运算,C语言中,将运算符的这种特性称为结合性。

加法(+)、减法(–)、乘法(*)与数学中的算术运算相同。例如:3.5+4.7结果是8.2;3.5 – 4.7结果是–0.8;3.5*4.7结果是16.45。

除法运算(/)与数学中的除法不完全相同,它与参加运算的对象的数据类型相关。当参加运算的两个对象均为整型数据时,其运算结果为数学运算结果的整数部分。如7/4结果为1,而不是1.75。若参加运算的两个对象有一个是实型或两个都是实型,那么运算结果为实际运算的值,如7/5.0的运算结果为1.4。

模运算的运算对象必须为整型,结果是相除后的余数,如7%5结果为2。

增1减1运算符都是单目运算符,用来对整型、实型、字符型、指针型变量或数组元素等变量进行加1或减1运算,运算的结果仍是原类型。

1.3.2 常用数学函数

C语言系统提供了400多个标准函数(称为库函数),设计程序时可以直接使用它们。库函数主要包括数学函数、字符处理函数、类型转换函数、文件管理函数及内存管理函数等几类。下面介绍常用的数学函数,其他类型的函数将在后面章节中陆续介绍。

1.函数名:abs

原型:int abs(int i);

功能:求整数的绝对值。

例如,设x=abs(5),y=abs(–5),z=abs(0),则x=5,y=5,z=0。

2.函数名:labs

原型:long labs(long n);

功能:求长整型数的绝对值。

例如,设x=labs(40000L),y=labs(–5),z=labs(0),则x=40000,y=5,z=0。

3.函数名:fabs

原型:double fabs(double x);

功能:求实数的绝对值。

例如,设x=fabs(5.3),y=fabs(–5.3),z=fabs(0),则x=5.3,y=5.3,z=0。

4.函数名:floor

原型:double floor(double x);

功能:求不大于x的最大整数,它相当于数学函数[x]。

例如,设x=floor(–5.1),y=floor(5.9),z=floor(5),则x= –6,y=5,z=5。

5.函数名:ceil

原型:double ceil(double x);

功能:求不小于x的最小整数。

例如,设x=ceil(–5.9),y=ceil(5.1),z=ceil(5),则x = –5,y=6,z=5

6.函数名:sqrt

原型:double sqrt(double x);

功能:求x的平方根。

例如,设x=sqrt(4),y=sqrt(16),则x=1.414214,y=4.0

7.函数名:log10

原型:double log10(double x);

功能:求x的常用对数。

8.函数名:log

原型:double log(double x);

功能:求x的自然对数。

9.函数名:exp

原型:double exp(double x);

功能:求欧拉常数e的x次方。

10.函数名:pow10

原型:double pow10(int p);

功能:求10的p次方。

例如,设x=pow10(3),y=pow10(0),则x=1000,y=1

11.函数名:pow

原型:double pow(double x, double y);

功能:求x的y次方。

例如,设x=pow(3,2),y=pow(–3,2),则x=9,y=9

12.函数名:sin

原型:double sin(double x);

功能:正弦函数。

13.函数名:cos

原型:double cos(double x);

功能:余弦函数。

14.函数名:tan

原型:double tan(double x);

功能:正切函数。

1.3.3 算术表达式

由算术运算符和运算对象连接形成的式子称为算术表达式。

算术运算符的优先级从高到低规定如下:

++ – –

* / %

+ –

位于同一行的运算符的优先级相同。

1.4 数据类型转换规则

对数据进行运算时,要求参与运算的对象的数据类型相同(运算得到的运算结果的类型与运算对象也相同)。因此,在运算过程中常常需要对变量或常量的数据类型进行转换,转换的方法有两种,一种是系统自动转换(又称为隐式转换);另一种是在程序中强制转换(又称为显式转换)。

1.4.1 自动转换规则

在不同类型数据的混合运算中,由系统自动实现转换。转换规则如下:

(1)若参与运算的数据的类型不同,则应先转换成同一类型,然后进行运算。

(2)将低类型数据转换成高类型数据后进行运算。如int型和long型运算时,先把int型转换成long型后再进行运算。

类型的高低是根据其所占空间的字节数按从小到大的顺序排列的,顺序如下:

char,int,long,float,double。

(3)所有的浮点运算都是按照双精度进行运算的,即使仅含float型单精度量运算的表达式,也要先转换成double型,再作运算。

(4)char型和short型参与运算时,必须先转换成int型。

例如,设有:

float PI=3.14;

int s,r=7;

s=r*r*PI;

因为PI为单精度型,s和r为整型,在执行s=r*r*PI语句时,r和PI都转换成double型后再进行计算,运算结果也为double型,右边的运算结果为153.86,但由于s为整型,故应将赋值号右边的运算结果转换成整型(舍去小数部分),因此s的值为153。

1.4.2 强制类型转换

强制类型转换是通过类型转换运算来实现的,其语法格式如下:

(类型说明符)(表达式)

其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。例如: (float) a 把a转换为实型;(int)(x+y) 把x+y的结果转换为整型;而(int)x+y 则只将x转换为整型。

在使用强制类型转换时应注意以下问题:

(1)类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则只是把x转换成int型之后再与y相加。

(2)对于被转换的单个变量而言,无论是强制转换还是自动转换,都只是为了本次运算的需要而对变量的数据长度进行临时性转换,而不会改变变量定义时所声明的类型。

例如,设有:

float f = –5.75;

int x;

x= (int)f;

将f强制转换成整数–5,因此x = –5,而f本身的类型并未改变且其值仍为–5.75。

1.5 程序结构

1.5.1 主函数结构

每一个C源程序都是一系列函数的集合。其中,必须有且只能有一个主函数,其函数名为main,其结构如下:

void main(void)

{

}

其中,void main(void) 称为函数说明部分(又称函数头),而

{

}

称为函数体,函数体中的每个语句行末尾都必须用分号结束。

1.5.2 文件包含命令

C语言系统提供了400多个库函数,并将这些函数根据其功能分成了若干组,每组都有一个组名。如数学类函数组的组名为math。在C语言系统所安装文件夹的下级文件夹中有一个与其相对应的文件math.h,这些扩展名为.h的文件称为头文件。

include称为文件包含命令,当用户在程序中使用到系统的标准库函数中的函数时,需要在程序中(一般在程序的首部)增加一条预处理语句如#includestdio.h,以便告知系统需要使用某个头文件中的函数。

1.5.3 C语言程序基本结构

一个完整的C语言源程序由如下5个部分构成:

(1)预处理命令;

(2)全局变量说明;

(3)函数原型说明;

(4)主函数;

(5)其他子函数。

一个简单的C语言源程序只需要(1)和(4)两个部分,其中“预处理命令”一般是一系列文件包含命令,即include命令。

关于程序结构,应当注意以下几方面的问题:

(1)可由若干个函数构成,其中必须有且只有一个以main命名的主函数,可以没有其他函数。每个函数完成一定的功能,函数与函数之间可以通过参数传递信息。main()函数可以位于原程序文件中任何位置,但程序的执行总是从main函数开始,main函数执行完毕时程序执行结束。

(2)子函数的结构与主函数相同,即分为函数说明部分和函数体两个部分。

(3)函数中的每个语句最后要有一个分号,作为语句结束标记。但某些特殊的语句行末尾不需要分号,有时还不能有分号。

(4)“/*”和“*/”括住的任意一段字符称为“程序注释”,用来对程序作说明,可以插入到程序的任何地方,且可以跨行使用。程序注释不影响程序运行结果。

(5)函数的书写格式很灵活,在一行中可以书写多个语句(每个语句末尾都要有分号),一个语句也可以写在多行中。在程序的任何地方都可以插入空格或回车符。

(6)主函数可以调用任何子函数但不能调用它自己,任何子函数之间也可以相互调用,但是子函数不能调用主函数。

下面是一个简单的C语言源程序:

【例1-1】 求圆的面积。

#include stdio.h

void main(void)

{

float r,s,p=3.14;

r=10.5;

s=r*r*p;

printf("圆的面积是:%f ",s);

}

下面是一个较完整的C语言源程序:

【例1-2】 较完整的C语言程序示例。

#includestdio.h

#includeconio.h

int y,z;

void abc(int x);

void main(void)

{

int x;

clrscr();

x=10;

y=20;

z=30;

printf("ok1: x=%d y=%d z=%d \n",x,y,z);

abc(x);

printf("ok2: x=%d y=%d z=%d \n",x,y,z);

getch();

}

void abc(int x)

{

int y;

printf("ok3: x=%d y=%d z=%d \n",x,y,z);

x=100;

y=200;

z=300;

printf("ok4: x=%d y=%d z=%d \n",x,y,z);

}

c语言编程怎样入门

任何知识的学习没有太多捷径,但有经验、方法及教训

(1)基础教材选择-系统又通俗易懂,最好有该书配套免费视频

建议选择系统正统的大学教材,尽量不要选择“多少天精通C语言”等吸引眼球的教程,相信一点C语言学习没有速成。这里给大家推荐一本不错的入门教程:清华大学出版社-孙海洋-C语言程序设计,讲解很透彻、知识点很全面、例程较多且通俗易懂。优酷“孙海洋课题”还有全书免费教学视频,便于自学。

(2)动起手来--立马安装VC++6.0或VS开发环境

C语言是特别注重动手实操能力的课程!!动起手来,现在开始安装VC++6.0开发环境,从第一个经典程序“Hello,world!”开始,每一个例题及知识点均通过开发环境验证、理解深化。多做每一章小型实验操作(网上多得很)。提升代码调试能力。

(3)有了基础后,一般可以有两个发展方向可供选择

(i)转向项目实战

建议购买一本C语言项目教程,在实践项目中强化理论知识的学习。

(ii)继续深入理论学习

建议购买国外经典深入学习C语言的教程,人民邮电出版社-C Primer Plus(第5版),或者 机械工业出版社-C程序设计语言(第2版.新版)   

下定信心,坚持下去!希望对你有所帮助。

下面是转载的 孙海洋 版 C语言程序设计 部分内容截图。

求C语言的教程,入门的,电子书或者视频都ok~

C语言入门|C语言视频|C语言电子书免费下载

链接:

提取码: g6dj  

语言四本经典书籍不知道你看了几本?C程序设计语言 C和指针 C陷阱与缺陷 C专家编程

这四本看完了,那么你的C就是差不多很厉害了.C程序设计语言那本可不是国内的,是外国的,就是二楼说的那个,最新好象是第二版,你可以上网查

(1小时学会C语言51单片机)C语言入门教程

51作为学习入门,确实是最最基础的了,不过至少它可以让一个新手明白控制是怎么回事,反馈是怎么回事,程序是怎么下载进去运行,又是怎么控制到io输入输出的,如何去访问寄存器,掌握一套在嵌入式领悟最最基本的开发方法和学习思路。这部分如果有兴趣,建议学习时间不要超过两个月。

1.c语言,及部分汇编代码

2.用一个月时间看完做完郭天祥的十天学会51单片机

3.买一块开发板

4.学习能够看懂看会原理图

5.掌握搜集资料,datasheet查找阅读英文手册的能力

6.自己动手动手动手做一个简单的功能

最后,我其实不建议51入门,可以直接stm32,虽然他还是单片机。不过十年前我当初也是51入门的,乐此不疲。至于忽悠你什么协议,内核,我觉得让一个大一嵌入式新手学这些,无疑没有基础就想建高楼,所以踏踏实实从基础开始,大学就是注重基础,学习能力!

扫描二维码推送至手机访问。

版权声明:本文由万物知识分享发布,如需转载请注明出处。

本文链接:http://qmsspa.com/63366.html

分享给朋友:

“c语言基础教程(c语言基础)” 的相关文章

2020手机相机排行(2021拍照最好的手机排行)

 二0 二 二年最好摄影 脚机 相机平日 是新脚机的隐著特性 。 二0 二 一年,脚机厂商将正在比来 的内存外最年夜 化其相机硬软件的功效 战量质。苹因拉没了iPhone  一 二系列,正在四款脚机的主摄像头上皆搭载了新的更快的挨孔镜头。那款iPhone  一 二 Pro Max经由过程...

值得收藏的seo优化技巧分享(四个月创造的seo优化奇迹凭什么)

正在运用搜刮 竞价办事 (SEM)的企业外,年夜 部门 症结 词皆是一点儿焦点 的止业称号词战止业产物 词。只要正在某些止业合作剧烈 的时刻 ,止业词战产物 词才会扩大 到那个止业的少首词。当那个止业的SEO合作延长 到少首词。根本 上那个止业的SEO空间曾经很小了。出有伟大 的上风 ,新人很易正...

大神级的seo是这样拓展关键词的(做好seo优化要掌握哪些方面的内容)

甚么是垂曲网站?它的长处 战缺陷 是甚么?尔的网上营业 怎么用?原文便此做一扼要 阐述 。收集 垂曲度的观点 其实不新颖 。阿根蒂先生 正在他的《MBA就联袂 册》外提到:垂曲型是指正在一个分销渠叙外,将制作 商、零售商战整卖商望为一个双一的体系 。假如 您的电商网站零折了某一产物 分歧 厂野、零...

传统企业营销模式和方案(传统企业营销成功的方法)

现在 ,欠望频更蒙迎接 。然而,对付 传统真体去说,正在出有折适的欠望频冲破 时,搜刮 引擎营销仍旧 是一个不变 的抉择。以baidu为例,许多 传统真体皆测验考试 过付费、收费等各类 拉广体式格局,但后果 每每 没有尽如人意。 缘故原由 有许多 。baidu零体流质高滑,出有业余职员 治理...

百度搜索排名怎么收费运营(百度搜索排名怎么收费)

baidu的症结 词排名照样 颇有代价 的,如今 baidu的症结 词劣化比拟 孬。自从 曾经庆仄SEO揭橥 解稀了最新的baiduSEO排名技术文章,分享了劣化baidu搜刮 症结 词排名的思绪 后,没有 晓得有若干 同伙 正在用尔的要领 体系 。 综上所述,缘故原由 以下:  一.搜刮...

sem怎么做最好(揭秘最能影响sem效果的因素是什么)

sem怎么做最好(揭秘最能影响sem效果的因素是什么)

今朝 各类 互联网营销仄台赓续 涌现,尤为是像Tik Tok如许 的欠望频仄台的涌现 ,使患上流质愈来愈疏散 ,散外正在搜刮 引擎仄台的流质年夜 年夜 削减 。正在如许 的情形 高,要念让营销拉广有用 ,便要 对于竞价战争台有一个很孬的相识 ,如许 能力 实邪的作没后果 。 有目标 的营销拉...

评论列表

萝莉病
2年前 (2022-07-10)

x=%d y=%d z=%d \n",x,y,z); getch(); }void abc(int x) { int y; printf

走野1
2年前 (2022-07-10)

尾都要有分号),一个语句也可以写在多行中。在程序的任何地方都可以插入空格或回车符。(6)主函数可以调用任何子函数但不能调用它自己,任何子函数之间也可以相互调用,但是子函数不能调用主函数。下面是一个简单的C语言源程序:【例1-1】

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。