




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言重要的知识点复习资料C语言重要的知识点复习资料②直接定义结构体类型:struct{数据类型成员名1;数据类型成员名2;数据类型成员名n;}结构体变量名表共用体(1)引用:不是pringf("%d",a)而是pringf("%d",a.i)六,概念1.程序结构是三种:依次结构,循环结构(三个循环结构),选择结构(if和switch)2.读程序都要从main()入口,然后从最上面依次往下读(遇到循环做循环,遇到选择做选择)。3.计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.4.bit是位是指为0或者1。byte是指字节,一个字节=八个位.5.编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。6.每个C语言程序中main函数是有且只有一个。7.在函数中不可以再定义函数。8.算法的是肯定要有输出的,其他可以没有输入。9.break可用于循环结构和switch语句。10.逗号运算符的级别最低。11.字符数据的合法形式:'1'是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。'0'的ASCII数值表示为48,'a'的ASCII数值是97,'A'的ASCII数值是65。12.强制类型转换:肯定是(int)a不是int(a),留意类型上肯定有括号的。留意(int)(a+b)和(int)a+b的区分。前是把a+b转型,后是把a转型再加b。取整丢小数的状况:int14.print函数的格式考查:%d对应整型;%c对应字符;%f对应单精度;%ld对应longint;%lf对应double。15.chara=getchar()是没有参数的,从键盘得到你输入的一个字符给变量a。putchar(‘y’)把字符y输出到屏幕中。16.两值互换:t=x;x=y;y=t。17.要用(0<x)&&(x<10)表示比0大比10小。18条件表达式:表达式1?表达式2:表达式3留意:当非0时候是表达式2的数值,当为0是就是表达式2的数值。口诀:真前假后。19.肯定要留意有break和没有break的差别,没有break时候,只要有一个case匹配了,剩下的都要执行,有break则是直接跳出了swiche语句。20.switch只可以和break一起用,不可以和continue用。21.break:是打破的意思,(破了整个循环)所以看见break就退出真个一层循环。continue:是接着的意思,(接着循环运算),但是要结束本次循环,就是循环体内剩下的语句不再执行,跳到循环开始,然后推断循环条件,进行新一轮的循环。!=号的级别高于=号23.实参和形参之间传数值,和传地址的差别。传数值的话,形参的变化不会改变实参的变化。传地址的话,形参的变化就会有可能改变实参的变化24.函数声明肯定要有:函数名,函数返回类型,函数参数类型。不肯定要有:形参的名称。25.对于a[10],(1)a表示数组名,是第一个元素的地址,也就是元素a[10]的地址。(2)a是地址常量,所以只要出现a++,或者是a=a+2赋值的都是错误的。26.a[2]变成*(a+2)a[2][3]变成*(a+2)[3]再可以变成*(*(a+2)+3)27两种重要的数组长度:.chara[]={‘a’,’b’,’c’};数组长度为3,字符串长度不定。sizeof(a)为3。chara[5]={‘a’,’b’,’c’}数组长度为5,字符串长度3。sizeof(a)为5。28.scanf和putchar的数据假如输入的是goodgoodstudy!则scanf(“%s”,a);只会接收good.考点:不可以接收空格。getchar(a);会接收goodgoodstudy!考点:可以接收空格。结构化程序设计:自顶向下;逐步细化;模块化设计;结构化编码。自增,自减运算符的结合方向是:自右至左常见的程序改错1.递增(减)运算符的表达式eg:i=3,a=(++i)+(++i)+(++i);要考虑运算符的优先级,很明显“++”的优先级高于“+”。输入语句中缺取址符&eg:scanf(“%d”,x);→scanf(“%d”,&x;chara[10];scanf(“%s”,&a);→chara[10];scanf(“%s”,a);a在这里既表示数组名字,又表示数组首地址,它本身已经代表了地址,所以就不用再加取址符了。在运用输入语句的时候要细致视察,什么时候该加取地址符号,什么时候不该加,肯定要搞清晰。3.逻辑运算符&&和位运算符&相混淆eg:if(x&y)→if(x&&y)误用按位“及”运算符‘&’替代了“及”运算符‘&&’位运算符是C语言独特的一种运算符,其中“&”表示对两个操作数按二进制位进行“及”运算,规则是0&0=0,0&1=0,1&0=0,1&1=1。如6&5=4,其中6变为00000110,5变为00000101,按位“及”运算的结果为100即4。4.误把赋值=当恒等==eg:if(a=0)→if(a==0)5.条件语句和循环条件语句后误加分号eg:if(x>y);x=y;→if(x>y)x=y;这样相当于满意条件执行空语句。下面的x=y语句将被无条件执行。一般状况下if()条件后不须要加分号。eg:for(i=1;i<10;i++);{````}→for(i=1;i<10;i++){````}上述for语句相当于满意条件执行空语句,真正的循环语句则没有被执行。一般状况下for()循环条件后不须要加分号。6.循环语句中改变了循环变量的值eg:求水仙花数main(){inti,a,b,c;for(i=100;i<1000;i++){a=i%10;i=i/10;b=i%10;i=i/10;c=i%10;/*i的值被改变*/if(a*a*a+b*b*b+c*c*c==i)printf(“%d”,i);在循环语句里,循环变量i每次进入循环后都被改变了,导致了i恒久都满意循环条件,所以就死循环了。为了避开此类错误,在编程时应尽量避开在循环语句中改变循环变量。7.作为输出结果的变量没有赋初值eg:求数组中的最大值能最大值的下标main(){inta[10]={8,2,3,4,5,6,3,7},max=a[10],m,i;for(i=0;i<10;i++)if(a[i]>max){max=a[i];m=i;}printf(“%d%d”,max,m);}缘由就在下标变量m没有赋初值,系统随机赋了初值.8.初值赋了,但是赋的位置不对eg:求100以内的完数s=0;for(i=1;i<=100;i++){for(j=1;j<=i/2;j++)if(i%j==0)s+=j;if(s==i)printf(“%d”,i);}s=0语句放错了位置,应当放在外层循环里面,也就是每推断一个数都应当从0开始累加。eg:求1!+2!+……+100!main(){inti,j,s=0,t=1;for(i=1;i<=100;i++){for(j=1;j<=i;j++)t=t*j;s+=t;}printf(“%d”,s);}t=1应当放在第三行,t=1这个赋值语句,它的位置应当在外层循环的里面,而不是在外面。9.数组和整型或者实型变量不能重名eg:main(){inta[10],a;…}数组名为a,其他变量的名字就不能再用a。10.数组输出时的错误eg:现在想输出数组a中的全部数值。inta[10]={1,2,3,4,5,6},i;for(i=0;i<10;i++)printf(“%d”,a[10]);程序只输出其中的一个元素。要理解数组下标和循环变量的关系。11.字符串不加结束标记eg:chara[3]=“abc”,b[3]=“def”;strcat(a,b);printf(“%s”,a);字符串都有结束标记‘\0’,所以在定义数组的时候应当是字符串的实际长度加112.字符串复制,比较等出现的错误eg:chara[4]=“abc”,b[4]=“def”;a=b;正确的写法则应当是利用函数strcpy(a,b)来实现此功能。eg:chara[4]=“abc”,b[4]=“def”;if(a>b){}→if(strcmp(a,b)>0){}比较字符串a和字符串b的大小关键是要记住字符数组名字代表的是字符数组的地址,是常量,不能直接进行复制等操作。13.函数调用时参数传递出错eg:voidsa,intb){intt;t=a;a=b;b=t;}→voids*a,int*b){intt;t=*a;*a=*b;*b=t;}程序是一个交换两个变量值的函数,但事实上这个函数完不成这个功能,因为本函数传递的是数值,函数调用时传递数值只是对实际参数值的一个拷贝,并不能改变实际参数的值,要完成此功能必需传入地址。14.遗忘加头文件eg:求1-1/3+1/5-1/7…,求此序列的和,直到最终一项的肯定值小于1e-6为止.main(){doubles=0,x=1;longk=1;intflag=1;while(fabs(x)>1e-6){s+=x;k+=2;flag=-flag;x=flag/k;}}在程序的前面加上一个头文件#include“math.h”,假如不加这个头文件的话,系统将不相识fabs这个函数。15.函数定义中未声明形参类型调用函数,系统默认把其处理为整型参数,若没有声明函数的类型,返回值也为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老顾聘用合同范本
- 先付款后供货合同范本
- 保险投资合同范本
- 加工生产劳务合同范本
- 京东物流折扣合同范本
- 上门电缆转让合同范例
- epc装饰工程合同范本
- 代人取药兼职合同范本
- 不赊销合同范本模板
- 化肥销售协议合同范本
- 数字电子技术(武汉科技大学)知到智慧树章节测试课后答案2024年秋武汉科技大学
- 综合应用能力事业单位考试(综合管理类A类)试题及解答参考
- 阿尔兹海默病的家庭护理
- bim技术课件教学课件
- 腹水形成的原因及治疗
- 单晶炉车间安全培训
- 高中地理必修第一册期末试卷及答案-中图版-2024-2025学年
- 护理核心制度测试题+参考答案
- 机械制造技术基础(课程课件完整版)
- 《2023版CSCO卵巢癌诊疗指南》解读课件
- 【医院药品管理系统探析与设计(论文)10000字】
评论
0/150
提交评论