收藏 分享(赏)

c内容回顾.ppt

上传人:11xg27ws 文档编号:8683368 上传时间:2019-07-07 格式:PPT 页数:147 大小:842KB
下载 相关 举报
c内容回顾.ppt_第1页
第1页 / 共147页
c内容回顾.ppt_第2页
第2页 / 共147页
c内容回顾.ppt_第3页
第3页 / 共147页
c内容回顾.ppt_第4页
第4页 / 共147页
c内容回顾.ppt_第5页
第5页 / 共147页
点击查看更多>>
资源描述

1、上次课主要内容,第一次课主要内容,学习程序设计语言的目的 学习方法和如何学好编程 程序开发步骤 用VC6.0开发C程序步骤 C程序基本结构,用计算机能识别的程序设计语言来描述要解决的问题的方法和步骤(即算法),以完成特定的任务,编写程序的步骤: 分析问题找到解决问题的方法和步骤用程序设计语言描述编译、调试,学习程序设计语言的目的,学习方法和怎样学好编程?,多阅读别人编写的源代码 自己多编写源代码 擅于利用身边的工具与环境 秘诀:编程,编程,再编程 !,举一反三 融会贯通,程序开发步骤,What is to be done?,可执行文件 扩展名为.exe的文件,How is it to be d

2、one?,扩展名为.c的文件(对C而言),扩展名为.obj的文件,用VC6.0开发C程序步骤,运行VC6.0 文件新建“工程”选项卡里选择“win32 console application”(倒数第3个),输入工程名,选择工程保存位置 选择“an empty project” 文件新建“文件”选项卡里选择“ Text File”(倒数第1个),输入文件名(注意:扩展名为.c),C程序由函数构成.(函数部分见第五章) 语句结尾要用分号“ ; “ 程序有且只有一个主函数main(),且不能省略( ) 程序体用“和“括起来 函数体中又包括说明部分和执行部分 注释由符号对“ /* */”,一般不允许

3、嵌套注释,如:/* this is/*a inlay*/comment*/,C程序的基本结构 见教材P15P16,例2.1 举一反三,1.修改程序,实现求三个整数之和 2.修改程序,实现求三个实数之和 3.修改程序,去掉Add函数,在main函数里实现两个数相加。,OVER,第二次课主要内容,C程序的书写格式 程序的基本逻辑(输入处理(核心)输出) 程序的调试,代码风格,“代码风格”的目标是让代码清晰,增强可读性,使代码更易于维护。 良好的注释:解释清楚此程序的功能和变量含义 整齐的缩进:让代码的逻辑关系分外明朗 适当的空行:使程序的结构凸现 准确的变量命名:不需要注释,便可明辨 恰当位置的空

4、格:让可读性更上一层楼 每行最多只有一条语句,程序的调试,错误信息由四部分组成: 1.给出错误所在的源程序名 2.错误所在的行号(用圆括号括起来) 3.错误号 4.给出错误说明 定位出错行的方法: 1.根据行号 2.双击错误信息说明行(最常用的方法),程序的调试,1.F9:设置断点(或按键) 2.按F5键 3.F10(step over):单步执行 4.Ctrl+F10(Run to cursor): 运行到光标处 5. F11(step into):进入函数(第5章用到) 6.Call Stack:函数调用栈(第5章用到) 7.Memory(第6、7章用到),实验指导书P146P147,常见

5、错误,在建立工程时,没有选择正确的工程类型 出现多个main()函数 双引号 或圆括号不成对 或放错位置 错误提示:undeclared identifier(未声明的标识符) 原因:标识符应该先声明后使用,第三次课主要内容,C程序标识符的命名规则 整型常量和实型常量的表示 字符常量,C程序中常见符号,关键字 标识符(掌握其命名规则) 操作符(运算符) 标点符号 分隔符,C程序常见符号分类,关键字(Keyword) (见P425 附录B) 又称为保留字,C语言中预先规定的具有固定含义的一些单词 数据类型修饰符int,控制语句return等 标识符(Identifier) 系统预定义标识符,ma

