29
社区成员




兄弟们答应我,上机考试能搞简单就别整复杂好吗,还有多复制粘贴,能快则快
1.bool类型,c语言中需要引入头文件<stdbool.h>
2.标识符以字母开头,_被视为字母
3.‘\’进制or十六进制整数时看做asc码对应字符,\101或\x41表示A, \0表示字符null
4.c中不应该出现连续关系表达式,a<b<c,应写为(a<b)&&(y﹤b)
5.优先级(运算次序)难记,所以多用括号,用好括号()
6.复合语句一定要用{},否则变为顺序执行就要哭了
7.不确定类型,可以用强转,例如(int)(表达式)
8.int不过改long long
9.c语言中的除法是小学除法,结果取整
10.getchar()用的时候注意读回车的问题
11.if else if else才有对应关系,注意对应问题
12.switch,case后面要用常量表达式,注意空格,除了最后一种情况,记得加break
13.枚举常量表的第一个标识符对应整数0,其他对应,前一个+1,比如enum r{a,b,c,d};a对应0,b对应1,c对应2,d对应3;d但也可以在声明枚举类型时设定对应整数值,例如enum r{a=10,b=a+2,c=15,d},a对应10,b对应12,c对应15,d对应16;标识符中的元素不要重复
14.if/while(a)a就算是bool类型的判断表达式对应的也是整数,真则结果a=1,就为假=0;实际上a为非0整数就为真。
15.使用do while注意是先执行后判断
16.闰年的定义是:能被4整除,且不能被100整除,或能被400整除
17.(v++)==v,()中得到表达式的值为v,但v变量中所存为v+1,相当于先赋值再+1
(++v)==v+1,()………………………为v+1,………………………….为v+1,………..先+1再赋值
v--,--v同理,正常使用是主要是看用不用表达式就行。
18.素数i判断条件,用2----根号i每个整数去除,都不能整除(取余为0)就为素数,但做题时懒得去引math.h函数库,就直接2---i/2去除就好
19.最大公因数辗转相除,但建议递归写 if(y==0) return x; else return gcd(y,x%y),
最小公倍数==两数乘积/最大公因数
20.c字符对应asc码整数,因此可对应进行整数类型运算
21.return值由函数定义(类型说明符)决定,void用*d指针带回也行
22.数组,静态分配,长度规定,小心别越界,多维数组使用小心
23,主元选择排序,冒泡排序,插入排序,半分检索(不着急,一个个检索也行)都会了吗
24.数组初值,①数据个数<数组长度,剩余填0,例如int a[5]={1};各个元素初值为1,0,0,0,0;
。。。。。。。>…………… ,多的不要,例如int a[3]={0,1,2,3,4,5},各个元素初值0,1,2
②只有数组最外层一维,可以不指长度(元素个数),而由初始化算子中的元素个数决定,例如 int a[]={0,1}两个元素;int b[][3]={ {0,1,2},
{1,2,3},
{2,3,4} };
25.char st[]={‘a’,‘b’,c‘,…‘d’,’\0’},这样写的记得自己加\0,我正经人直接char st[]=”abc…d”
变量字符串(字符数组)记得自己加\0
26.字符数组的操作能用string.h里的函数就别自己编,还有在部分编译器上strcmp(st,”a’)不一定返回1或-1,可能返回一个>0或<0的数,所以…。列举一下常用的函数,比较strcmp(),后值赋给前strcpy(), 求长度strlen(), 连接两个字符串的函数 strcat(str1,str2)
27.typedef重命名结构体指针好用,结构体也OK,能少打就少打,虽然直接复制粘贴也行,但保不准你可能忘记打*或啥struct
28.队列和栈不好整,小菜鸡的我不建议多用,除了必要
29.上机的时候建议对printf的部分动手脚,反序啥的从尾输出即可,毕竟oj只看输出结果,你懂得
30.指针,记得给指向关系啊喂,指针只能存地址,指针指向数组时,与整数做加减表示向数组尾部方向移位,int a[5] ,*p=a; p=p+3,现在表示a[3];在指向同一数组时,指针间可以做减法,表示指针间距离,记住数组连续分配地址的性质,一般用在自编求长度时用,此时指针间也可以做判等,关系运算; 记住数组名是地址常量,指针才是地址变量,咋不干给常量赋值的事啊; 用指针时看看指哪了,别整越界
31. 对于二维数组a[m][n],若看成m行n列的形式。
(1)a+i指向第i行,此时还没有获得第i行元素首地址,没有办法访问其中的元素
(2)*(a+i)或a[i]指向第i行首元素,获得第i行元素的首地址。
(3)a[i]+j指向第i行第j个元素,可以通过a[i]第i行元素的首地址访问各个元素。关键是要记住a[i]=*(a+i), a[i][j]=*(*(a+i)+j),当然你也可以a[i][j]=*(a+i*n+j)
32.结构体指针,用间接选择—>,c语言只允许对结构体变量整体赋值,结构体初赋值是数据是要对应结构体类型里的变量的。
33.递归全局量小心用,别忘了终止条件
34.链表记得先引<stdlib.h>才能malloc和free;尾插一般比较符合我们习惯,还有哨兵项用完记得释放啊。
35.编译器不要同时开多个项目容易崩掉
太基础了,都不好意思发,主要是想给初学的同志们分享一下自己的教训,记录一下生活嘿嘿