下面是学习C语言时总结的一些基础知识,希望对初学C语言的读者有些许作用,写的不好勿喷。
(1)
一. 简单程序的一般形式
1. 学习了解文件信息
2. #include 在本文件中导入其他文件
3. 一个程序中有且仅有一个main函数,他是程序的入口
3. 每条语句都要以分号结尾
4. 注释
1) // 注释一行
2) /* */注释多行
PS:注释仅仅是为了结束语句的作用,编译时并不会执行
二. 基本数据类型
1. 整型
1) short 短整数类型,占两个字节,取值范围是,五位数
1. 无符号类型(不包含负整数):0 ~ 65535(2^16-1)
2. 有符号类型(包含负整数):-32768 ~ 32767
2) int 整数类型,占四个字节,取值范围是,十位数
1. 无符号类型(不包含负整数):0 ~ 4294967296(2^32-1)
2. 有符号类型(包含负整数):-2147483648 ~ 2147483648
3) long 长整型,32位的系统占4个字节,64位的系统占八个字节,取值范围是,超过10位数的
2. 浮点型
1) float 单精度浮点数类型,占四个字节,6位有效数字
2) double 双精度浮点数类型,占8个字节,15位有效数字
PS:系统的默认类型是双精度浮点型Double,在使用单精度浮点型float类型时,需要在数字后面添加F或f用以区分
3. 字符型
1) char 占一个字节
2) 用于存储字母和标点等字符
3) 字符在计算机中采用二进制的ASCII码来存储,可以通过字符对应的ASCII码来比较字符的大小
4. 总结:必须掌握的
1) 整型,有四种类型,short表示五位数,int表示十位数,long表示十位以上的数
2) 浮点型有单精度和双精度,双精度的精确度高,小数,系统默认是双精度,后面加f可以表明该小数是单精度
3) char 用于存储字符及标点
5. 练习
声明short/int/long/char/f类型的变量各两种
三. 常量、变量
1. 常量:程序运行期间值不能被改变的值
比如:
3
5
2.3
'R'
2. 变量:程序运行期间值能被改变的值
1) 变量代表一个存储区域
2) 存储区域内存储的内容就是变量的值
3) 变量的值可以在程序运行期间改变
3. 变量的定义
1) 变量定义
格式
数据类型 变量名 = 初始值;
int age = 25;
int 指整数类型
age 指变量名
= 指将后面的初始值赋给变量
25 指初始值
; 指语句结束
I 2) 变量、常量命名规则
1. 只能由数字、字母、下划线组成,并且不能以数字开头
2. 不可以与系统保留字同名
å 3. 见名只意
4. 不能使用重复的变量名
å
5. 驼峰命名法
总结:必须掌握的内容
1. 什么是常量,什么是变量
2. 如果定义常量和变量
四. 运算符
1. 赋值运算符
用于给变量赋值,将等号右边的值赋给等号左边的变量
练习:如何交换两个int型变量的值
2. 算术运算符
+ - * / %
1) 除号右边的数字不能为0
2) 取余运算符两边必须都是整数
3) 两个整数相除,得到的是整数
4) 小数和整数相除,得到的小数
++ --
1) ++或--在前,先执行++或--,后运算
2) --或++在后,先运算,后执行++或-
3. 复合运算符
å
+= -= *= /= %=
1) a += b; ==> a = a+b;
2) a -= b; ==> a = a-b;
....
4. 条件运算符
格式: 条件表达式 ? 真结果表达式 : 假结果表达式
比如:
int a = 3;
int b = 5;
int c = 0;
c = a > b ? a : b;
5. 总结:必须掌握的内容
1) = +=
2) ++ --
3) 条件运算符
五. 表达式
1. 常量、变量、运算符的组合
2. 每个表达式都会有运算结果
3. 例如: 3+5, a+b
4. 语句,用结束处的一个分号表示,语句是程序执行的最小单位
六. 输入、输出函数
1. 输出函数 prinft()
1) printf函数被设计用于显示格式串,并在该串中的指定位置插入可能的值
2) 格式:
prinft("格式串",表达式1,表达式2,...);
3) 格式串中包含普通字符和转换说明
1. 转换说明以字符%开头。是用来表示打印过程中待填充的占位符,如果后面跟的是d,表明打印时要在这个位置打印出一个整形数据。
2. 普通字符,会将普通字符完整的打印出来
4) 转换说明符
%d 整型
%hd 短整型
%ld 长整形
%f 单、双精度浮点数
%c 字符
5) 格式转换控制
printf("%04d",12) 最小字段占四个位置,不足用0补齐,如果不加0试试效果
prinft("%-4d",112);最小字段宽度占四个位置,左对齐
prinft("%4.2f",1.2345);
最小字段宽度占四个位置,保留小数点后两位
6) 转义序列
\n 回车符
\\ 打印\
%% 打印%
2. 输入函数 scanf()
1) scanf以回车确定输入结束,并且只接受大键盘的回车,不接受小键盘的回车
2) scanf("%d,%d",&num1,&num2); 输入的时候两个整型数之间必须有『,』,格式串中除了转换说明的其他字符都要从控制台输入
3) 不要在格式串后面加『\n』字符,会抵消掉人工输入的回车
3. 总结:必须要掌握的内容
1. prinft和scanf,这两个单词
2. 学会输入和输出指定的内容
3. 验证密码
(2)
一. 分支语句
1. BOOL 布尔类型
1). 在Xcode中想要使用布尔类型,需要导入stdbool文件
2). 布尔类型的值只有两个true和false,我们也可以给布尔类型赋0,表示假,赋非0表示真
2. 关系运算符
> >= < <= == !=
主要用于比较运算,返回的结果只有真假两种情况,结果值用bool类型变量存储
3. 逻辑运算符
1) &&,逻辑与:运算符两边同时为真,整个逻辑表达式的结果才为真
2) ||,逻辑或:运算符两边同时为假,整个逻辑表达式的结果才为假
3) !,逻辑非:将表达式的结果取反
4. 总结必须掌握的内容
1) 怎么让Xcode支持布尔类型
2) 逻辑运算符的三种应用
二. if语句
1. 用if语句可以构成分支结构,它根据给的条件进行判定,以决定执行某个分支程序段
2. C语言的if语句三种基本形式
1) if(条件表达式){
语句段
}
当条件表达式为真,运行大括号内的语句段,否则继续执行下面的程序,如果在if括号的后面加上一个分号,试试效果如何
练习:控制台输入字符,判断如果输入的是m,则在控制台输出男性,否则输出女性
2) if(条件表达式){
语句段
}else{
语句段
}
当条件表达式为真时,运行if语句段,否则运行else语句段
练习:输入一个年份,判断该年份是否是闰年(能被四整除而不能被100整除,能被400整除)
3) if(条件表达式1){
语句1
}else if(条件表达式2){
语句2
}else if(条件表达式3){
语句3
}
条件表达式1为真,执行语句1,条件表达式2为真,执行语句2,条件表达式3为真,执行语句3
3) 总结
1. 会使用if做判断
2. 会使用if做多层判断
练习:
1) 从键盘输入一个字符,
2) 是数字打印This is a digital
3) 是大写字母打印this is capital letter
4) 是小写字母打印this is letter
5) 如果是其他字符,打印other
三. Switch语句
1. 多重选择,在日常生活中,常常需要把表达式和一系列值进行比较,从中找出当前匹配的值
2. 格式:
switch(表达式){
case 可能的值: {
语句1;
}break;
case 可能的值: {
语句2;
}break;
default :{
上面列举的值都不是的话,执行这段代码
}break;
}
3. 注意事项
1) switch语句和if-else相比,switch更容易阅读,更加直观
2) case后面的标签只能是整型常量或者整型表达式,不能用变量作为case的标签
3) default后面的break可以舍掉
4) 整个default语句可以舍掉
5) case中定义变量需要加{}
4. 总结:
1) switch的正确书写格式
4. 练习:
从控制台输入1-4,对应打印出春夏秋冬的英文词
4. 枚举类型
1. 枚举类型的目的是提高程序的可读性
2. 枚举值其实就是整形变量
3. 格式:
enum 枚举名字 {
枚举类型 = 初始值(数字或字符串),
summer,
autumn,
winter,
};
4. 枚举值表中罗列出一个事物的所有可能的状态,默认从0开始
5. 练习:
从控制台输入1-4,对应打印出春夏秋冬的英文词(使用枚举的方式)
(3)
一. 循环概述
一种好的语言应该能够提供一下三种形式程序流
1. 顺序
顺序执行语句序列
2. 分支
通过进行一个判断在两个可选的语句序列之间执行
3. 循环
在满足某个条件之前反复执行一个语句
1) 学会循环语句,你可以控制计算机循环做某件事情,计算机没有情感,重复做某一件事情,他不会有情绪的,也就多费点电,所以循环结构是程序设计中最能发挥计算机特长的程序结构。
2) 特点:在给定的条件成立时,反复执行某程序段,直到条件不成立为止。
3) 给定的条件成为循环条件,反复执行的程序段称为循环体
二. while循环
1. 格式
while(循环条件表达式){
循环体
}
2. while语句中的循环表达式一般是关系表达式或者逻辑表达式
3. While循环直到循环条件为假的时候,循环停止
4. 练习:
1) 计算1+2+3+....100的和
2) 计算100内所有是13倍数的数字之和
5. 循环辅助手段:break
在循环中,break主要作用是提前结束while循环,执行循环后面的语句,通常break语句总是与if语句连在一起,想想摘草莓
6. 循环辅助手段continue
continue语句能筛选不执行哪一次循环,但不会终止整个while循环
三. do..While循环
1. 格式
do {
循环体
}while(循环条件表达式);
2. 执行循环的时候,先执行循环体,在判断循环条件,直到条件不满足的时候,循环结束
3. 练习,判断控制台输的数字有几位
四. for循环
1. 格式
for(循环变量初值;循环条件;循环变量增量){
}
2. 循环条件为假的时候,循环结束
3. 用for循环练习:
1) 打印出1~3
2) 打印三遍1~3,每一遍打印都换行
3) 打印
1
1 2
1 2 3
4. 打印乘法口诀表
五. 总结
1) for最常用,通常用于知道循环次数的循环
2) while也很常用,通常用于不知道循环次数的循环
3) do...while不是特别常用,通常用于需要先执行一次的循环
(4)
一维数组
1. 之前我们所学的变量都是标量,标量只能保存单一数据,C语言也支持聚合变量,这类变量可以存储一组或者多组的数值
2. 数据变量就是聚合变量,但是只能存储相同类型的数值
3. 数组的每个成员称为一个数组元素
4. 数组定义 1) 格式 数据类型 数组名[数组长度] = {值1,值2} 2) 数组长度可以是常量、变量、表达式 3) 数组通过下标来存取值,第一个元素的下标是0,第二个元素的下标是1,依次类推 4)
随机数
1. 导入框架
2. arc4random()%5 随机生成从0到4的随机数
5. 练习:
建一个数组,里面存放这咱们人的工号
二. for循环与数组
数组和for循环常常结合在一起使用,通过for循环对数组中的每个元素执行一些操作称为遍历数组
1. 系统不会检测,数组元素的下班是否越界,编程时必须保证下标不能越界
2. 数组是一个整体,不能直接参加运算,只能对单个元素进行处理
3. 练习:
从控制台输入5个学生的分数,并算出平均值
三. 宏定义
1. 格式
#define 宏定义的名字 被替代的内容
2. 无参宏和带参宏
四. 数组排序
1. 开发中经常会对一系列的数值经行排序:例如:对班级学员按照年龄、分数排序,常见的排序方法很多,最常用的是冒泡排序
冒泡排序原理:
1) 先比较第一个和第二个元素,如果第一个比第二个大,就交换他们两个的位置
2) 然后用第二个与第三个比较,如果第二个比第三个大,就交换位置,之后不断重复
PS:通过这方方式,让最大值也每一个元素进行比较。
3) 练习:
自定义一个包含五个元素的数组,在控制台重新给这五个元素赋值,然后,找到数组里面最大的值
(5)
一. 二维数组
1. 类型说明符二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,之前学习的以为数组是一维数组,只能有一行元素,而二维数组能有多行数据。
2. 格式:
数据类型 数组名[][] = {
{值1,值2,值3},
{值4,值5,值6},
{值7,值8,值9},
}
3. 案例
1)定义一个四行四列的数组
2)对上诉的数组随机赋值
3) 打印上诉的二维数组每个元素
4) 打印上诉的二维数组的最大值,和
4. 练习:
1) 定义一个三行五列的二维数组,对其进行随机赋值
2) 打印整个数组的最大值、和
3) 打印每列的最大值
4) 按照列数打印该数组中的每个值
5) 将数组的行和列交换,存储另一个五行三列的数组中
二. 字符串数组
1. 字符串数组:数组当中的每个元素都是一个字符串,字符串是一维的字符数组,所以字符串数组实质上是二维字符数组
2. 格式
char 数组名[行数][列数] = {字符串1,字符串2...}
3. 字符串数组的存取
1) 字符串的访问和二维数组一样,都是通过下标来获取
2) 打印字符串数组中的每个字符串
3) 打印字符串数组中的每个字符
4) 打印字符串数组中的每个字符串的长度
4. 练习:
1) 输入三个单词,查找并输出最长的单词
2) 有五个名字的字符串数组,按照英文字母的大小,进行升序排序
三. 多维数组
当数组下标在2个或2个以上时,该数组称为多维数组,例如
int a[2][3][4]表示整形的三维数组,2层4行3列
一般通过三层for循环操作
1. 总结:
1)多维数组理论上,维数可以任意
2)多维数组的元素个数 = 各维数个数乘积
3)多维数组占用内存 = 元素个数乘以单个元素所占的空间
四. 总结
对于多维数组,定义的时候多一个[常量表达式],就多一个维度,几维就对应几层循环字符串数组实质是一个二维字符数组,注意每个字符串的长度不能超过第二个纬度的长度.
---------------------------------------------------------------------
未完(接C语言大集合续)