程序设计实践.ppt

上传人:李司机 文档编号:4101284 上传时间:2023-04-04 格式:PPT 页数:73 大小:2.40MB
返回 下载 相关 举报
程序设计实践.ppt_第1页
第1页 / 共73页
程序设计实践.ppt_第2页
第2页 / 共73页
程序设计实践.ppt_第3页
第3页 / 共73页
程序设计实践.ppt_第4页
第4页 / 共73页
程序设计实践.ppt_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《程序设计实践.ppt》由会员分享,可在线阅读,更多相关《程序设计实践.ppt(73页珍藏版)》请在三一办公上搜索。

1、程序设计实践(课程回顾),1,Visual C+6.0 的使用,C源程序可以在Visual C+集成环境中进行编译、连接和运行。现在常用的是Visual C+6.0版本。1、Visual C+的启动在需要使用Visual C+时,只需从桌面上顺序选择“开始”“程序”“Microsoft Visual Stdio”“Visual C+6.0”即可,此时屏幕上在短暂显示Visual C+6.0的版权页后,出现Visual C+6.0的主窗口,如图所示。,2,2、新建一个C源程序的方法在Visual C+菜单栏File中选择New子菜单,出现New(新建)对话框,如图所示。,3,选择File(文件)

2、选显卡中的C+Source File项,表示这项的功能是建立新的C+源程序文件,也可用于处理C源程序。在对话框右半部的Location文本框中输入源程序文件的存储路径,在其上方的File(文件名)文本框中输入源程序文件名(如c1_1.c),注意文件名的后缀为.c,单击OK按钮,回到Visual C+主窗口,可以输入和编辑源程序。,4,3、保存源程序如果源程序编辑结束,则将源程序保存到前面指定的文件中。方法是:在菜单栏File中选择Save(保存)或Save As(另存为)项。4、编译、连接和运行程序的编译:单击菜单Build(编译),在其下拉菜单中选择Compile c1_1.c(编译c1_1

3、.c)项。屏幕上会出现一个对话框,单击是(Y)按钮,表示同意由系统建立默认的项目工作区,然后开始编译。也可以不用选择菜单的方法,而用Ctrl+F7来完成编译。,5,在进行编译时,编译系统检查源程序有无语法错误,然后在主窗口下部的调试信息窗口中输出编译的信息,如果有错,就会指出错误的位置和性质。,6,程序的连接:在得到目标程序后,就可以对程序进行连接了,刚才已生成了目标程序c1_1.obj,此时应选择BuildBuild c1_1.exe(构建c1_1.exe)。在完成连接后,在调试信息窗口中显示连接时的信息,如果没有发生错误,生成了一个可执行文件c1-1.exe。程序的执行:在得到可执行文件后

4、,就可以直接执行了,选择Build!Execute c1_1.exe(执行c1_1.exe)。也可以不通过单击菜单,而用Ctrl+F5来实现程序的执行。程序执行后,屏幕切换到输出结果的窗口,显示出运行结果。关闭工作区:如果已完成对一个程序的操作,不再进行其他的处理,应当选择FileClose Workspace(关闭工作区),以结束对该程序的操作。,7,Visual C+6.0程序的调试,设置断点单步执行:F10:不进入函数内部F11:进入函数内部,8,C的数据类型,C语言提供了以下一些数据类型。,数据类型,构造类型,指针类型,空类型(无值类型)void,整型数据,整数类型的有关数据:,类型

5、类型说明符 长度 数的范围 基本型 int 2字节-3276832767 短整型 short 2字节-215215-1 长整型 long 4字节-231231-1 无符号整型 unsigned 2字节 065535 无符号短整型 unsigned short 2字节 065535 无符号长整型 unsigned long 4字节 0(232-1),整型变量的定义:规定在程序中所有用到的变量都必须在程序中定义,即“强制类型定义”。例如:int a,b;(指定变量、为整型)unsigned short c,d;(指定变量、为无符号短整型)long e,f;(指定变量、为长整型),浮点型数据,浮点型

6、变量的分类 浮点型变量分为单精度(float型)、双精度(double型)和长双精度型(long double)三类形式。,字符型数据,字符常量(1)用单引号包含的一个字符是字符型常量(2)只能包含一个字符,例,a,A,1abc、“a”,有些以“”开头的特殊字符称为转义字符,n 换行t 横向跳格r 回车 反斜杠 单引号”双引号,字符变量字符型变量用来存放字符常量,注意只能放一个字符。字符变量的定义形式如下:char c1,c2;可以用下面语句对c1,c2赋值:c1a;c2b;c1=“a”;/*错误*/一个字符变量在内存中占一个字节。,字符串常量字符串常量是一对双撇号括起来的字符序列.合法的字符