6、in,printf 等 用户自定义标识符,Add, x, y 等 运算符(Operator) 34种,详见附录2 分隔符(Separator) 空格、回车/换行、逗号等 其它符号 大花括号“”和“”通常用于标识函数体或者一个语句块 “/*”和“*/”是程序注释所需的定界符 数据(Data) 变量(Variable) 常量(Constant),数据类型(Data Type),见附录C,#include main() int m=0256,n=256;printf(“%o%on“,m,n); ,#include main() int i=9;printf(“%#on“,i); ,以下程序段执行后输

7、出结果是:_. main() int m=32767,n=032767;printf(“%d,%on“,m,n); ,有以下程序段 main() int n1=10,n2=20;printf(“_“,n1,n2); 要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20,有以下程序 main() int x=102,y=012;printf(“%2d,%2dn“,x,y); 执行后输出结果是_.,有以下程序 main() char a,b,c,d;scanf(“%c,%c,%d,%d“, 若运行时从键盘输入:6,5,65,66。则输出结果是_.,main()

8、 int i=0,j=0,k=0;scanf(“%d%*d%d“, ,int b,c;float a;scanf(“%f,%d,c=%d“,思考:认真阅读并理解华氏温度和摄氏温度转换的程序,编写下面程序,输出26个英文字母和其ascii码的对照表 输出100200的十进制、八进制和十六进制对照表,第四次课主要内容,字符串常量 符号常量(宏常量、const声明的常量、枚举常量) 变量(声明、定义和初始化) 格式化输入输出 格式化输入函数scanf() 格式转换说明符和格式修饰符 常见的编程错误总结见教材P71 使用函数需要注意的问题见教材P60P70 算术运算符(优先级和结合性),以下程序 ma

9、in() int i,j,k;scanf(“_“, 要求运行时从键盘输入:123456使变量i,j,k的值分别为1,234,56,请填空,实验指导书P167实验一,问题一 问题五,1 . C 语言中运算对象必需是整型的运算符是()。A ) % B ) / C ) ! D ) *,算术运算符,算术运算符,思考: 任意从键盘输入一个三位整数n,要求正确分离出它的个位、十位和百位,并分别在屏幕上输出。(提示:用整除运算/和取余运算%)如果是任意大小的数呢?,第五次课主要内容(见附录D),关系运算符 逻辑运算符 赋值运算符、复合赋值运算符 增1和减1运算符(前置、后置) 强制类型转换运算符,下列关于单

10、目运算符+的叙述中正确的是( ) A )它们的运算对象可以是任何变量和常量 B )它们的运算对象可以是 char 型变量和 int 型变量,但不能是 float 型变量 C )它们的运算对象可以是 int 型变量,但不能是 double 型变量和 float 型变量 D )它们的运算对象可以是 char 型变量、 int 型变量和 float 型变量,以下程序的输出结果是( ) main() char a=a,b;printf(“%c,“,+a);printf(“%cn“,b=a+); ,数字字符0的ASCII值为48,运行以下程序的输出结果是( ) main() char a=1,b=2;p

11、rintf(“%c,“,b+);printf(“%dn“,b-a); ,以下程序的输出结果是( ) main() int m=12,n=34;printf(“%d%d“,m+,+n);printf(“%d%dn“,n+,+m); ,位运算,以上位运算符中,只有求反()为单目运算符,其余均为双目运算符 各双目运算符与赋值运算符结合可以组成扩展的赋值运算符。,位运算,注意:位运算的操作对象不能是float,double,long double等类型,只能是标准的char 和int 数据类型。,若以下选项中的变量已正确定义,则正确的赋值语句是( ) A ) x1 = 26.8 % 3 ; B ) 1

