考研复试C语言笔记样本.docx
- 文档编号:7866102
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:11
- 大小:22.86KB
考研复试C语言笔记样本.docx
《考研复试C语言笔记样本.docx》由会员分享,可在线阅读,更多相关《考研复试C语言笔记样本.docx(11页珍藏版)》请在冰豆网上搜索。
考研复试C语言笔记样本
1:
用高档语言编写程序叫做源程序,然后用编译程序吧源程序翻译成二进制目的程序,然后将该目的程序与系统函数库以及其她目的程序连接,形成可执行程序。
2:
算法五个特点:
拟定性,有穷性,输入,输出,可行性。
3:
程序流程图、N-S盒图、伪代码
4:
int无论有符号无符号,都是16位
Short无论是有符号还是无符号都是16位
Long无论是有符号还是无符号都是32位
Float32位double64位,longdouble128位。
一种整型常量背面加u就是无符号,加l就是长整型
5:
\t,\b退格,\r移到本行开头
6:
‘0’48,‘A’65,‘a’97,差值32
7:
级别char 8: (int)x+y只是int化x; 9: i+++j(i++)+j 10.1: float32位,24位表达小数某些(其中涉及了符号位),8位表达指数某些。 11: 字符给整形赋值,如果是无符号字符型,赋值给整形就是占据整形低8位,高8位补0,如果是有符号字符型,如果是负号就补1,正好补0; 12: intshortlong给char就是把低8位给char 13: 整形给long,同char给int同样, 14: putchar()Getchar() Puts(),gets() Printf(“%md”,d)%d,%c,%f,%ld,%o,%x,%u,%s %d原意是,按十进制整形数据输出 M表达输出字段宽度,数字靠右拜访。 如果数字太大,就输出数字,不论m. Printf(“%m.ns”,d) 输出占m列,靠右端,只取字符串中前n个字符,如果n不不大于m,则不论m Printf(“%-m.ns”,d) 输出占m列,靠左端 Printf(“%m.nf”,d) %f输出实数,涉及单精度和双精度,只能输出六位小数, 输出n位小数 Printf(“%m.ne”,d) N指是输出小数位数, Scanf输入整形,分割可以用回车或者tab或者空格但是不能用逗号 Scanf(“%3d%3d”,&a,&b)输入123456. 系统自动把123赋值给a,456赋值给b;同理,如果系统输入abc三个字符,但是ch只能容纳一种,就吧a给ch,bc给背面。 Scanf(“*%3d”)表达读入三位整数,但是不赋值。 , Scanf字符串中,除了格式阐明符以外尚有其她字符,输入时候要在相应位输入这些字符。 Scanf(“%c%c%c”,&c1&c2&c3)输入abc,不应当是有空格、 Scanf(“%s%s%s”,str1,str2,str3); Scanf输入各种字符串时候,用空格分隔 15: 大不大于优先级高于等于。 16: 优先级由低到高: 赋值运算符,与和或,大不大于,算术运算,非。 17: break是跳出循环,continue是跳出本次循环, 18: inta[3][4]={{1},{5},{9}},每行自补0 19: strcat(s1,s2)把s2连接到s1。 Strcpy(s1,s2)把s2复试到s1中,覆盖s1.注意这个复制时候‘\0’也复制进去 Strncpy(s1,s2,n)把s2前n个字符复试到s1中 Strlwr大写转小写strupr小写转大写 20: 数组做形参时候,大小可以不指定,其实本质上还是把首地址给参数传递了 21: 多维数组做函数参数,可以且只能省略第一维大小。 22: register变量,只有局部变量和形式参数可以作为寄存器变量,寄存器数目有限,局部静态变量不能,局部静态变量不能为寄存器变量 23: 外部变量跨文献用法是,在文献1中函数外定义外部变量intA;在文献2中函数外声明externA 24: 事实上,编译器遇到extern时候,当前本文献找外部变量定义,如果找到,就在本文献中扩展作用于,如果找不到,就在连接时从其她文献中找外部变量定义,然后作用域就是跨文献。 25: 在文献中函数外部定义变量,如果是普通定义,intA,其她文献可以通过extern来引用这个变量,但是如果定义staticintA,则其她文献无法通过extern来引用。 26: 如果外部变量不在文献开头定义,则有效范畴只在定义处到文献结束,如果定义之前函数要引用外部变量,就要用extern声明。 如果外部变量定义在函数之前,就没有必要extern了、普通人们喜欢吧变量和函数extern声明放在一种单独文献中,即头文献。 声明: externintA,B 定义: intA=13,B=8; 27: 局部变量: 自动,静态局部变量,寄存器。 全局变量: 静态外部变量,外部变量 动态存储: 自动,寄存器,形参 静态存储: 静态局部,静态外部,外部变量 静态存储区: 静态局部变量,静态外部变量,外部变量、 动态存储区: 自动,形参 寄存区存储区: 寄存器。 28: 声明与定义,声明就是inta,。 声明有两种,一种是inta是分派存储空间,叫定义性声明(简称定义),一种是externa是不分派存储空间,叫引用性声明,因此,声明包括定义,定义是分派存储空间声明。 外部变量定义只能有一次,它位置在所有函数之外,而同一文献中外部变量声明可以有诸多次,它位置可以任意。 系统依照外部变量定义来分派存储空间,对外部变量初始化只能在定义时进行,外部变量声明,其作用是声明该变量是一种已在背面已定义外部变量,仅仅是为了扩展该变量作用范畴。 Static也是一种声明符号,但是必要加上变量类型。 29: define背面不要加; 30: (*a)++不等于*a++,*a++等价于*(a++) 31: 数组名a代表数组首元素地址,是一种指针常量,在运营期间固定不变,因此a是常量,a++无法实现。 但是,实参数组代表一种固定地址,可是形参不是一种固定地址值,而是一种指针变量,可以再被赋值。 27: 二维数组指针中,取值只有,*(a[1]+2) *(*(a+1)+2),a[1][2] 32: chara[];A=”Ilove”错误 char*a;a=”ILOVE”对 即,数组可以再定义时候赋值,不能再赋值语句中赋值。 同样,这里数组名也是不能变化。 但是用指针定义数组就可以。 33: int(*p)(intint)指向函数指针 Int*p(intint)返回值指针函数 int(*p)[4],表达一种指向4个整型数组指针 int*p[4],表达一种具有4个整型指针数组 34: 对于指向函数指针,p++等无意义 35: 指向指针指针。 Char*name={“”,””,””,””}; Char**p; P=name+I; Printf(*p) 36: p1指向a[1],p2指向a[3],p2-p1=2,但是p1+p2无意义。 37: structstudent {intnum; Charc; }stu[3]={{1,’c’},{2,’c’},{3,’c’}} 38: (*p).num等价于p->num 39: 构造体在定义时候,不能studentI,j,k;应当 StructstudentI,j,k; 40: void*malloc(intsize) 41: 共用体所占内存等于最长成员长度。 42: 枚举类型: Enumweekday{sum,mon,tue,wed,thu,fti,stu} EnumweekdayI,j,k; 定义时候自动赋值0-6;printf(“%d”,sum)输出0 也可以强制赋值 Enumweekday{sum=7,mon,tue,wed,thu,fti,stu} 则mon自动为8,tue自动为9 但是一种整数不能在定义外直接赋值枚举, i=7;是错,应当要i=(enumweekday)2,相称于i=tue; 43: typedefstruct{intI,intj,intk}NUM NUMsum;即可,不用struct TypedefintNUM[100];意思是NUM表达一种长度为100整形数组,届时候NUMn,就表达,n为一种长度为100整型数组。 Typedefint*NUM;意思是NUM表达一种整形指针,届时候NUMn,就表达,n为一种整型指针。 NUMa[10]表达a为一种整形指针数组。 Typedefint(*NUM)();意思是NUM表达一种指向函数指针,届时候NUMn,就表达,n为一种指向函数指针。 44: 位与,可以清零,可以取中间某位, 45: 异或: 特定位翻转(即与11111111异或), 保存原值(即与00000000异或), 互换两个值不用暂时变量A=a^b;b=b^a;a=a^b; 46: 右移特殊,如果为无符号,就左边补0,如果有,就正数补0,负数补1; 47: 位段: Structak {unsigneda: 2;(必要是unsigned) Unsignedb: 3; Unsignedc: 4; Into; Unsignedd: 5; Unsigned: 0; Unsignede: 6; IntI;} Structakdata; 一种abc占9位,那个i从第三个字节开始算,d占5位,但是Unsigned: 0;表达下一种位段从下一种单元开始放,e占6位,从下一种单元开始放i;因此data一共占用8个字节 如果赋值data.a=9;就会自动把8低2位给data.a,a里面就是01,再Printf(“%d”,data.a)输出1 48: 输入一种字符串时候,用回车结束,但是这个回车也会被接受,要用一种getchar来收下回车符,例如 Scanf(“%s”,filename) Ch=getchar(); 49: fp=fopen(“a1”,”r”)打开失败则返回NULL fclose(fp);成功返回0,失败返回EOF fputc(ch,fp)把字符ch写到fp中,失败返回EOF ch=fgetc(fp)从指定文献读入一种字符,失败返回EOF feof(fp)判断文献与否结束, fread(buffer,size,count,fp)从buffer数组中读入count个数字进fp文献中,size表达数组中每个元素占字节数。 fwrite(buffer,size,count,fp) fprintf(fp,”%d”,d)把整型变量d输出到fp文献中 fprintf(fp,”%d”,&d),从磁盘文献中读入一种整形 putw(10,fp)把整数10输出到fp中 i=getw(fp) fgets(str,n,fp)从fp文献中读n-1个字符,放入str中 fputs(str,fp)把str放到fp中 rewind(fp),是fp回到文献开头 fseek(fp,100,1)从fp文献当前位置开始,往后移100个字节。 0表达文献开始,2表达文献末尾 i=ftell(fp),i为文献当前对文献开头偏移量、 50: r只读w只写a追加 Rb只读(打开是二进制文本)wb只写ab追加 R+,w+,a+都是读写,但是r+需要该文献已经存在,w+时候会新建一种文献,a+打开后指针在文献末尾 51: find是标记变量。 52: 定义一种指针数组,并分别存入四个字符串首地址。 53: *(a+i)表达a[i]或者数组a第i个元素。 50: a表达二维数组首地址,a[0]表达第0行首地址,a[0][0]表达第0行第0列数组元素。 54: sqrt返回数据类型是double 55: while(K=0)循环体一次也不执行 56: c语言编译系统对宏解决是在源程序中其他正式编译之迈进行。 57: charstr[]=”ABC”,*p=str; P=p+3; Printf(“%d”,strlen(strcpy(p,”ABCD”))); 答案是4; 58: u(u=(a>b)? a: b)>c)? u: c 59: printf(“%d”,y=y/x);输出是运算后y值 60: argc是命令行参数个数。 61: 以0开头都是8进制,例如intx=010,就是x=8; 62: 返回值为char函数,return0是可以 63: strlen中,\t\b\\等都按一种字符算。 64: 构建杨辉三角: voidyh(inta[18][18]) { intj,k; for(j=1;j<18;j++) { a[j][1]=1; a[j][j]=1;; } for(j=3;j<18;j++) { for(k=2;k { a[j][k]=a[j-1][k-1]+a[j-1][k]; } } } 65: 用大括号阔起来,就可以定义局部变量。 Voidmain() { intk=5; { Intk=8; Printf(“%d”,k) } Printf(“%d”,k) } 答案是85 66: staticstructst1 { charname[10]; char*addr; }; staticstructst2 { char*pname; structst1s1; }s2={"England",{"Ann","London"}}; voidmain() { printf("%s,%s\n",++s2.s1.addr,&s2.pname[3]); } S2.pname是一种指针,S2.pname[3]是一种字符,对此字符取地址,&S2.pname[3],以此地址开始输出字符串。 67: while(x) { T=x%10; X=x/10; Y=y*10+t; } Printf(“%d”,y) 实现把x逆序,例如x为3275,输出5723 68: 宏定义之间可以互相调用。 69: C程序由变量和函数构成。 67: 5*7/9和5/9*7是不同样 70: c=getchar(),涉及到文献时候,c最佳用int定义,由于EOF话,一种字节不够用。 71: 多路鉴定 72: 值传递好处,参数看做是局部变量,由于局部变量便于初始化,因而,额外使用变量更少。 73: 不同枚举重名字必要不相似,同一枚举重不同名字可以具备相似值。 74: 枚举相对于define语句来说,优势在于常量值可以自动生成,此外,可以用符号形式打印出枚举变量值。 75: 变量用const限定符,则无法修改。 76: float不会自动转为double 77: sqrt参数和返回值都是double。 78: 算术移位: 用符号位填充,逻辑移位: 用0填充 79: a? b: c此条件表达式也遵循类型转换,例如 Floatf=5; Intn=5; (n>0)? f: n; 答案无论是n>0还是n<=0,都是float类型5; 80: 优先级: (1): 括号取值运算符 (2): 一元运算符(右结合) (3)算术运算符 (4)移位 (5)大不大于 (6)等于不等于 (7)位运算: 与>异或>或 (8)逻辑运算: 与>或 (9)问号(右结合) (10)+=,|=。 。 。 其中算术运算高于位预算(右结合) (12)逗号 81: {}括起来叫程序块,其后不需要分号。 82: else默认和近来一种if匹配,但是可以用{}打乱匹配。 If() { if() } Else 83: 字符串转整数 N=0; While(s[i]! =’\0’) { N=10*n+(s[i]-‘0’); } Returnn; 84: 把数组n转化为字符串, S[i++]=n%10+’0’; 85: dowhile循环体至少被执行一次。 86: goto语句用于深度循环跳出。 87: 函数与主函数在同一种源文献,若函数声明与背面定义返回值不一类型,就会检测出错误,但是如果不在同一种源文献,就不会检测错误。 88: 外部变量好处就是在函数之间提供一种代替函数参数与返回值数据互换,但是这样容易破坏函数之间独立性。 如果两个函数必要共享数据但是互不调用对方,这种状况下最佳用外部变量。 例如栈和队列。 89: 计算器时候,/和-左右字符串必要加以区别。 90: 计算器中,输入一种数字,例如123.456,但是输入2时候,2想懂得下一种是数字还是操作符,如果是数字,则把1和2尚有3都放入字符串中,如果是操作符,就把s[i]中1,2变成数字赋值,那么这就需要一种预输入操作,判断下一种输入是数字还是操作符,用缓冲区思想可以解决。 取数规则: 如果缓冲区中有货,就从缓冲区中取,如果没,就调用输入函数。 如果预读入是一种字符,就放进缓冲区。 读入123.4566,看到下一种读入是+号,就把+号放进缓冲区,把123.456给化成数字然后复制,然后下一次取值就从缓冲区中取出+号。 91: .c文献里面是完整源文献,.h是把诸各种.c文献共享某些集中在一起。 #undefgetchar取消getchar宏定义、 92: 条件编译: 普通来说源文献中所有行都参加编译,但是但愿一某些代码在满足条件时候再编译,于是有了条件编译 #ifdef #else #endif 采用条件编译,可以减少被编译语句,减少目的程序长度。 93: Char*psizeof(p)=4; Chara[100]sizeof(a)=400; Chars1[]={'A','B','C','D','E','F'};sizeof(s1)=6 chars2[]="ABCDEF";sizeof(s2)=7;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 考研 复试 语言 笔记 样本