c语言复习(大一学生整理) 复习提纲 ★考试题型:单选、填空、改错、编程。(考试系统int按2个字节计算) 一、基本概念: 合法的标识符C语言程序的三种基本结构:顺序、选择、循环;
C语言源程序的基本单位是函数;一个C程序的执行是从main函数开始,到main函数结束;数组的基本概念 函数的定义不可以嵌套,但函数的调用可以嵌套;函数的形参何时被分配内存、何时释放
调用函数时,实参是h简单变量,与形参之间的数据是单向值传递;实参传向形参。实参和与其对应的形参各占用独立的存储单。实参可以为常量、变量或表达式,即可以为任意类型,形参应与对应的实参类型一致,形参可以是变量,或缺省常量(即系统默认),不可以是表达式当数组名作为实参传递给函数形参时,是地址传递(数组的首地址),实参数组和形参数组共享相同地址的内存,形参数组值的变化会影响实参数组值的变化;函数调用的方式有函数调用作为语句、函数表达式或函数参数三种;
函数返回值的类型是由定义该函数时所指定的函数类型所决定的;函数中return语句的概念:
1.return 语句可以有多个,可以出现在函数体的任意位置,但是每次调用函数只能有一个 return 语句被执行,所以只有一个返回值return 语句是提前结束函数的唯一办法。 2.return 后面可以跟一份数据,表示将这份数据返回到函数外面;return 后面也可以不跟任何数据,表示什么也不返回,仅仅用来结束函数调用函数一定要注意实参顺序要和形参的顺序一致定义一个结构体变量,系统分配给它的内存是各成员所需内存量的总和 二、 输入、输出格式 1.合法的整型变量的表示 整型:%d,%o,%x,㪽型加l如%ld)
十六进制的表示
整型变量的表示
实型变量的表示
2.合法的浮点数的表示 实型:%f、%lf(double型)、%e
3.合法的字符常量的表示 字符:%c 转义字符(字符常量):
4.合法的字符串常量的表示: 字符串:%s
printf
scanf 5.运算符的优先级:
条件运算符
逻辑运算符
关系运算符 6.字符串的输入输出举例: char c1,s1[20],s2[10][20] (1)一维字符串数组输入和输出scanf(“%s”,s1);或 gets(s1);注意scanf和gets的区别
(2)二维字符串数组输入和输出: (3)一个字符的输入、输出 (4)对简单变量(包括数组素)的输入应加地址符。例: 三、数组的定义和初始化 一维数组和二维数组的定义、初始化 1、数组不能动态定义: 2. int a[]={1,2,3,4}; 在对全部数组素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度 4、字符串数组的定义和使用,’\0’的重要性 5、 字符串函数:strcat()、strcmp()、strcpy()、strlen()、puts()、gets()、 putchar()、getchat()—–使用之前,必须有#include<string.h> strcat():字符串连接函数,strcpy():字符串复制函数,strcmp():字符串比较函数,strlen():检测字符串长度的大小,sizeof计算字节的长度 字符串比较要用strcmp函数,不能直接用关系运算符比较。一个字符(char c;)要用关系运算符比较。 四、条件语句 if语句的三种格式、switch的结构、break和switch的关系 switch语句中case后只能是常量或常量表达式。 switch中注意每个case里有否break,如果没有就继续往下做。 注意:if(a=b) 是赋值,不是==、if-else之间的匹配 x>y>z执行顺序 、a&&b&&c,只要a为假就停止运算,b和c不变 a||b&&c 只要a为真就停止运算,b和c不变绿皮书P18:46, P21: 7、20、21、28、34、45、48、89、93、95 五、循环、数组 for、while、do熟练掌握,清楚终止条件、循环次数等利用循环变量的值可以判断是循环自然结束还是break跳出循环的; break、continue的含义。 字符串数组的初始化、输入、输出 绿皮书P49:11、13、14、16、17、18、29、34、36、43、44、45、52、56、58、79、84、85绿皮书P75:2、11、13、18、19、28、29、30、31、32、33、34、36、37、43、64、88、89书上作业:P137: 3、4、5、9;P165:2、5、6 六、函数 1、定义、声明、调用格式(注意区别) 函数类型缺省为int 2、值传递、地址传递的概念;函数调用参数的次序 【注意】 返回变量y的类型一定要和函数fun的类型一致 调用函数的格式: 3、形参和实参的关系,调用函数时系统才为形参分配地址 4、局部变量和全局变量
局部变量:主函数中定义的变量也只在主函数中有效。主函数也不能使用其他函数中定义的变量不同函数中可以使用同名的变量,它们代表不同的对象,互不干扰形式参数也是局部变量。只在定义它的函数中有效。其他函数中不能直接引用形参 全局变量:
5、return只能返回一个值,数组名和指针作为函数参数时,隐含返回多个值 6、要会编程:主函数输入数据,子函数完成数据处理并返回一个值(return 变量,这里返回变量的类型一定要和函数的类型一致); 或数组名为参数,隐含返回多个值(没有显式的return语句),主函数输出结果。绿皮书P109:2、9、10、12、19、50、54、55、58、59书上作业:P216:3、4、9、11 七、指针 1、声明指针变量和使用指针、指针的初始化 int a=10,*p=&a;*p=a;区别其中*p=&a;*p=a;这两句的区别
2、指针运算 *++p, ++(*p) , (*p)++, *p++, *++p等运算 数组名实际上是指针常量:不可以对其进行赋值
3、字符串指针的初始化(认真看、区分对错) 4、下标法与指针法 指针p和一维数组a关系: Int a[10], *p; p=a; ( 或p=&a[0] ) 下标法:素a[i];地址&a[i] 指针法: 地址:p+i 与 a+i ; 素:*(p+i) 与 *(a+i)、p[i] , (p[i]等价于*(p+i) ) 注意:p是变量,可以p++、p–;a是数组名,是常量,不能做a++ 可以表达式出现:a+i,&a[i]+1等。 5、函数参数是指针(一维数组的指针)要会编程 书P224-8.3、P233-8.7、P235一页的概念、P241-8.9、P242-243:8.10 6、函数调用注意实参和形参的写法 例1:void f1(int ary[], int n) //函数定义 {……} 调用形式:f1(p, m) ; 其中:p是指针,调用之前已经初始化指向一个整型数组的地址,m是int型实参,已经有值;这个函数的形参 是数组,但形参不管是数组还是指针,系统一律按指针处理的;即形参ary可以看成是int *ary,所以在f1函数中允许出现ary++之类的语句,但除形参外,不允许出现对数组名的++或– (参考书P238的最上面一段小程序) 或: f1(s, m) ; //调用 其中:s是一个整型数组名,m是int型实参,已经有值; 例2:void f2(int *t , int n) {……} 调用形式:f2(p, m) ; 其中:p是指针,调用之前已经初始化指向一个整型数组的地址,或整型变量的地址,m是int型实参,已经有值; 或: f1(&s, m) ; //调用 其中:s是一个整型变量的地址,m是int型实参,已经有值; 这个调用形式一般是要将函数中计算的结果存到*t中,函数结束,变量s的地址中就有返回的结果值了(因为调用时是将s的地址传给指针t的)。 注意: 指针一定要初始化才能使用。 指针只能存放变量的地址,不能直接赋值 指针的类型与它所指向的变量类型必须一致PPT(指针章节的例题)绿皮书P154:3、4、7、8、9、10、12、13、15、41、54、57、68、79、88、97、98、101、136、140、P214:187 八、结构体 结构体的定义和使用、结构数组的使用 结构变量的输入和输出、结构变量作为函数参数的传递。 大作业结构版中得结构数组的排序、比较、输入输出、作为函数参数的传递要熟悉。阅读程序:书P298-9.2、P300-9.3、P301-9.4、P306-9.7绿皮书:P218:10、12、14、16、17、20、22、27、47大作业:对结构数组的学号、姓名、成绩输入和输出要会;结构数组按姓名或学号排序要会。 例如:输入 九、编程(包括改错、填空) %、/ 的用法,可以对一个整数分解(会分解一个整数、也要会组装一个数)阶乘、阶乘累加:1!+2!+….n!两个非负整数的最大公因子(欧几里得算法)和最小公倍数;删除字符串中指定字符,余下的字符组成新串;删除字符串中数字或字母打印出N以内能被?除尽余?,或被?余?的所有数、之和、之积计算字符串的长度(不用strlen函数,指针用法);字符串拷贝、字符串连接(不用strcpy()和strcat(),指针用法);类似1+1/2+1/3+1/4…; x/1!+x2/2!+x3/3!+…; 1-1/2!+1/3!-…1/n!、1!+2!+3!+…+n!等,注意整除结果为0的现象(1/n—> 1.0/n )。注意循环结束的判别条件:例如绝对值大于多少精度就继续循环,否则结束。while(fabs(y)>1e-5) 或while(fabs(y)>0.00001),不满足这个条件就跳出循环素数的判断;输出控制:例如每行输出几个,if( i %10==0) printf(“\n”); i是循环增量,输出10个数据后回车换行数组排序、将数组中的素逆序存放(不能借助另一个数组);看清楚降序和升序、逆序和正序的意思(P238-239例8.8、P242-243例8.10)统计字符串中的大小写字母、数字、空格、其他字符个数;(作业做过)求学生成绩的平均分、最高分、最低分、大于等于平均分的人数(要会用函数实现,参数用指针,例如平均分要求函数返回.(给过例子);求一组数据中的最大值(最小值)以及行下标和列下标,要会用指针比较大小值(一维数组和指针的关系,和上面差不多); 杨辉三角;常用的头部文件:<stdio.h>、<math.h>、<string.h>求出最小素的等分法 十、其他 &、* (指针运算符) ++、– %、/、*、+、- !、&&、|| ==、!=、<=、>= ? : 常用的转义字符(P40表3.1) x的n次方不能直接写成 x^n。 整型常量八进制(0打头)、十六进制(0x打头) ‘0’~‘9’的ASCII码值48~57;‘a’的值97,‘A’的值65。 十一、改错、填空注意: 语句后面的分号是否缺失scanf输入的数值型变量和字符变量缺&吗?字符串输入只对应数组名,数组名前面不加& 循环初始值、结束的条件写的正确否、循环终止值超界没有(<还是<=; >还是>=);if语句中的判别条件有问题、比较运算符和题意不相符等、逻辑和关系运算符用错了,&&、||的正确运用比较大小运算符是否写反了(应该大>,写成<、应该==,写成= 等等)变量没有初始化0或1、一些类加、累乘变量初始化了吗变量类型说明错了或变量说明漏了;少分号;数组定义不能是动态定义,例如int a[N]; N是否在最前面定义了符号常量?循环中i<N还是i<=N;scanf输入变量时少了&;(字符串特别)函数返回值有问题、函数的返回值是否和函数类型一致调用函数的名子和定义函数的名字不匹配(有一个函数名是错的)数组定义的大小和题目不符(例如20个素,但只定义了10个);数组素下标引用有问题;输出/输出的变量的格式和变量类型不符(如int x,输出用了%f等);float x; y; 这情况应该改为:float x,y ; 结构变量成员的输入输出和引用 附录: 1、析取数字: 或: 或:如果不知道x是几位数,可将x每位截出来存放在数组里 i中的值是a数组的素个数,a[0]是个位数、a[1]是十位数、a[2]是百位数…,一直到a[i-1]。后面按题意可以组装成需要的数。 2、判断整数(奇偶) 3、素数x的判断 4、xn和n ! 5、1!+2!+3!+…..+n!
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/35676.html