-
Notifications
You must be signed in to change notification settings - Fork 1
/
79前6天总结.c
218 lines (141 loc) · 4.25 KB
/
79前6天总结.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
1.数据类型
基本数据类型:
int float double char
数组:基本数据类型 [长度]:int [3]
指针: 数据类型 *:int *p;
void 空类型
2.标识符
自已给取一个名字:如数据或函数取名字.
3.关键字
int return ....系统(编译器)给你先定义了一些具有特殊函义的词
4.输出与输入函数
输出:printf("%d\n",变量名);
输入:scanf("%d",指针);:在前面的占位里分隔符不要用\n与空格
5.基本运算
算术:注意%取余数的用法.
关系:==(注意) > < >= !=....
逻辑: ||或 (两边只要有真为真) 1>2||2>0 (a>1||<-2);
&&与(且)(两边只要有假为假) 1>2&&2>0 a>3&&a<6(数学:6>a>3)
6.流程控制
选择:if switch
int a=100;
1.
if(a>2){
printf("不可能\n");
}else{
}
2.
if(a>2){
printf("..a>2.\n");
}else if(a>6){
printf(".a>6..\n");
}
3.
if(a>2){
printf("..a>2.\n");
}else if(a>6){
printf("..a>6.\n");
}else{
printf("都不满足\n");
}
4.
if(a>2){
}
注意:不管if结构里有多少判断,最多只会执行其中的一个.
switch
switch(a){
case 1:
break;
case 2:
break;
case 3:
break;
default:
break;
}
break:假如case下面没有break会不判断直接执行下一个case.直到碰到break或switch结尾,才会结束.
循环:while do while for
int a;
1.while(a>100){
printf("条件满足会一直执行\n");
}
2.do while
do{
printf("条件满足会一直执行\n");
}while(a>100);
do while至少执行一次
3. for
for(int i=0;i<100;i++){
printf("条件满足会一直执行\n");
}
7: 函数
返回值 函数名(参数可有可有.看情况){
}
//计算任意两个整数相加的值
int add(int a,int b){
int count =a+b;
return count;
//return a+b;
}
//打印一个hello world;
void printHello(){
printf("hello world\n");
}
8:进制
几进制:表示逢几进1位.
任意进制每位最大不能>=其自已. 2进制每一位>=2. 10.每一位不能>=10
计算机里进制的类型 0b:二进制 0:八进制 无开头:十进制 0x:表示十六进制
知道如何把二进制转换成十进制 八进制 十六进制
转十进制:从第一位开始.不为0的位乘以2的几-1次方.最终把所的结果相加.
转八进制: 三位二进制表示一位八进制 如:111 7 , 110 6
转十六进制:四位二进制表示一位十六进制 如:1111 F , 1100 C
进制的运算
或(有1为1) 与(有0为0) 异或(相同为0,不同为1) 取反(1与0调换)
左移(高位丢弃 乘以2几次方) 右移(低位丢弃 除以2的几次方)
9.内存分析
知道:任意的数据都是从空闲的地址高位开始寻址.
如果是构造类型.如数组.数据里还有数据.里面的数据从低位开始寻址.
10.数组
把多个有关联的同一类型数据放一块.这个就是数组.
类型 数组名[长度] 如:char arr[10]
定义:
char arr[10];
赋值:
1.char arr[3]={'a','b','c'};
2.数组名[下标]=值;
arr[0]='d';...
取值:
数组名[下标];
怎么去遍历这个数组.(把数据里的每一个元素取出来,用循环)
for(int i=0;i<10;i++){
arr[i];
}
知道怎么去取数组里的最值(最大值或最小值)
int arr[5]={1,5,3,7,2};
int temp=arr[0];//临时变量去等于数据里的一个元素
让这个temp去与数组里的每一个元素比较.(循环).如果比其大(小).把元素的值赋值给temp;
循环完成.当前temp的值就是最值.
例如:取数组的最大值
for(int i=0;i<5;i++){
if(temp<arr[i]){
temp=arr[i];
}
}
printf("循环完成temp就为当前数组的最大值:%d\n",temp);
知道选择排序与冒泡排序的原理.
选择:核心就是依次把最值选出来.从头开始放,或从尾开始放,让每一次出来的结果放完,则结束.
冒泡:核心就是把最值(最大或最小)冒到后面. 循环完成.当前排序结束.
实际操作:(不要求完全掌握).两个for循环
11.字符串:
就是一个以\0结尾的字符数组
12.指针:
一个存地址的数据类型.
定义:
类型 *指针名;
赋值:
指针名=地址; 取地址的方式&变量名.
操作方式:
核心就是:操作所指空间的数据 *指针名 int a=0; int *p=&a; *p=5;
操作自已:
移动+1:表示向高位移动
移动-1:表示向低位移动