12、+ 2 = x2 ; C ) x3 = 0x12 ; D ) x4 = 1 + 2 = 3 ;,以下非法的赋值语句是( ) A ) n = ( i = 2 , + + i ) ; B ) j + + ; C ) + + ( i + 1 ) ; D ) x = j 0 ;,若 a 、 b 、 c 、 d 都是 int类型变量且初值为 0 ,以下选项中不正确的赋值语句是( ) A ) b = c = 100 ; B ) d +; C ) c + b D ) d = ( c = 22 )-( b + + ) ; 以下合法的 C 语言赋值语句是( ) A ) a = b = 58 B ) k = in

13、t ( a + b ) ; C ) a = 58 , b = 58 D ) -i;,下列语句中,符合语法的赋值语句是 _ A ) a=7+b+c=a+7; B ) a=7+b+=a+7; C ) a=7+b,b+,a+7 D ) a = 7+b , c+a+7; 下列语句中,正确的语句是_。 A ) int x =y= z = 0 ; B ) int z =( x + y ) + + ; C ) x =+ 3 = 2; D ) x %= 2.5;,关系运算符与关系运算,以下运算符中不是关系运算符的是() A ) = C ) ! D ) =!以下各个关系表达式中非法的是()。 A ) a = b

14、 B ) (a = 3 ) ( b = 4 ) C ) a c = c D ) a = = b,1 请写出以下程序的输出结果 #include main( ) int a=100;if (a100) printf(“%dn“,a100);elseprintf(“%dn“,a=100); 2 . C 语言中用 _ 表示逻辑值“真”,用 _表示逻辑值“假”,关系运算符与关系运算,逻辑运算符与逻辑运算,1、逻辑运算符 c 语言提供了三种逻辑运算符: “ & & ”逻辑“与”、“ | ”逻辑“或”、“ ! ”逻辑“非”。其中, & 和 | 运算符是双目运算符,如( a B ) & & ( x y )。

15、!运算符是单目运算符,应该出现在运算对象的左边。逻辑运算符具有自左向右的结合性。 2、逻辑表达式和逻辑表达式的值由逻辑运算符和运算对象所组成的表达式称为逻辑表达式。逻辑运算的对象可以是 C 语言中任意合法的表达式。逻辑表达式的运算结果或者为 1 ( “真” ) ,或者为 0 ( “假”)。,若 x 和 y 代表整型数,以下表达式中不能正确表示数据关系| x - y | -10 & & x - y 10 D ) (x y) * (x y)100,逻辑运算符与逻辑运算,第七次课主要内容,字符输入输出函数:getchar(),putchar() if语句(不带else字句和带else子句),上机情况

16、汇总,错误一:调用系统函数时前面没有包含相应的头文件 错误二:用scanf函数和printf函数时格式转换说明符和变量类型不一致 错误三:用没有赋值的变量进行运算 错误四:在执行语句中使用的变量没有在开始部分定义 错误五:if语句后的表达式缺少圆括号 错误六:if语句后加分号; else后面写表达式 错误七:括号、单引号、或双引号没有成对出现 或放错位置 或用中文的括号、单引号、双引号、逗号 错误八:语句的组织完全不合逻辑,学习程序设计的关键是具有较强的逻辑思维能力,这里有一个测试题,你可以对自己现在的能力进行评诂。本题是柏林大学 的一次考试题,要求在30分钟内做出,计分是这样的,共150分,

17、从1到30分钟,每加1分钟减2分,那么30分钟答出就是90分,是及格分;从30分钟以后每加1分钟减1分。大家试试看自己能得多少分。 原题:有五位小姐排成一排,所有的小姐姓不同、穿的衣服颜色不同、喝不同的饮料、养不同的宠物、吃不同的水果。钱小姐穿红色衣服;翁小姐养了一只狗;陈小姐喝茶;穿绿衣服的站在穿白衣 服的左边;穿绿衣服的小姐喝咖啡;吃西瓜 的小姐养鸟;穿黄衣服的小姐吃梨;站在中间的小姐喝牛奶;赵小姐站在最左边;吃橘子的小姐站在养猫的旁边;养鱼的小姐旁边的那位吃梨;吃苹果的小姐喝香槟 ;江小姐吃香蕉 ;赵小姐站在穿蓝衣服的小姐旁边;喝开水的小姐站在吃橘子的小姐旁边;请问哪位小姐养蛇 ?,上机

