C语言基础加实例解析Word版.docx
《C语言基础加实例解析Word版.docx》由会员分享,可在线阅读,更多相关《C语言基础加实例解析Word版.docx(19页珍藏版)》请在冰点文库上搜索。
C语言基础加实例解析Word版
编程语言的发展史:
第一代语言:
机器语言(计算机认识的语言,用0和1)
第二代语言:
汇编语言(相对于机器更容易让人理解)
第三代语言:
高级语言(C/C++、Java、Delphi、Ruby)
C语言发展史:
1972年,贝尔实验室的DennisRitchie在开发UNIX操作系统的时候开发了C语言,C语言是基于B语言开发完成的。
C语言目前有两套标准:
ANSIC(C90)、C99
C语言的特点:
结构化程序设计语言
模块化程序设计语言
可移植性好
C语言的运行机制:
C语言它是编译型语言,C的源代码是写在扩展名为.c的文件中的,将源文件编译后形成一个扩展名为.obj的目标文件(机器语言),之后通过链接器转换成.exe文件
第一个C程序:
通过HelloWorld要掌握哪些知识点:
#include:
C程序的预处理命令,用来在编译之前做一些准备工作
:
是标准输入/输出函数的头文件,在C语言的世界里代码顶部的信息的集合叫做头文件。
main()函数:
C程序总是从main()函数开始执行,“()”用来表示书写的是一个函数,“{}”是函数体
printf();用来输出指定的内容
printf(格式控制,变量。
。
。
);(其中格式控制由字符串和类型描述符组成)
语句是以分号结束的。
标识符:
用来给C程序中的变量、函数等起名字的时候用到的字符序列
命名规则:
由字母、数字、下划线(_)组成,并且开头不能是数字
C语言严格区分大小写(Hello和hello所表示的意义是不同)
标识符不能使用C语言的保留字
保留字:
是C语言自己来使用的具有特殊意义和用途的字符序列,又称为关键字(32个)
auto:
声明自动变量double:
声明双精度变量或函数
int:
声明整型变量或函数struct:
声明结构体变量或函数
break:
跳出当前循环typedef:
用以给数据类型取别名
else:
条件语句否定分支(与if连用)long:
声明长整型变量或函数
switch:
用于开关语case:
开关语句分支
enum:
声明枚举类型register:
声明寄存器变量
char:
声明字符型变量或函数extern:
声明变量是在其他文件正声明
return:
子程序返回语句(可以带参数,也可不带参数)
const:
声明只读变量float:
声明浮点型变量或函数
short:
声明短整型变量或函数unsigned:
声明无符号类型变量或函数
continue:
结束当前循环,开始下一轮循环for:
一种循环语句
signed:
声明有符号类型变量或函数
void:
声明函数无返回值或无参数,声明无类型指针
default:
开关语句中的“其他”分支goto:
无条件跳转语句
sizeof:
计算数据类型长度
volatile:
说明变量在程序执行中可被隐含地改变do:
循环语句的循环体
while:
循环语句的循环条件static:
声明静态变量
if:
条件语句union:
声明共用数据类型
常量:
值不能够被改变的量
整型常量:
123
浮点型常量:
1.23
字符型常量:
‘a’
字符串常量:
“goodmorning”
变量:
变量其实是内存中的一块区域,变量有变量名、类型、值。
变量如何使用,首先要声明一个变量,接下来给变量赋值、使用变量
inta;//声明一个int类型的变量
a=10;//给变量赋值
printf(“%d”,a);//使用变量
也可以inta=10;
C语言的注释:
///**/
C语言的基本数据类型:
布尔类型:
非0值为真,0值为假
整数类型:
类型名称
声明类型
字节
表示范围
类型描述符
整型
int
2
-32768~32767
%d
短整型
short
2
-32768~32767
%hd
长整型
long
4
-2147483648~-2147483647
%ld
无符号整型
unsigned
2
0~65535
%u
一般情况下long类型的数据要在末位加”l”或“L”;
%o八进制%x十六进制
在为整型变量赋值时,如果数值是以0开头的说明该数是八进制数,如果数值是以0x开头的说明该数是十六进制的数
各进制之间的转换:
十进制:
0~9
二进制:
01
八进制:
0~7
十六进制:
0~9A~F
十进制转换成任何进制:
倒除法除以目标进制,取余数,并将余数倒序排列
任何进制转换成十进制:
按权展开式
二进制转八进制:
从右到左三位一组,将每一组转换成一个十进制的数
二进制转十六进制:
从右到左四位一组,将每一组转换成一个十进制的数
字符型:
在C语言中,用单引号括起来的单个字符是一个char类型的数据
类型名称
声明类型
字节
取值范围
类型描述符
字符型
char
1
-128~127
%c
字符类型可以和整数类型相互转换,转换时参照ASCII码表
浮点类型:
float的类型描述符%f
double的类型描述符%lf
字符串数据的类型描述符为%s
scanf()语句:
"%lf"用于double类型,"%f"用于float类型
printf(语句:
"%f"既可用于double类型,又可用于float类型,意思是输出实数(包括单、双精度),并意指“
保留6位小数”;"%lf"只能用于double型,意思是输出双精度。
转义字符:
\n换行回车
\r回车
\b退格
\t跳制表域
Sizeof(参数)运算符,可以判断参数所占的字节数。
sizeof是算符,strlen是函数。
sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的。
在C语言中,没有特定的字符串类型,字符串是以字符数组的形式存在的,存储形式是“指定字符串+\0”
中有一个函数strlen()可以判断字符串的长度
scanf()函数,标准输入函数;
例:
inta;
scanf(“%d”,&a);
scanf会自动跳过空白字符(回车、空格、Tab),然后去找下一个非空白字符
scanf(“%d,%d”,&a,&b);或scanf(“%d%d”,&a,&b);这种情况下,在输入数值的时候要严格按照指定格式输入
符号常量:
两种形式:
#define常量名常量值
const数据类型常量名常量值
printf()在类型描述符中间加上数字可以控制输出的值的位数,如果是正数,右对齐,如果是负数,左对齐,如果该数值小于实际输出的值的位数,那么按实际情况输出
运算符:
算术运算符:
+-*/%++--(两个减号)
关系运算符:
==!
=><>=<=
逻辑运算符:
&&||!
赋值运算符:
=+=-=*=/=%=
三目运算符:
逻辑表达式?
返回值1:
返回值2
表达式:
运算符与操作数的组合
a+b++aa>0a=a+1
类型转换:
经常会遇到多种数据类型的数据进行混合运算,需要对数据类型进行转换
自动转换:
多个参与运算的数据,自动的向参与运算中级别(数据类型的表示范围越大,级别越高)最高的数据类型转换
级别由高到低double=>float=>long=>unsigned=>int=>short,char
只要char和short参与运算,会自动转换成int类型
赋值的时候要转换成所赋值变量的数据类型
强制转换:
在数据前加上强制转换符就可以了。
在程序的世界中,有三种结构,顺序结构、分支结构(选择结构)、循环结构
if(逻辑表达式){
语句。
。
。
。
;
}
if(逻辑表达式){
语句。
。
。
。
。
;
}else{
语句。
。
。
。
。
;
}
if(逻辑表达式){
语句。
。
。
。
。
;
}elseif(逻辑表达式){
语句。
。
。
。
。
。
;
}elseif(逻辑表达式){
语句。
。
。
。
。
。
;
}
。
。
。
}else{
语句。
。
。
。
;
}
switch语句
switch(整型或字符型表达式){
case整型或字符型数据:
语句。
。
。
;
case整型或字符型数据:
语句。
。
。
;
case整型或字符型数据:
语句。
。
。
;
。
。
。
default:
语句。
。
。
。
。
;
}
根据括号中表达式的值去找相对应的case,然后执行case中的语句,如果执行完语句后,没有break语句,那么继续向下执行,所以为了防止case穿透,建议每个语句后面要写break。
如果没有找到想对应的case,那么会执行default的语句。
循环:
for循环
for(表达式1;表达式2;表达式3){
循环体。
。
。
。
。
。
;
}
首先执行表达式1,然后再执行表达式2,如果表达式2的值为真,那么执行循环体,循环体执行完毕后,执行表达式3,然后再执行表达式2,以此类推,真到表达式2为假,退出循环
while(逻辑表达式){
循环体。
。
。
。
。
;
}
如果逻辑表达式的值为真,那么执行循环体,循环体执行完毕,再去判断逻辑表达式,直到逻辑表达式的值为假,退出循环
do…while
do..while至少要执行一次
do{
循环体。
。
。
。
。
}while(逻辑表达式);
continue:
跳过本次循环
break:
终止循环
getchar和putchar用来完成字符的输入输出
putchar该函数将指定的表达式的值所对应的字符输出到标准输出终端上。
表达式可以是字符型或整型,它每次只能输出一个字符。
比较下面两个:
中有对字符的类型进行判断的函数,例如判断一个字符是否是字母
isalpha(参数)判断参数是否是一个字母
isalnum(参数)判断参数是否是一个字母或数字
isdigit(参数)判断参数是否是一个数字
函数:
用来完成特定功能的代码块,函数的出现使得程序更加模块化,在调用的时候我们只须要知道在调用函数时要传什么样的参数或者不传参数,而不需要知道它内部的细节。
形式参数:
声明函数时写的参数,在函数调用过程中,用来接收传过来的参数,在声明形式参数时要写参数类型。
实际参数:
在函数调用过程中传入的参数
返回值:
函数可以有返回值也可以没有,但如果有返回值要声明返回值的类型,如果没有返回值,要写void
return:
如果一个函数有返回值,要使用return关键字来返回相应类型的值
在C语言中,函数除了要定义外还要在头部声明
当调用函数的时候,传入参数的类型一定要一一对应
函数的补充:
在C语言中函数参数的传递是值传递。
递归调用:
函数调用自己本身
sum(3)
数组:
相同类型数据的集合,在数组中,用下标来表示数组每一个元素的位置,下标是从0开始数的,也就是如果一个数组的长度是n,那么下标的取值范围是0~n-1.
数组在声明的时候一定要定义长度
声明方式:
数据类型数组名[长度];inta[10];
数据类型数组名[长度]={各个元素};doubled[3]={1.2,1.3,1.4};
数据类型数组名[]={各个元素};intb[]={1,2,3,4,5}
数组的使用:
想要获取数组中某一个元素的值,采用下列形式
数组名[下标]a[0]a[3]
如果想要遍历一个数组的各个元素,可以采用循环的方式
指针,其实就是指向某一个变量的地址
声明格式:
数据类型*变量名
int*p;这个指针指向的地址的值是int类型的
在使用的时候p表示地址,*p表示指向地址的值
Inta=10;
Int*p;
p=&a;
printf(“%d”,*p):
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)