欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    大学C语言复习ppt.ppt

    • 资源ID:3488660       资源大小:620.05KB        全文页数:119页
    • 资源格式: PPT        下载积分:10
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要10
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    大学C语言复习ppt.ppt

    复习,遵C语言考试大纲,1,一 基本概念, 字符集、标识符、关键字 各种常量的表示方法 变量的说明 其它概念,2,一 基本概念, 字符集、标识符、关键字 标识符由字母、数字或下划线组成,第一个字符必须是字母或下划线。 可用作C语言标识符的是: A. print _maf mx_2d aMb6 B. Iam scanf mx_ AMB C. sign 2mf a.f A&B D. if ty_pe x1# 5XY,3,一 基本概念,区分关键字、函数名、预编译命令。 均是C语言关键字的一组是: A. auto enum include B. switch typedef sizeof C. signed union scanf D. if struct type,4,一 基本概念, 各种常量的表示方法 八进制整型常量(标志为0)中不能出现8以上的数字。 小数形式的实型常量不可缺的部分是小数点。 指数形式的实型常量,e或E后面必须是整数,e或E前面必须有数字。 实型常量只能是十进制。 下面能作为C的常量的是: A. 0xA5 B. 5e2.5 C. .E2 D. 028,5,一 基本概念,字符型常量:8,字符串常量:“8” 转义字符可以用八进制ddd或十六进制xdd,不是十进制。 将字符g赋给字符变量c,正确的表达式是: A. c=147 B. c=“147” C. c=147 D. c=147 下列转义字符错误的是: A. 000 B. 0014 C. x111 D. 2 下列转义字符错误的是: A. B. C. 81 D. 0,可表达到十进制的255,即xFF(但作为ASCII字符只到十进制的127,即x7F),转义字符是一个字符,6,一 基本概念,符号常量在编译时替换。 #define PR printf #define NL “n” #define D “%d” #define D1 DNL 语句 PR(D1,a); 经预处理后展开为: A) printf(%dn,a); B) printf(“%dn”,a); C) printf(“%d”“n”,a); D) 原语句错误,7,一 基本概念, 其它概念 C语言区分大小写。 C程序总是从main函数开始执行,与main函数的位置无关main函数可以在任何位置上。 一行内可以写几个语句,一个语句可以分写在多行上一个分号一个语句。 C语言的最小单位 基本单位 编译单位,语句,函数,文件,8,二 基本运算符与I/O操作, 数据类型:编码形式、占用内存字节、表示范围 全部运算符:运算规则、优先级、结合性 位运算只作最基本的要求(,&,|) 能够进行简单的表达式计算 基本的I/O函数的使用方法和功能:printf、scanf、getchar、putchar,9,二 基本运算符与I/O操作, 数据类型:编码形式、占用内存字节、表示范围 整型变量的长度由计算机硬件决定。 记住32767(215-1)、65535、38、308。 负数的补码计算(-8的补码:8的原码取反加1) 已知long i=32768,执行语句printf(“%d”,i);后屏幕显示: A. -1 B. -32768 C. 1 D. 32768,实型不精确,整型爱溢出,10,二 基本运算符与I/O操作,字符型以ASCII码形式存储, 字符变数字:int a = 8 - 0; 数字变字符:char c = 8 + 0; 判断是否是数字: 0=m=9 0=m && m=9 最好能记住48、65、97,11,二 基本运算符与I/O操作, 全部运算符:运算规则、优先级、结合性 表达式的值和类型 已知:char a; int b; float c; double d; 执行语句c=a+b+c+d;后,变量c的数据类型是: A. int B. char C. float D. double 表达式c=a+b+c+d的数据类型是: A. int B. char C. float D. double 表达式a+b+c+d结果的数据类型是: A. int B. char C. float D. double,12,二 基本运算符与I/O操作,接受赋值的变量类型决定了运算结果的存储类型 一定注意赋值表达式的值 if (x=1)逻辑值 if (x=1)x的值 已知:int a, b;对于下列if语句: if (a=b) printf (“A is equal to Bn“); 在编译时,C编译程序 不能指出该语句有语法错误! sizeof()是int型表达式!,13,二 基本运算符与I/O操作,单目运算符的优先级通常高于双目和三目运算符。 单目运算符通常是右结合,双目运算符通常是左结合(赋值运算符除外)。 求余运算的对象必须是整型。 int i; float f; 正确的语句是: A. (int f)%i B. int (f)%i C. int(f%i) D. (int)f%i,14,两个整型做除法/ 结果截取为整型。 华氏和摄氏的关系: ,已知float C,F;由华氏求摄氏的正确赋值表达式是: A. C=5/9(F-32) B. C=5*(F-32)/9 C. C=5/9*(F-32) D. 三个表达式都不正确 计算 s=1.0 for(k=1;k=n;k+) s+= ; printf(“%fn”,s);,答案:1.0/(k*(k+1) 1/(float)(k*(k+1),15,二 基本运算符与I/O操作,i+与+i i+替换为i进行计算,之后再自加 +与- -只能用于变量,不能用于常量和表达式 操作对象只能是整型、字符型和指针类型 int i=5; i+=+i; i的值是: A. 10 B. 11 C. 12 D. A,B,C答案都不对 int i=5; i+=i+; i的值是: A. 10 B. 11 C. 12 D. A,B,C答案都不对 float x=1,y; 则y=+x*+x的结果为: A. y=9 B. y=6 C. y=1 D. 表达式错误,联想赋值运算符=,16,二 基本运算符与I/O操作,赋值表达式从右向左: int a=b=c=1; int a,b,c; a=b=c=1;,a*=b+5,a=a*b+5,a=a*(b+5),先计算右边表达式的值;再将计算结果赋给左边的变量。,17,运算结果是“逻辑值”的运算符逻辑运算符、关系运算符、条件运算中的条件部分。 C语言并没有逻辑型,而是用1标识逻辑真,0标识逻辑假不是TRUE和FALSE。 设 a 为整型变量,其值未知,下列表达式中有确定值的是: A. 10 10 && a = 15 ),二 基本运算符与I/O操作,18,二 基本运算符与I/O操作,if( i=0 ) 和 if( !i )等价 if( i ) i非0则成立,即i和i!=0等价 char c=A; int i = !c; i 的值为0 与条件表达式“(n)?(c+):(c-)”中的表达式(n)等价的表达式是: A. (n=0) B. (n=1) C. (n!=0) D. (n!=1),19,二 基本运算符与I/O操作,优先级: 取非(!) 算术运算符(+,-,*,/,%) 关系运算符(,=) 逻辑运算符(&&高于|) 条件运算符(?:) 赋值运算符(=) 逗号表达式(,),从高到低,(a+b) (c+d) && (da) | !(cb) && (ab),只有(cb)的括号不可省略,20,二 基本运算符与I/O操作,已知int a=4,b=5,c;则执行表达式c=a=ab后变量a的值: A. 0 B. 1 C. 4 D. 5 int x;逗号表达式“(x=4*5, x*5),x+25”的结果为 A. 20 B. 100 C. 45 D. 表达式不合法 变量x的值是: A. 20 B. 100 C. 45 D. 125,注意:x*5并不是x=x*5,并不改变x的值 联想指针 p+和p+1,21,二 基本运算符与I/O操作,注意,赋值运算符的优先级很低! char ch; 执行while ( ch=getchar() !=n ); 时输入abcde后,变量ch的值: A. e B. n C. 0 D. NULL int a=1, b=2, m=2, n=2; (m=ab) 则n的值是: A. 1 B. 2 C. 3 D. 4,22,二 基本运算符与I/O操作,得到结论就不再计算:逻辑运算 只计算一部分:条件运算 int x=1,y;执行下列语句后x的值是: y=+x5 A. 1 B. 2 C. 3 D. 4 注意:xy? +x:xz? +x:y+ 是从左向右计算。,23,逗号,逗号(,)运算常见的三种用途是: 在变量说明表中用来分隔变量,起分隔符的作用,如: int i, j, k, m3, *p; 在函数的参数表中分隔参数,从右向左运算。 printf (“%d,%d“, n, n+); 逗号表达式 表达式n1,表达式n2; 用逗号分隔开的表达式从左到右进行计算,结果的类型和值是最右边表达式的类型和值。,见着( )先想函数,再想逗号表达式,24,二 基本运算符与I/O操作, 位运算只作最基本的要求(,&,|) 按位异或的含义。 左移位或右移位相当于整数乘以或除以2的幂,左移位有溢出的可能。,25,二 基本运算符与I/O操作, 能够进行简单的表达式计算 隐式类型转换: char型与int型:char转int; int型与float型:都转为double型; 实型运算时都转换为double型; 下面这句说明是否正确: 字符型与单精度实型进行运算时都转换为双精度实型。,26,二 基本运算符与I/O操作,int main() double a; float b; int c; c=b=a=40/3; printf(“%d%f%fn”,c,b,a); ,输出:13, 13.000000, 13.000000,27,二 基本运算符与I/O操作,强制类型转换 对求余运算的操作数的转换(int)f%i; void *malloc(size):动态存储函数,分配size字节的内存。 若要使指针变量p指向一个存储int变量的存储单元,则: int *p; p= malloc(sizeof(int); 注意:无论隐式还是强制类型转换,变量本身的数据类型是不变的。,(int *),28,二 基本运算符与I/O操作, 基本的I/O函数的使用方法和功能:printf、scanf、getchar、putchar scanf、printf设置的格式要与变量的类型一致。 输入、输出long int要用%ld。 输入double要用%lf或%le。 若需显示百分号,格式为:%,scanf:格式与变量类型必须对应 printf:%d %c可以互换,double可以用%f输出,记住,29,二 基本运算符与I/O操作,30,二 基本运算符与I/O操作,下列函数调用不正确的是: A. putchar(putchar(ch) B. str=gets(s) C. fclose(fp) D. fopen(fp) 输入3,执行语句 printf(“2:%d,”,printf(“1:%d,”,scanf(“%d”,以后的输出结果是: A. 2:1,1:1, B. 1:1,2:1, C. 2:4,1:1, D. 1:1,2:4,31,二 基本运算符与I/O操作,如果实际数据所占字符位大于指定的域宽,按实际输出,且小数会按指定的精度来。 printf(“%9.5fn”,12345.678); 与printf不同,scanf不能规定精度,变量前要有取地址符,12345.67800,32,二 基本运算符与I/O操作,一定要区分开浮点数的有效位、能表达的最小数、以实数格式输出(%f输出六位小数的实数)。 对scanf来说,1) 回车,Tab,空格 2) 宽度结束 3) 非法输入 是输入数据的分隔符。 输入:2 3 或 2 3 可以直接scanf(“%d%d”,用scanf %d或%s之后再用%c是很危险的!,33,二 基本运算符与I/O操作,除上述三种天然分隔符以外,scanf输入形式必须要和“ ”内的一模一样 输入:2,3 要用scanf(“%d,%d”, 使用语句scanf(”x=%f,y=%f”,&x,&y);要输入变量x、y的值(代表空格),正确的输入是: A. 1.25,2.4 B. 1.252.4 C. x=1.25,y=2.4 D. x=1.25y=2.4,34,三 基本语句, 掌握正确的语法形式、控制流程、常见书写形式 if 和 switch 语句 循环语句(for、while、do-while) break 和 continue 语句 goto语句不要求 语句之间的嵌套关系和规定 最基本的三重循环程序的编写方法,35,三 基本语句, 掌握正确的语法形式、控制流程、常见书写形式 语句:以“;”为标志,一个复合语句是一条语句。 if () ; 这里的;是一个空语句,if语句结束; for(;) ; 同样,36,三 基本语句, if 和 switch 语句 if语句与条件语句的等价,if (y0) x=-y; else x=y;,(y0)?x=-y:x=y;,等价,等价,x=(y0)?-y:y;,37,三 基本语句,if与else、else if的匹配请缩进! switch() case:语句形式是重点 括号内可以是任何表达式,但“取整”; case后的每个常量表达式必须是整型、字符型或枚举型,并且各不相同; default和case的相对位置是任意的; 直到break才跳出; 每个case之后的语句可多于一个,不必加 ; default子句可以省略。,38,三 基本语句,int c; while(c=getchar() != n) switch(c-2) case 0: ; case 1: putchar(c+4); case 2: putchar(c+4);break; case 3: putchar(c+3); default: putchar(c+2); ,输入:2473 ,输出:668977,39,三 基本语句, 循环语句(for、while、do-while) 准确掌握三个语句的执行流程。,i=1; while (i=10) n*=i; i+; ,for (i=1;i=10;i+) n*=i;,只要条件不符合,程序退出也就是说,最后一步,循环体可能不执行,但条件要多判断一次。 for的第三个语句(i+)永远都是在右括号之前执行,40,int i=1; 执行语句while(i+4);后变量i的值: A. 3 B. 4 C. 5 D. 6 在不使用goto、break、return等转移语句的情况下,以下结论正确的是: A. 对do_while语句,循环条件判断次数可能小于循环体执行次数 B. 对while和for语句,循环条件判断次数可能等于循环体执行次数 C. 无论是while、for还是do_while语句,循环条件判断次数都不可能小于循环体执行次数 D. 循环条件判断次数和循环体执行次数之间无规律可寻,41,三 基本语句,求取满足式 12+22+32+ +n2 1000的n,正确的语句是: A. for(i=1,s=0;(s=s+i*i)=1000;n=i+) ; B. for(i=1,s=0;(s=s+i*i)=1000;n=+i) ; C. for(i=1,s=0;(s=s+i*+i)=1000;n=i) ; D. for(i=1,s=0;(s=s+i*i+)=1000;n=i) ;,42,三 基本语句, break 和 continue 语句 break仅能退出一层(当前层)循环; continue结束本次循环,如果是for(,i+)本次循环的i+还是要做的。 break和continue都可以通过改变程序结构而省略。,43,三 基本语句, 最基本的三重循环程序的编写方法 编程题中可能出到的穷举和图形 请注意网络教室中的编程作业和第六章课件循环应用部分。,44,三 基本语句,求解爱因斯坦数学题。有一条长阶梯,若每步跨2阶,则最后剩余1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶,若每步跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶? 全排有30名战士,会骑马的20人,会摔跤的22人,会拳击的18人,会骑马和摔跤的14人,会摔跤和拳击的12人,会拳击和骑马的有10,编写程序,输出三项全能的人。,45,四 数组, 数组的概念,数组说明,数组元素起始下标,如何引用数组元素,数组名的意义 多维数组元素的标识方法,存放方式。多维数组只要求到二维 数组与函数的关系:在函数之间传递数组中的一个元素,在函数之间传递整个数组 基本算法:求最大(小)值,排序(冒泡、选择),矩阵乘法,矩阵转置,46,四 数组 (cont.),字符串重点 字符串:基本概念,串结束标记0 串输入/输出函数:gets,puts 串的基本操作(非递归/递归算法):复制、连接、求长、比较、反向、求子串、查找、合并、排序,47,四 数组, 数组的概念,数组说明,数组元素起始下标,如何引用数组元素,数组名的意义 一组具有相同数据类型的数据的有序集合。 无论一维还是二维数组,在内存中的存储都是线性的。做题时可将二维数组写成矩阵形式。 int m33=1,2,3; int n33=1,2,3; printf(“%dn”,m10+n00); printf(“%dn”,m01+n10);,静态存储时输出:3 0,48,四 数组,关于数组的大小(长度,元素的个数): C语言不允许对数组的大小进行动态说明定义时 中不能是变量,但可以是字符常量。 初始化(赋初值)时只有第一维数组长度可省略。 数组初始化(赋初值)时越界将报错;引用时越界不报错。 对数组元素的引用,下标永远从0开始,到该维长度-1。 不能对数组整体赋值(除初始化和赋初值时),数组名是一个常量!,49,四 数组,对字符数组s赋值,不合法的一个: A. char s =“Beijing”; B. char s20=“Beijing”; C. char s20; s=“Beijing”; D. char s20=B,e,i,j,i,n,j;,char *s; s=“Beijing”;,50,四 数组,数组名是地址常量:一维数组名是第一个元素的地址一级地址;二维数组名是第一行元素的地址,第一个元素的地址的地址二级地址。 数组的每个元素功能上等价于一个变量。 int a3=1,2,3;以下数据是变量还是地址: a0 *a a *(a+1) a1 &a0+1 *&a1 a+1 &a0,元素a0、*a 地址:a、&a0 元素a1、*(a+1)、*&a1 地址:&a0+1、a+1,ai *(a+i) &ai a+i,51,四 数组,二维数组int b 3=1,2,3,4,5,6;,b b0 *b *(b+1) b12 *(*(b+1)+2)(*(b+1)2,&b0,&b00,b00,b1,b0,b1,b b+1,6,5,4,3,2,1,*(b1+2),bij *(bi+j) *(*(b+i)+j) (*(b+i)j,52,四 数组,若有说明:int b410, i, j,(且0=i4, 0=j10),则对数组元素bij引用错误的是: A. *( (且0=i3, 0=j5),则bij不正确的地址表示是: A. &bij B. bi+j C. *(b+i)+j D. *(*(b+i)+j),正确:(*(b+i)j,53,四 数组, 基本算法:求最大(小)值,排序(冒泡、选择),矩阵乘法,矩阵转置 模式比较固定的算法或过程: 求最大最小值 字符串处理 排序 文件处理 穷举 输入、输出、读取、写入 进制转换 拆位 交换,54,从键盘上输入若干学生的学习成绩,统计并输出最高和最低成绩,当输入为负数时结束输入。 int main() float x,max,min; scanf(“%f”, printf(“max=%f,min=%fn”,max,min) ,max=x,min=x,x=0,xmin,55,用冒泡法对输入的10个浮点数从小到大进行排序 int main() ; int i,j; printf(“Input 10 numbers:n”); for(i=0; ; i+) scanf(“%f”, ,float a10,x,i10,i9,j9-i,ajaj+1,aj=aj+1,冒泡: 外层:n-1次 内层:n-i-1次(若i从0开始),56,四 数组,程序填空技巧: 从备选项中找启发; 带入一个数来验证,也用于读程序,特别是字符串处理。,57,以下程序的功能是将字符串t后移len个位置,移出的字符移到串首。请完善程序。 int main() void backm( ); char t81; int len=3; gets(t); backm(t, len); printf (“%sn“, t); 【5】 A.*(s+n) B.(s+n-1) C.(s+n-j) D.*(s+n-1) 【6】 A.*(s+n-2) B.*(s+n-i) C.*(s+n-2-i) D.(s+n-2-i),void backm(char *s, int m ) int i, j, n; char ch; n=strlen(s); for(j=0;jm;j+) ch= 【5】 ; for(i=0;in-1;i+) *(s+n-1-i)= 【6】 ; *s=ch; ,58,四 数组,字符串重点 字符串:基本概念,串结束标记0 串输入/输出函数:gets,puts 串的基本操作(非递归/递归算法):复制、连接、求长、比较、反向、求子串、查找、合并、排序,59,四 数组,要想用字符数组保存字符串,则应多留出一个长度来。 有0才叫字符串。之所以能用字符指针char * str引用字符串,就是因为0是默认的字符串尾 对字符数组str赋初值,str不能作为字符串使用的是: A. char str =“shanghai”; B. char str =“shanghai”; C. char str9=s,h,a,n,g,h,a,i,0; D. char str8=s,h,a,n,g,h,a,i;,60,四 数组,已知:char str120=“abcde”, str220=“xyz”;则执行语句: printf(“%d“, strlen ( strcpy(str1, str2) ) ); 输出结果是: A. 9 B. 3 C. 5 D. 8,61,char str20; scanf(“%s”,str); 只能输入不包括空格、t和n的字符串,自动在串尾加0。 printf(“%s”,str); 从输出项提供的地址开始输出,直到遇到0为止,0不输出。 gets(str); 可输入包括空格和t的字符串,n自动转换为0。 puts(str); 把首地址为str的字符串显示在屏幕上并换行。,62,回顾以下语句的语句 for ( i=0; stri!=0; i+ ) ; i-; while ( *p ) p+; p-; n = strlen(str); n-; for (i=0;(str2i=str1i)!=0; i+); while(str2i=str1i) i+; while(*str2+=*str1+);,复制,63,for ( i=0; str1i!=0; i+ ) ; for ( j=0; (str1i=str2j) != 0; i+, j+ ) ; for (k=0; km ,连接,子串,64,for ( i=0; i stringj+1 ) t = stringj; stringj = stringj+1; stringj+1 = t; for ( i=0; i 0 ) strcpy ( t, strj ); strcpy ( strj, strj+1); strcpy ( strj+1, t); ,65,n = strlen(str); for ( i=0, j=n-1; ij; i+, j- ) c = stri; stri = strj; strj = c; revstr ( char * s ) char *p=s, c; while ( *p ) p+; p-; while ( sp ) c = *s; *s+ = *p; *p- = c; ,66,删除输入字符串中的空格 int main() char s80; int i,j; ; for(i=0;si!=0;) if(si= ) for(j=i; ;j+) ; else i+; puts(s); ,gets(s),(sj=sj+1)!=0,67,函数index检查字符串s中是否包含字符串t,若包含,则返回t在s中的开始位置(下标值),否则返回-1。 index(char s , char t ) int i,j,k; for(i=0;si!=0;) for(j=i,k=0; ,tk!=0,tk=0,技巧循环条件有两个,通过判断是哪个条件被破坏来辨别情况。,68,将字符变量的值插入到已按ASCII码值从小到大排好序的字符串中,void fun (char *w, char x, int *n) int i,p=0; while (xwp) ; for (i=*n;i=p;i-) ; wp=x; +*n; ,wi+1=wi,p+,*n=strlen(w),遇到字符串问题,一定举一个简单的例子验证一下。,69,五 函数, 函数的概念,函数的定义与说明,函数调用,函数的返回值与函数定义之间的关系 函数之间进行参数传递的特点(值传递) 传递一般变量:形参一般变量,实参一般变量 传递变量地址:形参指针变量,实参变量地址 在函数之间传递:数组,结构 函数的返回值:简单类型,指针,结构,void,70,五 函数(cont.), 掌握变量的存储类型和作用域,变量初始化 函数递归的概念,递归调用的一般过程。能够编写直接递归程序,掌握递归程序设计方法:针对数值问题和非数值问题使用不同的方法。,71,五 函数, 函数的概念,函数的定义与说明,函数调用,函数的返回值与函数定义之间的关系 一个源文件可以被不同的程序使用。 一个函数可以被位于不同源文件中的其它函数调用。 主函数可以放在任何一个源文件中的任何位置。 函数是C程序的基本组成单位,编译单位是文件 可以嵌套调用和递归调用函数,但不可嵌套定义函数。,72,五 函数,函数的类型即函数返回值的类型决定函数返回值类型的是定义函数时所指定的函数类型(可能发生隐式类型转换)。 函数名是函数定义唯一不可缺省的部分;函数类型省略时,默认为整型。 所有函数都返回,只是void函数返回时没有返回值。 只能将实参的值传给形参,单向的。 int、char型函数定义在调用后不用声明。,73,五 函数,形参说明的两种方式: 函数形参是自动变量,在函数定义时不占有内存空间。 形参必须能存放数据,可以是变量、地址,如指针和数组名(虽然形式是数组,但仍是指针!) double x,y,z(int);,int fun(int x,int y) ,int fun(x,y) int x,y; ,对z是函数声明,74,五 函数,fun (float x) float y; y=x*x; return y; 已知float z;使用z=fun(2.5);调用该函数后,变量z的值: A. 4 B. 6 C. 6.25 D. 有编译错误,75,五 函数, 函数之间进行参数传递的特点(值传递) 传递一般变量:形参一般变量,实参一般变量 传递变量地址:形参指针变量,实参变量地址 在函数之间传递:数组,结构 函数的返回值:简单类型,指针,结构,void 实参变量和形参变量之间是值传递。(即使是地址,也是传递的地址值,也发生复制) 使用数组名作为函数调用时的实参,实际上传递给形参的是数组的首地址。 传递地址,并对*x操作,将影响到共享的变量,76,用指针完成两数的交换,int swap ( , ) int t; t= ; ; =t; return ; int main() int x=2, y=3; swap ( , ); ,A. x B. y C. *x D. *y E. &x F. &y G. int *x H. int *y I. int x J. int y,int *x,int *y,*x,*x=*y,*y,&x,&y,77,函数的功能是交换变量x和y中的值,且通过正确调用返回交换的结果。能正确执行此功能的函数是: A. funa (int *x, int *y) B. funb (int x, int y) int *p; int t; p=x;*x=*y; *y=*p; t=x; x=y; y=t; C. func (int *x, int *y) D. fund (int *x, int *y) *x=*y; *x=*x+*y; *y=*x; *y=*x-*y; *x=*x-*y; ,78,以下程序的运行结果是 #include void f(int b ) int i=0; while(bi=10) bi+=2; i+; int main() int i, a = 1, 5,10, 9,13, 7; f(a+1); for(i=0; i6; i+) printf(“%d “, ai); ,A. 3 7 12 11 13 7 B. 1 7 12 11 13 7 C. 1 7 12 11 13 9 D. 1 7 12 9 13 7,79,五 函数,已知函数原型为double fun(int a ,flaot b);其中形参a是: A. 指针变量 B. 指针数组 C. 整型数组 D. 数组指针 若实参是数组名,被调子函数的形参可以定义为“数组”(数组大小只第一维可省略),也可以定义为指针。 形参数组的大小由调用函数的实参数组的大小决定。,80,字符串复制,copy (char s1 , char s2 ) int i=1; while ( ); int main() char a20, b20; scanf(“%s”,b); copy(a,b); printf(“%sn”,a); ,s1i+=s2i,也可以是: char *s1, char *s2,81,字符串复制,copy (char *s1, char *s2) while ( ); int main() char a20, b20; gets(b); copy(a,b); ; ,*s1+=*s2+,puts(a),也可以是: char s1 , char s2 ,82,五 函数, 变量的存储类型和作用域,变量初始化 自动变量 寄存器变量 内部静态变量 外部静态变量 外部变量 局部变量:在函数或复合语句内部定义; 全局变量:在所有函数外定义,作用域从定义点到文件尾。 静态存储的变量在编译阶段得到初值。,83,五 函数,如果一个变量在整个程序运行期间都存在,但是仅在说明它的函数内是可见的,该变量应被说明为: A. 静态变量 B. 动态变量 C. 外部变量 D. 内部变量 若要定义一个只允许在该源文件中所有函数使用的变量,则该变量的存储类型是: A. extern B. register C. auto D. static static int i=10;其中“i=10”的含义是: A. 只说明了一个静态变量 B.将变量i赋值为0 C. 与“auto i=0;”在功能上等价 D. 将变量i初始化为0,84,五 函数,以下叙述中错误的是: A. 在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值 B. 在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容 C. 在C语言中,外部变量的隐含类别是自动存储类别 D. 在C语言中,函数形参的存储类型是自动(auto)类型的变量,85,五 函数, 函数递归的概念,递归调用的一般过程。能够编写直接递归程序,掌握递归程序设计方法:针对数值问题和非数值问题使用不同的方法。 所有递归程序都可以采用非递归算法实现。 递归是编程题目之一,要注意是否是只要求提交子函数。 如果是数值型,根据公式将f(n)拆成f(n-1)(有时也会用上f(n-2)。题目可能已经拆好了。,86,以下程序的运行结果是 #include void f

    注意事项

    本文(大学C语言复习ppt.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开