7、串常量:“How do you do.”,“CHINA”,“a”,“$123.45”可以输出一个字符串,如printf(“How do you do.”);,规定:在每一个字符串常量的结尾加一个“字符串结束标志”,以便系统据此判断字符串是否结束。规定以字符作为字符串结束标志。,如:如果有一个字符串常量“”,实际上在内存中是:,它占内存单元不是个字符,而是个字符,最后一个字符为。但在输出时不输出。,字符型数据,变量赋初值,(1)语言允许在定义变量的同时使变量初始化如:int a=3;/指定为整型变量,初值为(2)可以使被定义的变量的一部分赋初值。如:int a,b,c=5;(3)如果对几个变量赋

8、以同一个初值,应写成:int a=3,b=3,c=3;表示、的初值都是。不能写成 int a=b=c=3;,运算符 的运算符有以下几类:(1)算术运算符(+-*/%)(2)关系运算符(!)(3)逻辑运算符(!|)(4)位运算符(|)(5)赋值运算符(及其扩展赋值运算符)(6)条件运算符(?:)(7)逗号运算符(,),(8)指针运算符(*和)(9)求字节数运算符(sizeof)(10)强制类型转换运算符((类型))(11)分量运算符(-)(12)下标运算符()(13)其他(如函数调用运算符(),算术运算符,自增、自减运算符 作用是使变量的值增或减如:前置运算:+i,-i 后置运算:i+,i-前置

9、运算是变量先变化再使用,后置运算是变量先使用后变化。例如:;i的值先变成4,再赋给,j的值均为;先将 i的值3赋给,的值为,然后变为,格式输入与输出,(一)格式输出函数一般格式:printf(格式控制,输出表列),%d:以带符号的十进制形式输出整数%c:以字符形式输出,只输出一个字符%s:输出字符串%f:以小数形式输出单,双精度数,隐含输出六位小数%e:以指数形式输出实数,例:printf(4d,4d,a,b);若a123,d12345,则输出结果为 123,12345,22,例 用scanf函数输入数据。#includevoid main()int a,b,c;scanf(“%d%d%d”,

10、a在内存中的地址&是地址运算符,23,例:ab,a+bb+c,(a=3)(b=5),ab)(bc)关系表达式的值是一个逻辑值,即“真”或“假”。如果关系表达式表示的关系成立,则关系表达式的结果值为1(真),否则为0(假)。,关系表达式,24,逻辑表达式,例:设a=4,b=5:!a的值为0 a&b的值为1a|b的值为1!a|b的值为14&0|2的值为1,25,任何非零的数值被认作“真”,If语句的三种基本形式(1)if(表达式)语句例:if(xy)printf(“%d”,x);,if语句,26,if语句,(2)if(表达式)语句1 else 语句2例:if(xy)printf(“%d”,x);e

11、lse printf(“%d”,y);,27,(3)if(表达式1)语句1 else if(表达式2)语句2 else if(表达式3)语句3 else if(表达式m)语句m else 语句nelse if结构是条件分支嵌套常用的一种形式,它可以实现多分支处理,即在多个分支程序段中选择其中之一执行。,if语句,28,匹配规则:Else总是与它上面的,最近的,未配对的if语句配对。,例:If()if()语句1elseif()语句2else 语句3,例:If()if()语句1else if()语句2 else 语句3,当if和else数目不同时,可以加花括号来确定配对关系。,if语句的嵌套,29

12、,循环控制,while语句用来实现“当型”循环结构。一般形式:while(表达式)语句 当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。,例 求1到100的和#include void main()int i,sum=0;i=1;while(i=100)sum=sum+i;i+;printf(%dn,sum);,do-while语句的特点:先执行循环体,然后判断循环条件是否成立。一般形式:do 循环体语句 while(表达式);,用for 语句实现循环,for语句最简单的形式:for(循环变量赋初值;循环条件;循环变量增值),例如:for(i=1;i=1

13、00;i+)sum=sum+i;,相当于:i=1;while(i=100)sum=sum+i;i+;,1.一维数组的定义格式为:类型说明符 数组名常量表达式;例如:int a10;它表示定义了一个整形数组,数组名为a,此数组有10个元素。对数组元素初始化:例如:int a5=1,2,3,4,5;也可以写成 int a=1,2,3,4,5;字符数组:char c=“Pascal program”;,一维数组的定义,字符数组的输入输出,char strl5,str25,str35;scanf(%s%s%s,str1,str2,str3);,scanf(%s,&str);,35,二维数组的定义,例如

