c语言
什么是计算机语言
- 机器语言 0 1 低级语言
- 汇编语言 (符号化语言) 低级语言
- 高级语言
- 非结构化语言
- 结构化语言 (c语言)
- 面相对象语言
32个关键字分类
1、数据类型关键字(12个) char、short、int、long、signed、unsigned、float、double、
struct、union、enum、void
2、控制语句关键字(12个)
循环控制:for、do、while、break、continue
条件语句:if、else、goto
开关语句:switch、case、default
返回语句:return
3、存储类型关键字(5个)
auto、extern、register、static、typedef
4、其它关键字(3个)
const、sizeof、volatile
标识符命名规范:由字母数字下划线,数字不打头
C语言程序的结构特点:
函数与主函数
程序由一个或多个函数组成 (函数是基本单位)
必须有且只能有一个主函数main()
程序执行从main开始,在main中结束
程序语句
C程序由语句组成 (语句是最小单位)
用;作为语句终止符
注释
/* */
运行C语言的步骤和方法

数据类型
- 基本类型 ☆
- 整型
- 短整型short
- 整型int
- 长整型long
- 实型
- 单精度型float
- 双精度型double
- 字符类型char
- 整型
- 构造类型
- 数组
- 结构体struct
- 共用体union
- 枚举类型enum
- 指针类型
- 空类型void
- 定义类型typedef

常量
定义:常量就是在程序中不能改变其值的量。
按照类型划分为 : 整型常量、实型常量、字符型常量、字符串字面量(string literal)和枚举常量
分类:
- 符号常量:用标识符代表常量
- 定义格式: #define 符号常量 常量
- 直接常量:
常量的类型 | 实例 | 备注 |
---|---|---|
整型常量 | 10,-30,0 | 包括正整数、负整数和零在内的所有整数 |
实型常量 | 3.14,-0.56,18.0 | 由于计算机中的实型数是以浮点形式表示的,即小数点位置可以是浮动的,因此实型常量即可以称为实数,也可以成为浮点数 |
字符型常量 | 'x', 'X' ,'0', '9' | 用一对单引号括起来的任意字符 |
字符串字面量 | "Hello!","k88","9" | 用一对双引号引起来的零个或多个字符 |
整型常量(整常数)
通常以10进制来表示,有时候也用八进制和十六进制来表示,编译器会自动将其转换成二进制形式储存


C程序中的实型常量有十进制小数和指数两种表示形式

实型常量有单精度、双精度和长双精度之分,但无有符号和无符号之分
三种形式:
- 十进制常数:由数字0-9和正负号表示
- 八进制整数:由数字0开头0-7
- 十六进制整数:由0x开头 0-9 a-f
- c语言高级语言没有二进制
进制转换练习题:
printf("%d,%d\n",012,0x12); 十进制
printf("%o,%o\n",10,12); 八进制
printf("%x,%x\n",10,12); 十六进制
实型常量(实数或浮点数)
表示形式:
- 十进制小数形式:-0.2 .2 2.
- 指数形式:1.2E-3
练习:
1234(×) 1.2E(×)
12.34(√) e-5(×)
314.(√) 2E1.5(×)
-.17(√) -3.e+2(√)
字符常量
定义:用单引号括起来的单个普通字符或转义字符。
- 常规字符:'a'、'2'等
- 转义字符:由一个反斜杠’\‘后跟规定字符构成的

练习

字符串常量
定义:用双引号括起来的字符序列
存储:每个字符串尾自动加一个\0作为字符串结束标志
例如:china
'c' 'h' 'i' 'n' 'a' '\0'