18、情况汇总,程序中语句顺序: 1、变量的定义语句 2、给变量输入值的语句(注意:输入的数据应和待赋值的变量的类型一致) 3、根据问题的需要安排对变量进行处理的语句(算术运算、关系运算、逻辑运算、位运算、赋值运算、逗号运算和条件运算或调用系统函数)以及语句执行的顺序(顺序、分支、循环) 4、把处理的结果输出显示(可以输出到屏幕也可以输出到文件中),同时判断结果是否正确,使用系统库函数,函数的功能 函数名 函数有没有参数,如果有参数则有几个参数?每个参数的数据类型是什么? 函数有没有返回值,如果有返回值,返回值得数据类型是什么? 函数所在的头文件,累加、累乘、分类统计的算法,输入一行字符,统计其中数

19、字字符的个数、大写字母的个数和小写字母的个数,其他的不计。,交互式的字符输入函数,编译器定义的两个函数: getch() getche() #include 两个函数的相同点: 功能相同,在击键后都立即返回,不需要输入回车键 两个函数的区别: getch()不向屏幕回显键入的字符 getche()向屏幕回显键入的字符,有以下程序: #include main ( ) int i=1, j=1, k=2 ; if ( (j + | k +) 执行后输出结果是()。,逻辑运算符与逻辑运算,以下程序运行后的输出结果是()。 #include main( ) int a = 1, b = 2, m =

20、 0, n = 0, k;k = ( n = b a ) | ( m = a b ) ;printf(“%d,%dn“, k, m ); ,逻辑运算符与逻辑运算,以下程序运行后的输出结果是()。 #include main( ) int a = 1, b = 2, m = 0, n = 0, k;k = ( n = b a ) ,逻辑运算符与逻辑运算,以下程序运行后的输出结果是()。 #include main( ) int i = 1, j = 2, k = 3; if ( i+ = 1 ,逻辑运算符与逻辑运算,以下程序运行后的输出结果是()。 #include main( ) int i

21、= 1, j = 2, k = 3; if ( i+ = 1 | ( +j = 3 | k+ = 3) printf (“%d %d %dn“, i, j, k ); ,逻辑运算符与逻辑运算,以下程序运行后的输出结果是()。 #include main( ) int a, b, d = 25; a = d / 10 % 9 ; b = a ,逻辑运算符与逻辑运算,以下程序运行后的输出结果是()。 #include main( ) int a, b, c; a = 10 ; b = 20; c =( a % b 1); printf(“%d %d %dn“, a, b, c); ,逻辑运算符与逻

22、辑运算,已有定义: int x = 3 , y = 4 , z = 5 ; ,则表达式!(x+y)+z-1 & y+z/2的值是()。 A ) 6 B ) 0 C ) 2 D ) 1,逻辑运算符与逻辑运算,以下程序运行后的输出结果是()。 #include main( ) int a=3, b=4, c=5, t=99;if (ba ,if语句,if语句,下列条件语句中,功能与其他语句不同的是() A ) if (a) prinif(“%dn”,x); else printf (“%dn,y); B ) if(a=0) printf (“%dn”,y); else printf (“%dn,x

23、); C ) if (a!=0) printf(“%dn”,x); else printf (“%dn”,y ); D ) if (a=0) printf (“%dn,x); else prinif (“%dn”,y);,以下程序执行后的输出结果是_ main ( ) int p , a = 5 ; if (p = a != 0) printf (“%dn“,p); else prinf(“%dn“,p+2); ,if语句,以下程序运行后的输出结果是_ #include main() int a=1,b=3, c=5;if (c=a+b) printf(“yesn“);else printf(

