C语言程序设计

第一章 程序设计和C语言

一、什么是程序?程序设计语言一般包含哪些功能?

答:程序是指一组计算机能够识别和执行的指令。

程序设计语言的功能包括:数据表达、流程控制。

1、数据表达:世界上的数据多种多样,而语言本身的描述能力总是有限的。所以为了将数据充分有效的表达,一般将数据分为若干种类型。数据类型就是对某些具有共同特点的数据集合的总称。

2、流程控制:按照结构化程序设计的观点,如何程序都可以将模板通过3种基本的控制结构进行组合来实现。(在C语言中,一个模块可以是一条语句、一段程序或者一个函数等)结构化程序设计3种基本的控制结构:顺序、分支和循环。

①顺序控制结构:一个程序模块执行完后,按自然顺序执行下一个模块。

②分支控制结构:又称选择结构。计算机在执行程序时,一般语句按顺序执行,当出现判断某种条件,如果条件满足就执行某个模块,否则执行另一个模块。

③循环控制结构:反复地执行某些相同的处理过程,即重复执行某一个模块。但重复执行一般有条件,当条件满足就重复执行相应的模块。

二、程序设计语言在语法上一般包含哪些内容?

答:C语言程序设计语言最主要的语法要素:

1.C语言的主要“单词“

(1)标识符

C语言的标识符由字母、数字和下划线组成,其中第一个字符必须是字母或下划线。

(例如:_name _linxin linxin_都是一个合法的标识符,而life&right就是非法的。)

在C语言中,标识符中英文字母的大小写形式是有区别的。

(例如sum和Sum是不同的标识符。)

(2)保留字,又称关键字,是C语言的、赋予特殊含义和有专门用途的标识符,他们主要与数据类型和语句有关。如int(整数类型)、float(实数类型)、char(字符类型)、typedef(自定义类型),以及与语句相关的if、else、while、for、break、continue等。

  • 用户自定义标识符。包括程序中定义的变量名、数据类型名、函数名和符号常量名。一般来说,为了方便程序阅读,取有意义的英文单词作为自定义标识符(如fact、sum等)

(3)常量

常量是有数据类型的,例如,整型常量123、实数常量12.30、字符常量‘a’、字符串常量“hello world!”等。

  (4)运算符

运算符表示对各种数据类型数据对象的运算。

如,+(加)、-(减)、*(乘)、/(除)、%(求余)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、==(等于)、=(赋值)等。

运算一般多为双目运算(涉及两个运算对象),也有单目运算和三目运算。

 (5)分隔符

如:[、]、(、)和#都是分隔符。

2、C语言的主要语法单位

 (1)表达式:运算符与运算对象(可以为常量、函数、变量等)的有意义组合就形成了表达式。如2+3*4和i+2<j等。

 (2)变量定义:

变量定义最基本形式:类型名 变量名;(例:int i;定义一个整型变量i)

 (3)语句:语句是程序最基本的执行单位,程序的功能就是通过一系列语句来实现的。C语言的语句有多种形式。

  • 最简单的语句(表达式语句):表达式加分号“;”。

② 分支语句:即实现分支控制过程,根据不同条件执行不同语句。

具体有两种形式,即if-else语句与switch语句。

③ 循环语句:C语言实现循环控制过程具体有三种形式,即while语句、for语句和do-while语句。

④ 复合语句:用一对大括号{}将若干语句顺序组合在一起就形成一个复合语句。

 (4)函数的定义与调用

函数是完成特定任务的独立模块,是C语言唯一的种子程序形式。函数调用通过传递函数的参数并执行函数定义所规定的程序过程,以实现相应功能。

三、C语言有哪些特点?

 1、C语言是一种结构化语言。2、C语言语句简洁紧凑,使用起来灵活方便。

 3、C语言程序易于移植。    4、C语言有强大的处理能力。

 5、C语言生成的目标代码质量高,运行效率高。

四、第一个C语言程序

//在屏幕上输出Hello World!

第二章 用C语言编写程序

一、main函数

 每个 C 语⾔程序不管有多少⾏代码,都是从 main 函数开始执⾏的, main 函数是程序的⼊⼝, main 函数也被叫做:主函数。

 main 前⾯的 int 表⽰ main 函数执⾏结束的时候返回⼀个整型类 型的值。所以在 main 函数的最后写 return 0; 正好前后呼应。

• main函数是程序的⼊⼝

