1972年美国贝尔实验室在研究UNIX操作系统过程中,为UNIX设计编程语言,肯·汤普森参照BCPL语言设计出了B语言,丹尼斯·里奇在这基础上设计开发出C语言。因此C语言和UNIX系统是密切相关的,这也是为啥在Mac OS、Linux系统上能够很方便编写C语言。
下面一段代码是C语言程序的基本结构
# include <stdio.h>
int main()
{
/* 注释 */
printf("hello world");
return 0;
}
1.??#include <stdio.h>?是预处理器指令,告诉 C 编译器在实际编译之前要包含 stdio.h 文件。
2.??int main()?是主函数,程序从这里开始执行。
3.?/*...*/ 将会被编译器忽略,这里放置程序的注释内容。它们被称为程序的注释。
4.?printf(...)?是 C 中另一个可用的函数,会在屏幕上显示消息 "Hello, World!"。
5.?return 0;?终止 main() 函数,并返回值 0。
1.1 整数(int)
1.2 字符(char)
1.3 浮点
变量:可以改变的量
常量:固定不变的数据,不可以改变的量叫做常量
const int pass = 60? // 表示及格
const int good = 75? // 表示良好
const int excellent = 85? // 表示优秀
直接量:直接写在程序中的叫做直接量
const是一个修饰符,加在int的前面用来给这个变量加上一个常量(不变的)的属性。这个常量的属性表示这个变量的值一旦初始化,就不能再修改了。
如果你试图对常量做修改,把它放在赋值运算符的左边,就会被编译器发现,指出为一个错误。
小问题:让用户输入的值作为常量的值
# include <stdio.h>
int main()
{
int amount;
printf("请输入amount");
scanf("%d",&amount);
const int AMOUNT = amount;
}
浮点数
带小数点的数值。浮点这个词的本意就是指小数点是浮动的,是计算机内部表达非整数(包含分数和无理数)的一种方式另一种方式叫做定点数,不过在C语言中你不会遇到定点数。人们借用浮点数这个词来表达所有的带小数点的数。????????
当浮点数和整数放到一起运算时,C会将整数转换成浮点数,然后进行浮点数的运算。
表达式
1. 运算符:运算符、算子
2.?
1. 算术运算符
+、-、*、/、%、( )、
2.?
a+=1
a++、++a、
a++? ?a+=1 a=a+1
关系运算符:==、!=、 > 、 >= 、< 、<=、
关系运算符的结构就只有两个 1或者0
逻辑运算符: ||、&&、!
if条件语句
swtich多分支语句
while循环语句
for循环语句
break语句
continue语句
1. 函数的定义
? ? ? ? 类型说明符? 函数名(形参类型,形参类型)
? ? ? ? {
? ? ? ? ? ? ? ? /* 函数体 */
? ? ? ? ? ? ? ? return 返回值类型;
? ? ? ? }
定义一个方法,传入两个整数,返回绝对值大的数
# include <stdio.h>
int getMax(int a,int b){
return a > b ? a : b;
}
int main(){
int c = getMax(34,20);
printf("%d",c);
return 0;
}
函数分类
(1) 库函数
(2) 用户定义的函数
(3) 有返回值的函数、无返回值的函数
(4) 有参函数、无参函数?
函数定义
函数的参数
(1) 形参
(2) 实参
函数返回值
2. 函数的调用
3. 函数变量
4. 变量作用域
5. 存储类别
(1) 静态局部变量
(2) 静态全局变量
数组的创建
? ? // 创建一个指定长度的空数组
? ? int arrayName[length];
? ? // 创建一个数组并赋值
? ? int arrayName[] = {1,2,3,4,5,6,7}
? 数组元素的访问
? ? // 使用下标访问数组元素
? ? arrayName[index]
??
? 遍历数组
? ? // 使用sizeof获取数组总长度除以单个元素长度,即可求出数组元素个数,然后通过循环语句即可遍历访问每个数组元素
? 多维数组
? ? int arrayName[3][3] = {{1,2,3},{4,5,6},{7,8,9}}
使用enum关键字类创建枚举类型
enum DAY{
MON,
TUE,
WEN,
THU,
FRI,
STA,
SUN
}
指针变量
# include <stdio.h>
int main()
{
int a = 10;
int *pa = &a;
printf("%d\n",a);
printf("%d\n",*pa);
*pa = 5;
printf("%d\n",a);
return 0;
}
结构体是一种可以存放多种数据类型的复合数据类型,使用struct关键字来创建结构体
# 创建结构体
struct Person {
char name[32];
int age;
int sex;
}
# 使用结构体创建变量
struct Person p1;
p1.name="xujingliang";
p1.age = 28;
p1.sex = 1;
#结构体中数据的访问
printf("age:%d\n",p1.age);
//共用体与结构体的创建和使用是类似的,不同的是共用体和结构体的存储方式是不同的,可以使用union关键字来创建共用体
# 创建共用体
union Person {
char name[32];
int age;
int sex;
}
# 使用共用体来创建变量
union Person p1;
p1.name = "Hello";
p1.age = 20;
p1.sex = 0;
1. scanf( )函数和printf( )函数详解
1.1 获取用户输入的值
1.2 获取用户输入的多个值
# include <stdio.h>
int main()
{
int a,b;
printf("请输入a和b的值,中间使用空格隔开");
scanf("%d %d",&a,&b);
printf("a=%d,b=%d",a,b);
reutrn 0;
}
1.3 printf( )格式化输出
%d | 整数(int) |
%f | 单精度浮点数(float) |
%lf | 双精度浮点数(double) |
%c | 字符 |