24、“non“); ,if语句,下列程序运行后的输出结果是( ) #include main() int n=0, m=1, x=2;if(!n) x-=1;if(m) x-=2;if(x) x-=3;printf(“%dn“,x); ,if语句,若从健盘输入 58 ,则以下程序运行后的输出结果是_ #include main() int a ; scanf(“%d“, ,if语句,下列程序运行后的输出结果是( ) #include main() int x=10,y=20,t=0;if(x=y)t=x;x=y;y=t;printf(“%d,%dn“,x,y); ,if语句,嵌套的if语句,下列程

25、序运行后的输出结果是( ) #include main() int a=3,b=4,c=5,d=2;if(ab)if(bc)printf(“%d“,d+1);elseprintf(“%d“,+d+1);printf(“%dn“,d); ,下列程序运行后的输出结果是( ) #include main() int a=5,b=4,c=3,d=2;if(abc)printf(“%dn“,d);else if(c-1=d)=1)printf(“%dn“,d+1);elseprintf(“%dn“,d+2); ,嵌套的if语句,下列程序运行后的输出结果是( ) #include main() int p

26、=30;printf(“%dn“,(p/30?p/10:p%3); ,条件运算符和条件表达式,下列程序运行后的输出结果是( ) main() int w=4,x=3,y=2,z=1;printf(“%dn“,(wx?w:zy?z:x); ,条件运算符和条件表达式,switch 语句,1 . switch 语句 switch 语句形式如下: switch (表达式) case 常量表达式 1 :语句1 case 常量表达式 2 :语句 2 case 常量表达式 n :语句 n default :语句 n+1,switch 语句,main() int g; printf (“Enter a mar

27、k:“); scanf (“%d“, ,当执行左边程序,输入一个85分的学生成绩后,程序会输出( ),switch 语句,思考 读入一个年份和月份,打印出该月有多少天(考虑闰年),用 switch 语句编程。提示:闰年的 2 月有 29 天,平年的 2 月有 28 天。 读入一个年份和月份,输出从1月1日到给定月末的总天数(考虑闰年),用 switch 语句编程。提示:闰年的 2 月有 29 天,平年的 2 月有 28 天。,#include main ( ) int x=1, y=0, a=0, b=0;switch(x)case 1:switch ( y )case 0: a+;break

28、; case 1:b+; break; case 2: a+;b+; break; printf (“%d%dn“, a, b); return 0; ,以下程序运行后的输出结果是:,#include main ( ) int a=15, b=21, m=0;switch (a % 3) case 0: m+; break;case 1: m+; switch (b % 2) default : m+; case 0: m+; break;printf (“%dn“, m); ,以下程序运行后的输出结果是:,上节课主要内容,while语句 do-while语句 for语句 break语句 co

29、ntinue语句 主要算法: 求一个数的因子、判断一个数是否为素数,#include main ( ) int i, m=0, n=0, k=0; for (i=9; i=11; i+) switch (i/10)case 0: m+; n+; break;case 10: n+; break; default: k+; n+; printf (“%d%d%dn“, m, n, k); ,以下程序运行后的输出结果是:,思考,编程找出2000以内这样的正整数N:它的不同值的因子(包括1和N在内)之和是一个素数。例如,16,1+2+4+8+16=31,思考:求最大数和最小数,随机生成20个两位整数

30、,找出其中的最大数和最小数。,上节课主要内容,从一组数里找出最大数、最小数的算法(逐一比较) 利用二分法和迭代法求方程的根(注意:不可将浮点变量用“=”或“!=”与任何数字比较 ),不可将浮点变量用“=”或“!=”与任何数字比较,如: main() float x;x=5.29-2.3*2.3;if(x=0)printf(“x=0n“);elseprintf(“x!=0n“);,分析和解决较复杂问题的方法,通常采用“自顶向下、逐步求精”的算法设计方法和分而治之的求解问题思想进行程序的设计,并把其中功能相对独立的处理定义成函数。这样可以满足“模块化”设计要求,使程序的逻辑结构清晰、易写、易读、易

31、懂,并避免在程序中使用重复代码。,已学的常用算法,累加、累乘 求一个数的因子 判断完数 判断素数 求最大公约数、最小公倍数 找出一组数里的最大数、最小数 二分法求方程的根 针对问题中出现浮点数和零进行等值比较的处理方法,练习考试系统中出现的问题,条件运算符: ?: 逻辑运算 switch语句 (有break语句、无break语句的区别),上节课主要内容,变量的作用域(变量能被读写访问的范围):局部变量、全局变量 变量的生存期(从被分配存储空间到释放所占存储空间的时间) 变量的存储类型(相关的说明符:auto、register、static、extern):静态存储、动态存储,C中的内存分配,程

32、序区,静态存储区,栈,形参、自动变量、函数调用的现场等,全局变量、 静态变量,自由存储区,molloc()申请的内存,static说明符,静态局部变量(使变量具有记忆功能) 静态全局变量:仅限于本编译单位使用,不能被其它编译单位所引用 静态函数:仅限于本编译单位的其它函数调用它,而不允许其它编译单位中的函数对它进行调用。,extern说明符,区分全局变量的定义和声明 exter说明符用于声明全局变量 在同一编译单位内(全局变量的定义和声明在同一个文件中)用extern说明符来扩展全局变量的作用域 在不同的编译单位内(全局变量的定义和声明在不同文件中)用extern说明符用来扩展全局变量的作用域

33、。,同名变量,如果在具有包含关系的作用域内有同名变量,外层作用域的同名变量在内层作用域内将被屏蔽。,以下叙述中正确的是_,A)局部变量说明为 static 的存储类,其生存期将得到延长 B)全局变量说明为 Static 存储类,其作用域将被扩大 C)任何存储类的变量在末赋初值时,其值都是不确定的 D)形参可以使用的存储类说明符与局部变量完全相同,以下叙述中正确的是_,A)全局变量的作用域一定比局部变量的作用域范围大 B)静态( static)类别变量的生存期贯穿于整个程序运行期间 C)函数的形参都属于全局变量 D)未在定义语句中赋初值的auto变量和static变量的初值都是随机值,上节课主要