• main函数有且仅有⼀个

• 即使⼀个项⽬中有多个.c⽂件,但是只能有⼀个main函数(因为程序的⼊⼝只能有⼀个)

第一次写代码一些常见的错误:

• main 被写成了mian

• main后边的()漏掉了

• 代码中不能使⽤中⽂符号,⽐如括号和分号

• ⼀条语句结束后,有分号

二、printf和库函数

在上⾯的代码中有⼀句代码如下: printf("hello World!\n"); 代码中使用了 printf 函数,实现了在屏幕上的信息的打印。

这里简单的介绍⼀下 printf , printf 是⼀个库函数,它的功能是在标准输出设备(一般指屏幕)上进行信息的打印。上面的代码使用的 printf 函数打印字符串。只要把想要打印的⼀串字符放在“双引号”中并传递给printf函数就可以打印。

printf函数也可以用来打印其他类型的数据

例如:

这里的%d , %c 等是占位符,会被后边的值替换。

库函数的时候,是需要包含头文件的,⽐如:printf 函数需要包含的就是 stdio.h 这个头文件, 具体的方法就是: #include <stdio.h>

那什么是库函数呢?

为了不再重复实现常⻅的代码,让程序员提升开发效率,C语言标准规定了⼀组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员使用。

这些函数组成一个库函数,被称为标准库,这些函数也被称为库函数。

一个系列的库函数⼀般会声明在同⼀个头⽂件中,所以库函数的使用,要包含对应的头文件。

库函数有很多,提前参考链接https://cplusplus.com/reference/clibrary/

关键字介绍!

 C语言中有一批保留的名字的符号,⽐如: int 、 if 、 return ,这些符号被称为保留字或者关键字。

• 关键字都有特殊的意义,是保留给C语言使用的

• 程序员自己在创建标识符的时候是不能和关键字重复的

• 关键字也是不能自己创建的。

 C语⾔的32个重要的关键字如下:{auto break case char const continue default do double else enum ex float for goto if int long register return short signed sizeof struct switch typedef union unsigned void volatile while}

三、转义字符

也许在前⾯的代码中你看到 \n , \0 很纳闷是啥。其实在字符中有⼀组特殊的字符是转义字符,转义 字符顾名思义:转变原来的意思的字符。

C语⾔中像这样的转义字符还有⼀些,具体如下:

• \? :在书写连续多个问号时使⽤,防⽌他们被解析成三字⺟词,在新的编译器上没法验证

• \' :⽤于表⽰字符常量'

• \" :⽤于表⽰⼀个字符串内部的双引号

• \\ :⽤于表⽰⼀个反斜杠,防⽌它被解释为⼀个转义序列符。

• \a :警报,这会使得终端发出警报声或出现闪烁,或者两者同时发⽣。

• \b :退格键,光标回退⼀个字符,但不删除字符。

• \f : 换⻚符,光标移到下⼀⻚。

• \n :换⾏符。

• \r :回⻋符,光标移到同⼀⾏的开头。

• \t :制表符,光标移到下⼀个⽔平制表位,通常是下⼀个8的倍数。

• \v :垂直分隔符,光标移到下⼀个垂直制表位,通常是下⼀⾏的同⼀列。

下⾯2种转义字符可以理解为:

字符的8进制或者16进制表⽰形式 • \ddd :d d d表⽰1~3个⼋进制的数字。 如: \130 表⽰字符X

• \xdd :d d表⽰2个⼗六进制数字。 如:\x30 表⽰字符0  \0 :null 字符,代表没有内容, \0 就是 \ddd 这类转义字符的⼀种,⽤于字符串的结束标志,其 ASCII码值是0.

四、for语句

在C语言中,for语句被称为循环语句,它可以实现C语句的重复执行。

for语句的一般形式:

for(表达式1;表达式2;表达式3)

    循环体语句

五、常用的数学函数

1、平方根函数sqrt(x):计算根号x。如sqrt(4.0)的值为2.0

2、绝对值函数fabs(x):计算|x|。如fabs(-9)的值为9p

3、幂函数pow(x,n):计算x的n次方。如pow(2,3)的值为8

4、指数函数exp(x):计算e的x次方。如exp(2.3)的值为9.974182

5、以e为底的对数函数log(x):计算ln x。如log(123.45)值为4.815836

注:当使用以上函数时,需要加入#include<math.h>

