#include <stdio.h>
#include <string.h>
#include <math.h>
void unit_1();
void unit_3();
void unit_4();
void unit_1(){
printf("单元一:\n");
/*
数值转化:
二,八,十六-->十进制:
十进制-->二,八,十六:
二进制-->八,十六:
*/
/*
原码:最高位符合位:0:正,1:负
数值存储:正数原码存储。负数补码存储
补码:除符号位,其他位原码求反+1;
考点:数值溢出问题
*/
short int a=32767;
a+=2;
printf("数值溢出:%d\n",a);
printf("test:%d",-32768) ;
/*
-32767
解析:原码:0111 1111 1111 1111
10
+1:1000 0000 0000 0001
符号位为1,为负数,需要按照补码->原码,算出 十进制
补码:1000 0000 0000 0001 -1
反码:1000 0000 0000 0000
原码:1111 1111 1111 1111 -32767
*/
}
void unit_3(){
/*
易错点:但判断语句遇到:||和&& 满足短路原则。||前满足后 后面不在计算。&&前不满足后边不计算
*/
int a,b; //定义时不能连续赋值; 除非 int b;int a=b=1;这样可以
a=b=0;
if(++a||++b){
printf("或短路:a=%d,b=%d\n",a,b);
}
a=b=0;
if(a--&&b--){
}
printf("与短路:a=%d,b=%d\n",a,b);
/*
易错点:switch多分支时
case:没有break;时 将会从此处结束到末尾,包括default
但没有匹配到值时,会执行default:但default 不在末尾,且没有break;会从此处运行到末尾;
*/
int ab=1;
switch(ab){
case 1: printf("switch->1\n");
case 2: printf("2\n");
default: printf("default\n");
}
switch(ab){
default: printf("switch->default\n");
case 3: printf("1\n");
case 2: printf("2\n");
}
/*
易错点:if,else if else 没有缩进:记住一个原则:else 只与最近一个if匹配。
++i:前加一后在参与运算,和i++ :先参与运算后加一。
记住运算优先级 ,编写代码中不确定可以使用()提高优先级
*/
int sa=1,sb=0;
sb=sa++*5+sa++;
printf("自增后:运算中出现多个。%d\n,sa的值:%d",sb,sa);
//上述可以证明,并不是整个运算结束后自增,而是参与后自增,
}
void unit_4(){
/*
while(x):先判断条件:真:执行函数体。
do{}while(x):至少执行一次函数体:在进行条件判断。
上面两种。记得在函数体改变 判断条件。否则可能导致死循环
for(int x;x<y;x++):括号中可以为空,但必须有两个 分号。
break:结束本层循环。
continue:进行下一次循环。
*/
/*
递归思想:可以拆分出多个事件,并且每个事件的做法相同
条件:要有递归出口
*/
printf("递归求和:%d\n",sum(100));
}
//递归求和
int sum(x) {
if(x==0){
return 0;
}
return x+sum(x-1);
}
//数组
void unit_5(){
/*
易错点:定义数组后,本能给数组名重新赋值
数组名:为数组第一个元素的地址
一维数组:在定义时初始化,可以不用指定数组长度
二维数组:在定义时初始化,一维长度可以不用指定,二维一定要指定数组长度
当数组作为函数参数传入,在函数中修改值,原数组会被修改。因为数组名就是地址。不是值传递
*/
int a[]={1,2,3};
ahcddd(a);
printf("数组传入:%d\n",a[0]);
/*
易考点:字符串函数
字符串连接:strcat(数组1,数组2);把数组2连接到数组1,并删除数组1 最后\0
字符串拷贝:strcpy(数组1,数组2);把数组2赋值到数组1中,
字符串比较:strcmp(s数组1,数组2);相等0,1>2 >0 1<0 <0 前大即正,前小即负,相等即0
字符串长度:strlen(数组),不包括\0
字符串大写:strlwr()
符串大写:strupr()
*/
char sa[]="A",sb[]="b";
printf("字符串连接:%s\n",strcat(sa,sb));
printf("字符串拷贝:%s\n",strcpy(sa,sb));
printf("字符串比较:%d\n",strcmp(sa,sb));
printf("字符串长度:%d\n",strlen(sa));
printf("字符串大写:%s\n",strlwr(sb));
printf("符串大写:%s\n",strupr(sb));
}
void ahcddd(int a[]){
a[0]=1000;
}
//函数
void unit_6(){
/*
存储方式
auto:动态分配空间
static:静态存储空间,在函数中使用,运行结束后。不消失,下次调用还是此空间的值
extern:声明外部变量,扩展外部变量作用域。
*/
}
void unit_7(){
}
//union
//enum
//typedef
//struct
//malloc
void main(){
printf("开始复习!\n");
// unit_1();
// unit_3();
// unit_4();
unit_5();
}
版权属于:
白羊
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论 (0)