34、内容(4.17第9周),一维数组的定义(数组应先定义后使用) float f4; /定义语句中的下标表示数组元素的个数 说明:定义一个有4个浮点型数据的数组f,每个元素的初始值不确定,定义语句中的下标只能是常量或常量表达式 一维数组的初始化(定义的时候赋初值) 给部分元素赋初始值 char c10=2,c,o,c; 未赋初值的元素的初始值为_? 给全部元素赋初始值 int a5=3,5,7,2,8 或写成_? 当所赋初值多于所定义数组的元素个数时,将会怎样?,上节课主要内容(4.17第9周),一维数组的使用(使用数组里的元素) f3=3.4; /执行语句中的下标表示元素在数组中的位置 第一个元

35、素的下标为0,最后一个元素的下标为? 不能对数组(除字符数组)进行整体输入或输出,只能输入或输出数组元素。,思考:,生成序列: 1,1,2,3,5,8,13,21的前35项,并以每行5个输出,上节课主要内容,排序算法(交换排序法、选择排序法、直接插入排序法、冒泡排序法、冒泡排序法的改进算法) 查找算法 可以把待排序的数想象成一排书的编号,怎样把他们按编号升序(或降序)摆放?怎样从这一排书里找到指定编号的一本书? 二维数组的定义,数组方面的常见题型,求数组元素的最大值、最小值和平均值 把二维数组变为一维数组 对数组元素排序 在数组中查找数据 移动数组元素 数组元素分段存放 删除数组中相同元素,思

