一 基础知识
!!!注意:注意区分C语言和python之间的语法区别
!!!变量前必须先定义后使用
python使用缩进表示程序结构(再复合语句当中一般需要用到:),C语言一般使用花括号来表示程序结构,使用缩进只是为了程序格式更美观好看
!!!做程序题时先从main函数看起,不是每一行函数都要搞懂,只要把函数要做的部分弄明白即可
1)程序框架
#include<stdio.h>
int main()
{
/*定义变量
数据类型 变量名(要符合标识符命名规则)*/
int a=5;
return 0;
}
//从main函数开始,也从main函数结束
//建立新项目时选择控制台应用程序
2)标识符命名规则
不能是关键字,只能由字母、数字、下划线构成,且不能由数字开头,区分大小写。标识符命名借名之义。
3)注释
行注释:// 块注释: /* */
4)占位符
%d 输出整型(\n换行) %f 浮点型
5)关键字
二 数据类型
一)基本数据类型
1)整型
·分类
·存储形式
·定义变量和输出:1.打印格式:%d 十进制整型输出 %o八进制int类型 %x十六进制int类型,小写输出 %X十六进制大写字母输出 %u无符号整型输出
·整数和整除相除得到整数,其余类型数据相除会得到i扩展后的数据类型
2)实型(浮点型)
·注意:e前面必须要有数字,e后面数字必须为整数
·占位符:单精度浮点类型:%f输出float数据,默认保留6位小数,数据会四舍五入,%.2f保留两位小数 双精度浮点类型:%lf
·浮点型数据保留有限位数字,当超过有限位时。可能会丢失
3)字符型
·字符常量(ASCII码:0~255):实际上是将字符对应的ASCII码值存入变量当中。
A~Z:65~90 a~z:97~122
·字符变量:存放字符常量,一个字节,8个比特位,输出占位符:%c输出字符型
·字符串常量
4)字符串类型
1.由双引号括起来的字符串
二)构造数据类型
1)数组类型
(一)一维数组
1.定义:是在内存中的连续相同类型的变量空间,数组必须在编译时定义长度
2.结构:
3.数组赋值:
·直接赋值:如果只是部分赋值,则其他未赋值元素都为0
·通过循环打印
·数组的冒泡排序
(二)二维数组
1.定义
2.打印
3.二维数组操作要使用循环嵌套
(三)字符串类型和字符串比较
1.定义
2.常用形式:字符串用双引号引起,单引号是字符,要注意区分,特别注意:直接用双引号定义字符串时末尾会添加字符串结束标志\0,若其作为二维数组的面的数据时,得到的打印出的数据也直接再遇见\0时结束。
3.字符串的打印输出:若没有\0时输出数组时可能会乱码
4.字符串的输入
5.注意,当字符串由双引号括起来使用时末尾自动带\0结束标志,在数组赋值时,要注意此类现象,当printf函数遇见\0时就结束,所以打印时,只能打印到所赋值的字符串
输入过程注意:scanf函数遇见空格或换行表示结束
2)结构体
3)链表
三 表达式和运算符
一)输入输出函数
1)scanf函数
·函数格式:scanf(''%d",&a),注意别漏了&符号
2)printf函数
二)运算符
1)算术运算符
2)赋值运算符
3)比较运算符
4)逻辑运算符
在判断条件时,若有多条件,则需用到逻辑运算符
5)位运算符
6)sizeof运算符
1.计算数据类型在内存中占的字节大小,格式:sizeof(变量),sizeof(数据类型)。
7)运算符优先级及类型转换
·类型转换:
四 程序结构
一)顺序结构
按顺序执行程序
二)选择结构
1)if语句![](https://img-blog.csdnimg.cn/2915cfa0215f44208ed474c332233222.png)
2.if-else语句
3.if-else if -else语句
2)switch语句
如果条件符合后没有写break语句,则会一直往下执行,如果没有选择情况,则会到default语句,相当于ifelse结构中的else语句
3)语句嵌套
条件判断语句可以嵌套,循环结构也可以嵌套。嵌套结构:在花括号里面嵌套循环
4)三目运算符和总结
表达式为真时执行值一,表达式为假时是值二,结构为 表达式?值一:值二
三)循环结构
1)for循环语句结构
判断条件要用括号括起来,在括号里面赋初值和写条件
2)while循环
1.while循环结构:判断表达式也用()括起来
2.while循环使用(C语言里面没有整除,整数除整数得出的结果还是整数)
#include<stdio.h>
int main(viod)
{
int i=100;
int a, b, c;//判断水仙花数的程序
while (i < 1000)
{
a = i % 10;
b = i / 10%10;
c = i / 100;
if (a * a*a + b * b*b + c * c *c== i)
{
printf("水仙花:%d\n", i);
}
i++;
}
}
3.do-while循环结构
先执行语句,在进行循环判断
3)continue语句和break语句
1.break语句
2.continue语句:
4)循环嵌套
循环也可以嵌套,外层循环执行一次,内层循环执行一周
五 函数
一)函数
1)定义![](https://img-blog.csdnimg.cn/937be4ecc4a0447db6eeac8a90fc26aa.png)
2)函数的调用
1.导入头文件 2.使用函数
二)函数的定义和使用
1)函数的定义:
为了实现特定功能的代码块
2)函数调用:
函数调用时,若函数定义在主函数后面,则函数要有函数声明,函数声明格式:
int sum(int a, int b);与函数定义时格式相同,函数声明只是进行声明,并不使用,也不用传入参数。
三)函数基本操作
1)形参和实参:
定义形参时,是类型+名称
2)函数类型和返回值
·类型:有参函数和无参函数
·返回值
·返回值注意事项:返回类型要和函数定义类型相同
3)函数执行流程
1.若函数定义在主函数之后,则在使用函数之前先声明函数
四)局部变量和全局变量
1)局部变量![](https://img-blog.csdnimg.cn/e73e812b9dda4c9d850abb9f4be4dbda.png)
2)全局变量![](https://img-blog.csdnimg.cn/b42bb93093e842efa6512f1e742aaf06.png)
五)宏定义和调用
1)宏定义
2)宏定义的常量习惯用大写字母表示,注意点
3)有参数宏定义,一般会加上括号
六 指针
一)地址与指针变量
二)指针操作
1)打印占位符
%p,打印数据的内存地址,地址由十六进制数表示,&符号表示取地址
2)访问内存地址
1.通过变量名访问,2.通过内存地址访问
3)内存地址示意图![](https://img-blog.csdnimg.cn/39366263c8bd457aae85df09b4f119f9.png)
三)指针和指针变量
1)指针变量定义
指针变量是存放地址的变量
2)指针定义和使用
指针变量和变量的关系,指针变量是用来存放地址的,指针变量是一种数据类型。int*是一种类型,p是指针变量。&是取地址符号,*是取值运算符,%p是打印十六进制地址
3)指针变量和变量的关系
1.打印变量的值
2.通过指针对变量赋值(指针变量间接复制),指针通过*符号间接找到变量a进行赋值操作。
3.指针变量也是一个变量,变量会存储在内存中
4.指针类型所占内存
四)指针作为函数参数
1)函数参数传递方式
1.值传递和地址传递,普通变量:值传递,指针:地址传递
2.值传递:形参不能改变实参的值
3.地址传递:形参可以改变实参的值
2)
七 文件
一)文件操作
二)文件的打开与关闭
1)文件地打开
2)打开模式
3)
八 结构体
一)定义及使用
1)结构体的定义:
2)结构体的修改
3)结构体的使用
4)
二)结构体变量和结构体数组
1)一个结构体变量只能存储一条信息
2)结构体数组:
1.
三)链表基本使用
1)定义
2)