第三章 分支结构

一、if语句

1.1 if语句的语法形式如下:

   if(表达式)

      (语句);

表达式成立(为真),则语句执行,表达式不成立(为假),则语句不执行。

在C语言中,0为假,非0表示真,也就是表达式的结果如果是0,则语句不执行。反之,语句执行。

1.2 else

当if的表达式为0时,语句不执行,但我们想执行另一个语句;

这里我们就需要if…else…语句,语法形式如下:

  if(表达式)

      语句1;

else

语句2;

1.3 悬空else

如果有多个 if和else ,可以记住这样⼀条规则,else总是跟最接近的if匹配。

二、switch语句

除了 if 语句外,C语言还提供了 switch 语句来实现分支结构。 switch 语句是⼀种特殊形式的 if...else 结构,用于判断条件有多个结果的情况。它把多重的else if 改成更易用、可读性更好的形式。

 switch (expression)

{case value1: statement;break;

case value2: statement;break;

default: statement;break;

}

 上面代码中,根据表达式 expression 不同的值,执行相应的 case 分⽀。如果找不到对应的值,就执⾏ default分⽀。

注:• switch 后的 expression 必须是整型表达式

• case 后的值,必须是整形常量表达式

• case 和后边的数字之间必须有空格

• 每⼀个 case 语句中的代码执⾏完成后,需要加break,才能跳出这个switch语句。

例如:以下的代码case 1后面没有加break,导致执行case 1后面的表达式后继续执行后面的表达式。

当在表达式后面加上break后,结果为(此时因为有break,程序执行到case 1后遇到break,自动跳出switch,则不执行下面的语句。

•switch语句中的default可以省略,如果省略了default,当表达式的值与任何一个常量表达式的值不相等时,就什么都不执行。

三、ASCII编码表

我们知道在计算机中所有的数据都是以二进制的形式存储的,那这些字符在内存中分别以什么样的二进制存储的呢?如果我们每个⼈⾃⼰给这些字符中的每个字符编一个二进制序列,这个叫做编码,为了方便大家相互通信,不造成混乱,后来美国国家标准学会(ANSI)出台了⼀个标准 ASCII 编码,C语⾔中的字符就遵循了 ASCII 编码的方式

ASCII表链接:ASCII 码表 - cppreference.com

我们不需要记住所有的ASCII码表中的数字,使⽤时查看就可以,不过我们最好能掌握⼏组特殊的数字;

• 字符A~Z的ASCII码值从65~90

• 字符a~z的ASCII码值从97~122

• 对应的⼤⼩写字符(a和A)的ASCII码值的差值是32

• 数字字符0~9的ASCII码值从48~57

• 换⾏ \n 的ASCII值是:10

• 在这些字符中ASCII码值从0~31 这32个字符是不可打印字符,⽆法打印在屏幕上观察

四、break和continue

在循环执⾏的过程中,如果某些状况发⽣的时候,需要提前终⽌循环,这是⾮常常⻅的现象。

C语言中提供了break 和 continue 两个关键字,就是应该到循环中的。

• break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执⾏。

• continue 的作⽤是跳过本次循环 continue 后边的代码。

五、逻辑操作符:&& , || , !

逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有三个运算符。 • ! :逻辑取反运算符(改变单个表达式的真假)。

• && :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)。 • || :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)

注:C语⾔中,⾮0表⽰真,0表⽰假

1、逻辑取反运算符 !

 ⽐如,我们有⼀个变量叫 flag ,如果flag为假,要做⼀个什么事情,就可以这样写代码:

如果flag为真,!flag就是假,如果flag为假,!flag就是真所以上⾯的代码的意思就是flag为假,执⾏if语句中的代码。

二、与运算符 &&

&&就是与运算符,也是并且的意思,&&是⼀个双⽬操作符,使⽤⽅式是 a && b , && 两边的表达式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。

⽐如:如果我们说月份是3月到5月,是春天,那使用代码怎么体现呢?

这⾥表达的意思就是month既要大于等于3,⼜要小于等于于5,必须同时满⾜。

三、或运算符 ||

|| 就是或运算符,也就是或者的意思,|| 也是一个双目操作符,使用的方式是 a || b , || 两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。

⽐如:我们说⼀年中月份是12月或者1月或者2月是冬天,那么我们怎么使⽤代码体现呢?

这里意思是当month为12、1、2中任一时,打印冬季。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值