变量
概念:在程序执行过程中是可以改变的。
作用:变量是一个储存数据的容器,即储存单元,它的功能就是用来存放程序中需要处理的数据。
基本操作: 赋值 取值
使用原则:先定义后使用
类型标识符 变量名;
整型变量
- 占字节数随机器不同而不同,一般占一个机器字
- short(2B)≤int≤long(4B)
- 可用sizeof(类型标识符)测量
实型变量
- float:占4字节
- double:占8字节
字符型变量(1B)
- 字符变量存放字符ASCII码
- char与int数据间可进行算术运算
float f=24.56;
printf("%f\n",f); %f 6位小数 24.560000
%d:十进制
%f:6位小数
%c:字符原型
%o:八进制
%x:十六进制
数据类型转换
强制类型转换符
形式:(类型名)表达式
(int)2.2
(int)5.5/(int)2.5= 5/2 = 2 5.0/2=2.5
自动转换
设char w;int x;float y;double z;,则表达式w*x+z-y的值的类型是 double
运算符和表达式
算术运算符和算术表达式
基本算术运算符:+-*/%
结合方向:从左向右
优先级:+-(正负号)> */% > +-(加减)
例题
5/2 = 2 5.0/2=2.5 全整则整 遇实则实
5%2=1 -5%2=-1
1%10=1 5%1=0
5.5%2 左右两边都要为整数


赋值运算符和其表达式
赋值运算符:=
赋值表达式:变量=表达式
优先级:仅高于逗号运算符
结合:自右向左
复合赋值运算符
+= ,-= , *= ,/= ,%=
优先级:仅高于逗号运算符
结合性:自右向左
a+=2 a=a+2
练习
int a=3;
a+=a-=a*a; -12
自增自减运算(只能是变量,不能是表达式)
运算符:自增(++) 自减(--)
前置运算:++i、--i 先增减后运算
后置运算:i++、i-- 先运算、后增减
++(i+1) ++5 都是错的

逗号运算符和表达式
形式:表达式1,表达式2,。。。。。表达式n
结合性:从左向右
优先级:最低
作用:做运算符或者分隔符
逗号表达式的值:等于表达式n的值

表达式(a=2,b=5,b++,a+b)的值为8
关系运算符和表达式
< <= >= > != ==
结合方向:自左向右
关系表达式的值:是逻辑值真或者假,用1和0表示
逻辑运算符和表达式
!(2) 从右向左
&& (11) 从左向右
||(12) 从左向右

短路特性:逻辑表达式求解时,并非所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符

条件运算符与表达式
一般形式:expr1?expr2:expr3
优先级:13
结合方向:自右向左
练习
1、判断char型变量ch是否为数字的C表达式为(ch>='0'&&ch<='9') 或者(ch>=48&&ch<=57)
2、设a=5,b-6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d);后n 的值为 2 , (n=c>d)短路不做
数据的输入与输出
C语言中无I/O语句,I/O操作由函数实现
#include<stdio.h>
数据的输出
- 字符输出函数
- 格式:putchar(c)
- 参数:c为字符常量、变量或表达式
- 功能:把字符 c输出到显示器上
- 格式输出函数(printf不是关键字)
- 格式:printf("格式控制串",输出表)
- 功能:按指定格式向显示器输出数据
- 输出表:要输出的数据(可以没有,多个时以,分隔)
- 格式控制串:包含两种信息
- 格式说明:%[修饰符]格式字符,用于指定输出格式
- 普通字符或者转义序列:原样输出
- 格式字符
1721133029526.png - 说明:
- 格式字符要用小写
- 格式字符与输出项个数应相同,按先后顺序一一对应
- 输出转换:格式字符与输出项类型不一致,自动按指定格式输出
- 说明:

数据的输入
- 字符输入函数
- 格式:getchar()
- 功能:从键盘读一个字符
- 格式输入函数
- 格式:scanf("格式控制串",地址表)
- 功能:按指定格式从键盘读入数据,存入地址表指定的存储单元中,并按回车键结束
- 地址表:变量的地址,常用取地址运算符& scanf("%d",&a)
数字的输入规范


字符的输入规范

选择结构
if语句
单分支:if(条件)语句;
双分支:if(条件)语句1; else 语句2;
switch语句
格式:
switch(表达式){
case 常量表达式1:语句1
case 常量表达式2:语句2
...
case 常量表达式n:语句n
[default:语句n+1]
}
break只能出现在switch或者循环中