脸熟赛
新生赛基础知识笔记
数据类型
基本类型
数据型
-
整型
关键字 格式控制符 short int %d int %d long long int %lld -
浮点型
保留字 格式控制符 float %f double %lf
字符型
- 字符
保留字 格式控制符 char %c
构造类型
指针类型
空类型
- void
数据结构
基本结构
单个变量
char c; //声明变量
int i = 0; //对变量进行声明及初始化
数组
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; //对数组进行声明及初始化
double s[10] = {}; //对数组进行声明并默认初始化为0
高级结构
运算符
种类
-
算术运算符
符号 用例 + a+b - a-b * a*b / a/b % a%b ++ a++, ++a -- a--, --a -
关系运算符
符号 用例 > a > b < a < b >= a >= b <= a <= b == a == b != a != b -
逻辑运算符
符号 用例 && a && b || a || b ! !a -
位运算符
符号 用例 & a & b | a | b ~ ~a ^ a ^ b << a << b >> a >> b /* 异或的交换律 a^b = b^a */ //a[i] <==> a[i+1] a[i] = a[i] ^ a[i+1]; a[i+1] = a[i] ^ a[i+1]; a[i] = a[i] ^ a[i+1];
-
赋值运算符
-
简单赋值
符号 用例 = a = b -
复合算术赋值
符号 用例 += a += b -= a -= b *= a *= b /= a /= b %= a %= b -
复合位运算赋值
符号 用例 &= a &= b |= a |= b ^= a ^= b <<= a <<= b >>= a >>= b
-
-
条件运算符
符号 用例 ?: (a>=b) ? a : b -
逗号运算符
符号 用例 , a = 0, b = 2, c = 3 -
指针运算符
符号 用例 * *p & &n -
求字节运算符
符号 用例 sizeof sizeof(a) -
特殊运算符
符号 用例 ( ) (a-b)*c [ ] a[N] . a.b -> a->b
优先级
计算机按照从小到大(优先级),从左往右(先后顺序)对表达式进行运算。
优先级 | 符号 |
---|---|
1 | ( ) [ ] . -> |
2 | (类型) ! ~ - ++ -- * & |
3 | * / % |
4 | + - |
5 | << >> |
6 | > < >= <= |
7 | == != |
8 | & |
9 | ^ |
10 | | |
11 | && |
12 | || |
13 | ?: |
14 | = += -= *= /= %= <<= >>= &= |= ^= |
15 | , |
流程控制语句
分支
-
if else
/* 判断成绩: 优秀:[85,100], 良好:[70,85), 及格:[60,70), 不及格:[0,60); 其他未定义 */ int score = 0; //初始化成绩 if (score > 100) { //未定义 printf("你可真牛逼"); } else if (score >= 85) { //优秀 printf("优秀"); } else if (score >= 70) { //良好 printf("良好"); } else if (score >= 60) { //及格 printf("及格"); } else if (score >= 0) { //不及格 //printf("加了个油!!!"); printf("不及格"); } else { printf("你也挺牛逼"); //未定义 }
-
switch case
循环
-
for
/* for循环遍历数组 */ double a[10] = {}; //声明数组并初始化为0 for (int i = 0; i < 10; i++) { //以i为循环变量对遍历数组 printf("a[%d] : %lf\n", i, a[i]); }
-
while
/* while循环遍历数组 */ int a[10]; //声明数组不进行初始化 int n = 0; //声明循环变量 while (n < 10) { printf("a[%d] : %d\n", n, a[n]); n++; }
-
do while
函数
库函数
-
标准输入输出库函数
#include<stdio.h> //声明调用标准库函数
其中常用函数有
scanf()
,printf()
等。 -
标准库函数
#include<stdlib.h> //声明调用标准库函数
其中常用函数有
qsort()
等。
自定义函数
算法
排序
-
冒泡排序
/* 冒泡排序 对长度为len的数组a[]进行排序 */ void myBubbleSort(int a[], int len) { for (int i = 0; i < len; i++) { //printf("\t第%d次循环\n", i); //循环次数 for (int j = 0; j < len - 1 - i; j++) { if (a[j] > a[j+1]) { //从小到大进行排序 //交换 : a[j] <==> a[j+1] //printf("\tswap> a[%d] : %d\tto \ta[%d] : %d\n", j, a[j], j+1, a[j+1]); int t = a[j]; a[j] = a[j+1]; a[j+1] = t; } } } return; }
-
快速排序
//声明调用 #include<stdio.h> #include<stdlib.h> //自定函数的声明及定义 int myComp(const void*a,const void*b) { return *(int*)a-*(int*)b; } //主函数 int main() { /* 数组变量声明及初始化 */ int a[10] = {13579, 24680, 0, -129837, 92, 6, -2, -837, 666, 123}; int n = 10; //for循环遍历数组 printf("排序前\n"); for(int i = 0; i < n; i++) { printf("\ta[%d] = %d\n", i, a[i]); } qsort(a, 10, sizeof(int), myComp); //调用库函数 //while循环遍历数组 printf("排序后:\n"); n = 0; while (n < 10) { printf("\ta[%d] : %d\n", n, a[n]); n++; } return 0; }