36、考,编程实现将整型数组a中的元素逆置(设数组a中有10个元素,元素值分别为:1、2、3、4、5、6、7、8、9、10, 逆置后,元素值为10、9、8、7、6、5、4、3、2、1),思考,求nn方阵的转置,思考:输出如下形式的数组,排序,确定排序方式(升序还是降序) 确定排序算法(冒泡排序、选择排序、插入排序) 分析待排序的数据(整型?字符串?),采用选择排序法把一组数按升序排列(学习过程),整型数: 如何找出(选择出)n个数中的最小数?(用变量) 如何找出(选择出)n个数中的最小数?(用数组) 如何把n个数中从下标i开始到下标(n-1)结束的(n-i)个元素的最小数调整到下标i的位置? 如果把

37、第3个操作从(i=0)到(i=n-2)做n-1次,将会得到什么结果? 如何用函数实现? 字符串:如果是n个字符串怎么实现上述操作?,函数,函数的形式参数和实际参数的区别与联系,函数的两种传递方式,值传递 形参是变量,实参是常量、变量或数组元素 地址传递 形参是数组,实参是数组名,上节课主要内容,区分变量的地址和变量的内容 区分间接寻址、直接寻址 指针的功能(为什么要引入指针?) 两个重要的运算符: 取地址运算符 & 取内容运算符 * 指针变量的定义、初始化 空指针 指针变量的引用(赋值P250等) 区分定义语句中的*和 执行语句中的*,C语言中引入指针的原因:,为函数提供修改变量值的手段 为C

38、的动态内存分配系统提供支持 为动态数据结构(如链表、队列、二叉树等)提供支持 可以改善某些程序的效率,两个数的交换,#include void swap(int *p,int *q) int t;t=*p;*p=*q;*q=t; int main() int a=8,b=12;swap( ,任何语法都是为了描述 “ 解决问题的方法和步骤 ” 的需要而制定的,上节课主要内容,指针变量的赋值 指针与整数的加减运算(一般用于访问数组元素) 两指针变量相减(一般用于数组) 两指针变量的比较 通过指针引用一维数组的元素(数值、字符)P265,int a10=1,2,3,4,5,6,7,8,9,10; i

39、nt *p=a; 引用下标为i的元素的四种方法:,上节课主要内容,示例:把一组数逆置(如何用指针实现?) main() int a10=1,2,3,4,5,6,7,8,9,10; int i=0,j=9;for(;ij;i+,j-)t=ai;ai=aj;aj=t;for(i=0;i10;i+) printf(“%d “,ai); ,示例:把一组数逆置(如何用指针实现?) main() int a10=1,2,3,4,5,6,7,8,9,10; int i=0,j=9;for(;i10/2;i+)t=ai;ai=a9-i;a9-i=t;for(i=0;i10;i+) printf(“%d “,a

40、i); ,上节课主要内容,示例:把一组数逆置(用指针实现) main() int a10=1,2,3,4,5,6,7,8,9,10; int *p= ,示例:把一组数逆置(用函数) main() #include void reverse(int *b,int n)int i,t;for(i=0;in/2;i+)t=bi;bi=bn-1-i;bn-1-i=t; main() int a10=1,2,3,4,5,6,7,8,9,10;int i;reverse(a,10);for(i=0;i10;i+) printf(“%d “,ai); ,以下程序中的函数reverse的功能是将a所指数组中的

41、内容进行逆置。,void reverse(int a,int n)int i,t;for(i=0;in/2;i+)t=ai;ai=an-1-i;an-1-i=t; main() int b10=1,2,3,4,5,6,7,8,9,10; int i,s=0;reverse(b,8);for(i=6;i10;i+) s+=bi;printf(“%dn“,s); 程序运行后的输出结果是_。,源代码表达了解决问题的思想、处理过程、操作方法及算法等,2007秋笔试题,若在一个C语言源程序中“e1”和”e3”是表达式,”s;”是语句,则下列选项中与语句“for(e1;e3)s;”功能相同的语句是_ A、