14、:定义a为34(3行4列)的数组,b为510(5行10列)的数组。如下:float a34,b510;分行给二维数组赋初值:例如:int a34=1,2,3,4,5,6,7,8,9,10,11,12;,函数定义的一般形式,定义有参函数的一般形式为:类型标识符函数名(形式参数表列)声明部分 语句部分,例如:int max(int,int)int;/*函数体中的声明部分*?;return();,37,调用函数时的数据传递#include void main()int max(int,int);/*对max函数的声明*/int,;scanf(,);max(,);printf(,);int max(i

15、nt,int)*定义有参函数max*int;?;return();,38,数组名作函数参数,用数组名作函数参数时,此时形参应当用数组名或用指针变量。,例有一个一维数组score,内放10个学生成绩,求平均成绩。,39,例 形参数组不定义长度#include void main()float average(float array,int n)float score_15 98.5,97,91.5,60,55;float score_210=67.5,89.5,99,69.5,77,89.5,76.5,54,60,99.5;printf(“the average of class A is%6.

16、2fn”,average(score_1,5);printf(“the average of class B is%6.2fn”,average(score_2,10);float average(float array,int n)int i;float aver,sum array 0;for(i=1;i;i+)sumsumarray;aversum;return(aver);,40,全局变量,外部变量:函数之外定义的变量称为外部变量。外部变量可以为本文件中其他函数所共用。它的有效范围为从定义变量的位置开始到本源文件结束。所以也称全程变量。,41,例 有一个一维数组,内放个学生成绩,写一个

17、函数,求出平均分、最高分和最低分。#include float Max,Min;*全局变量*void main()float average(float array,int n);float ave,score10;int;for(;)scanf(,score);ave=average(score,10);printf(“max=%6.2fn min=%6.2fn average=%6.2fn“,Max,Min,ave);float average(float array,int n)*定义函数,形参为数组*/int;float aver,sum=array;Max=Min=array;for

18、(=;)if(arrayMax)Maxarray;else if(arrayMin)Min array;sum=sum+array;aversum/n;return(aver);,42,用static声明局部变量,当函数中的局部变量的值在函数调用结束后不消失而保留原值时,该变量称为静态局部变量。用关键字static进行声明。,例8.8 输出到的阶乘值#include void main()int fac(int);int;for(;)printf(%!=,fac();Int fac(int)static int;*;return();,外部函数,(1)定义函数时,如果在函数首部的最左端加关键字

19、extern,则表示此函数是外部函数,可供其他文件调用。例如,函数首部可以写为extern int fun(int a,int b),这样,函数fun就可以为其他文件调用。如果在定义函数时省略extern,则隐含为外部函数。,(2)在需要调用此函数的文件中,用extern对函数作声明,表示该函数是在其他文件中定义的外部函数。,例 8.22 有一个若干字符的字符串,今输入一个字符,要求程序将字符串中该字符删去。用外部函数实现。File1.c(文件)#include void main()extern void enter_string(char str);extern void detele_s

20、tring(char str,char ch);extern void print_string(char str);*以上3行声明在本函数中将要调用的在其他文件中定义的3个函数*char c;char str80;scanf(%c,file.(文件)#include void enter_string(char str80)*定义外部函数 enter-string*gets(str);*向字符数组输入字符串*file.(文件)void delete_string(char str,char ch)*定义外部函数 delete_string*int i,j;for(i=j=0;stri!=0;

21、i+)if(stri!=ch)strj+=stri;stri=0;,file.(文件)#include void print_string(char str)printf(%sn,str);,运行情况如下:(输入)(输入要删去的字符)(输出已删去指定字符的字符串),程序举例:用起泡法对10个数排序(由小到大)。,经过第一趟(共5次比较与交换)后,最大的数9已“沉底”。然后进行对余下的前面5个数第二趟比较。,如果有n个数,则要进行n-1趟比较。在第1趟比较中要进行n-1次两两比较,在第j趟比较中要进行n-j次两两比较。,49,程序流程图如下:,程序实例:#include void main()i

22、nt a10;int i,j,t;printf(input 10 numbers:n);for(i=0;i10;i+)scanf(%d,,for(j=0;jai+1)t=ai;ai=ai+1;ai+1=t;printf(the sorted numbers:n);for(i=0;i10;i+)printf(%d,ai);printf(n);/*程序结束*/,程序运行结果如下:input 10 numbers:1 0 4 8 12 65-76 100-45 123the sorted numbers:-76-45 0 1 4 8 12 65 100 123,52,程序举例:用选择法对数组中10个

23、整数按由小到大排序。,所谓选择法就是先将10个数中最小的数与a0对换;再将a1到a9中最小的数与a1对换每比较一轮,找出一个未经排序的数中最小的一个。共比较9轮。,53,未排序时的情况:a0 a1 a2 a3 a4 3 6 1 9 4 将5个数中最小的数1与a0对换:1 6 3 9 4 将余下的4个数中最小的数3与a1对换 1 3 6 9 4 将余下的3个数中最小的数4与a2对换 1 3 4 9 6 将余下的2个数中最小的数6与a3对换 1 3 4 6 9,54,程序:#include void main()void sort(int array,int);int 10,i;printf(en

24、ter the array);for(i=;i10;i+)scanf(,ai);sort(,10);printf(the sorted array);for(i=;i10;i+)printf(,ai);printf();void sort(int array,int)/*排序函数*/int i,j,k,t;for(i=0;in-1;i+);for(j=i+1;jn;j+)if(array array)=;=arrayk;arrayk=arrayi;arrayi=t;,55,程序举例:判断m是否素数。算法思想:让m被2到 除,如果m能被2 之中任何一个整数整除,则提前结束循环,此时i必然小于或等

25、于k(即);如果m不能被2k(即)之间的任一整数整除,则在完成最后一次循环后,i还要加1,因此i=k+1,然后才终止循环。在循环之后判别i的值是否大于或等于k+1,若是,则表明未曾被2k之间任一整数整除过,因此输出“是素数”。,例 判断m是否素数。#include#include void main()int m,i,k;scanf(%d,,运行结果:1717 is a prime number,定义一个指针变量,定义指针变量的一般形式为 基类型*指针变量名;例如:float*pointer_1;char*pointer_2;pointer_;pointer_;,注意:指针在使用前必须被赋值-

26、初始化或在程序中赋值。,59,指向数组元素的指针,例如:int a10;int*;对该指针变量赋值:pa0;或者p=a;用指针访问一维数组的一般形式当指针p指向x数组的首地址时,x数组中下标为i的元素的访问可以用以下几种等价形式:xi,*(x+i),*(p+i),pi同样可以用以下等价形式来表示数组元素的地址:&xi,x+i,p+i,&pi,60,用字符指针指向一个字符串。可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。,例 定义字符指针#include void main()char*string I love China!;printf(%sn,string);,61

27、,结构体类型定义,声明一个结构体类型的一般形式为:struct 结构体名 成员表列;如:struct student int num;char name20;char sex;int age;float score;char addr30;,结构体名,分号,成员名,类型名,62,定义结构体类型变量,先声明结构体类型再定义变量名例如:struct student student1,student2;在定义了结构体变量后,系统会为之分配内存单元。,63,结构体变量的引用,引用结构体变量中成员的方式为 结构体变量名.成员名例如,student1.num表示student1变量中的num成员,即stu

28、dent1的num(学号)项。可以对变量的成员赋值,例如:student1.num=10010;,64,结构体数组的初始化,与其他类型的数组一样,对结构体数组可以初始化。例如:struct studentint num;char name20;char sex;int age;float score;char addr30;stu210101,LiLin,M,18,87.5,103 BeijingRoad,10102,Zhang Fun,M,19,99,130 Shanghai Road;,65,指向结构体类型数据的指针,定义形式:struct student stu_1;struct stu

29、dent*p;p=以下3种形式等价:结构体变量成员名(*)成员名-成员名,66,所谓“文件包含”处理是指一个源文件可以将另外一个源文件的全部内容包含进来,即将另外的文件包含到本文件之中。一般形式为#include“文件名”或#include,67,B,包含,file1.c,file2.c,file1.c,在编译预处理时,要对#include命令进行“包含文件”出理:将file2.c的全部内容复制插入到#include“file2.c”命令处,得到图(c)所示的结果。,(a),(b),(c),68,69,(1)将格式宏做成头文件format.h#include#define PR printf#

30、define NL n#define D%d#define D1 D NL#define D2 D D NL#define D3 D D D NL#define D4 D D D D NL#define S%s,(2)主文件file1.c#include include format.hvoid main()int a,b,c,d;char string=CHINA;a=1;b=2;c=3;d=4;PR(D1,a);PR(D2,a,b);PR(D3,a,b,c);PR(D4,a,b,c,d);PR(S,string);,在编译时并不是作为两个文件联接,而是作为一个源程序编译,得到一个目标(.OBJ)文件。被包含的文件称为“标题文件”或“头部文件”,通常以“.h”为后缀,表示此文件的性质,也可以“.c”为后缀。头文件除了可以包括函数原型和宏定义外,也可以包括结构体类型定义和全局变量定义。在一个被包含文件中又可以包含另一个被包含文件,即文件包含是可以嵌套的。,70,建立和运行包含多个文件的程序的方法,1、选择“文件”“新建”,72,73,2、选择“工程”“添加到工程”“新建”或“文件”3、选择“组建”“组建 project1.exe”4、选择“组建”“执行project1.exe”,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号