42、e1;while(10) s;e3; B、e1;while(10)s;e3; C、e1;while(10)e3;s; D、while(10)e1;s;e3,2007秋笔试题,若有声明“long fun(int *x, int n, long *s);int a4=1,2,3,4;long b,c;”,则以下函数调用形式中正确的是_. A. c=fun(a,4,b); B. c=fun(a,4,2008秋笔试题,若有声明“double x=3,c,*a=,思考(填空题):,请补充函数fun(char *s),该函数的功能是把字符串中的内容逆置。例如:字符串中原有的字符串为abcde,则调用该函数

43、后,串中的内容为edcba。 注意:部分源程序给出如下 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句,#include #include #define N 81 void fun(char *s)int i,n=strlen(s)-1;char t;for(i=0;in;i+, _1_)t=si;_2_;_3_;,main() char aN;gets(a);puts(a);fun(a);printf(“n“);puts(a); ,while(*srcstr !=0) P261*dststr = *srcstr;srcstr+;dststr

44、+;*dststr=0;,while(*dststr+ = *srcstr+ ) !=0); P 262,思考1:,编写一个函数void fun(char *tt, int pp),统计在tt字符串中a到z26个字母各自出现的次数,并依次放在pp所指数组中。例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是: 33322110000000000000000000,思考1 续:,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句: 试题程序: #include void fun(char *tt, int pp) main() cha

45、r aa50; int bb26,k; scanf(“%s”,aa); fun(aa,bb); for(k=0; k20; k+) printf(“%d”,bbk); ,作业:,m个人的成绩存放在score数组中,请编写函数fun,它的功能是:返回低于平均分的人数,并将低于平均分的分数放在below所指的数组中。 int fun(int score, int m, int below) ,作业1,下列给定的程序中,函数fun()的功能是:删除字符串s中所有空白字符(包括Tab字符、回车符及换行符)。输入字符串时用“#”结束输入。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花

46、括号中填入所编写的若干语句: 试题程序:,作业1(续),#include #include #includevoid fun(char *p)int i,t;char c80;for(i=0,t=0;pi;i+)if(!isspac(*(p+i)_【1】_;ct=0;strcpy(p,c);,main() char c,s80;int i=0;c=getchar();while(_【2】_)si=c;i+;c=getchar();_【3】_;fun(s);puts(s); ,动态内存分配,若要使指针p指向一个double类型的动态存储单元,请填空: p=_malloc(sizeof(doubl

47、e); 用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空: st=(char*) _;,优秀程序员的基本素质,良好的编程风格,规范化编程 扎实的基础 数据结构、离散数学、编译原理 丰富的想象力 不滥用技巧 滥用技巧不是锦上添花,而是画蛇添足 不钻牛角尖 不拘泥于固定的思维方式,遇到问题时多想几种解决方案 韧性和毅力 “高手”和一般程序员最大的区别 严谨的思维,优秀程序员的基本素质,“树上有十只鸟,开枪打死一只,还剩几只?” “是无声手枪或别的无声的枪吗?” “不是。” “枪声有多大?” “80分贝至100分贝。” “那就是说会震得耳朵疼?” “是。” “在这个城市里打鸟犯不犯法?” “不犯。” “您确定那只鸟真的被打死啦?” “确定。”,优秀程序员的基本素质,“OK,树上的鸟有没有聋子?” “没有。” “有没有关在笼子里的?” “没有。” “边上还有没有其它的树,树上还有没有其它的鸟?” “没有。” “有没有残疾的或饿得飞不动的鸟?” “没有。” “算不算怀孕肚子里的小鸟?” “不算。” “打鸟的人眼睛有没有花?保证是十只?” “没有花,就十只。”,优秀程序员的基本素质,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报