欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > PPT文档下载
 

C语言程序设计实用教程.ppt

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

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

C语言程序设计实用教程.ppt

书名:C语言程序设计实用教程 ISBN:7-111-16742-2 作者:陈方 出版社:机械工业出版社 本书配有电子课件,实际处理的数据,常常是一批批的,而不止是一个。比如,10个同学的年龄,它们都是整型数据,仍用前面的定义方法,可用下面语句说明: int age0,age1,age2,age3,age4,age5,age6,age7,age8,age9; 这里写了10个age,比较麻烦。C语言提供了数组的表示方法: int age10; 数组是具有相同数据类型的变量的集合。各元素可独立地作为一个变量被赋值和使用。数组中每个特定元素都用下标来访问。 数组可以是一维的也可以是多维的。,4.1 一维数组 4.1.1 一维数组的定义 一维数组定义的一般形式为: 类型说明符 数组名常量表达式; 例如: int a10; 它表示数组名为a,有10个元素,每个元素都是整型,这10个元素是: a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,说明: (1)数组名定义规则和变量名相同,遵循标识符定义规则。 (2)常量表达式要用方括号“ ”括起来,不能用圆括号(下面用法不对: int a(0);)。 (3)常量表达式表示元素的个数,即数组长度。 (4)常量表达式中包括常量和符号常量,不能包含变量。语言不允许对数组的大小作动态定义。例如,下面这样定义数组是不行的: int n; int an; (5)数组元素的下标从0开始,到(常量表达式1)为止。因此在如上定义的数组中无a10元素。,4.1.2 一维数组元素的引用 数组和其他变量一样必须先定义,后使用。C语言规定除字符数组外,只能逐个引用数组元素,而不能一次引用整个数组。,例4-1 按顺序给数组的10个元素赋值,然后按逆序输出。 程序如下: main( ) int i,a10; for (i=0;i=9;i+) ai= i ; /*顺序给数组元素赋值*/ for (i=9;i=0;i-) printf(“%d“,ai);/*逆序输出数组元素的值*/ 程序运行结果: 9 8 7 6 5 4 3 2 1 0,4.1.3 一维数组的初始化 可以先定义数组,再给它的元素赋值,也可以在定义数组时给它赋值(称为数组的初始化)。对数组元素的初始化可以用以下方法实现: (1)在定义数组时对数组元素赋初值。例如: int a10=0,1,2,3,4,5,6,7,8,9; 将数组元素的初值依次放在一对花括弧内。上面的数组a经过初始化后得: a0=0,a1=1,a2=2,a3=3,a4=4, a5=5,a6=6,a7=7,a8=8,a9=9。 (2)可以只给一部分元素赋值。例如: int a10=0,1,2,3,4; 定义a数组有10个元素,但花括弧只提供5个初值,这表示只给前5个元素赋初值,此时后5个元素值自动赋值为0。 (3)在对全部数组元素赋初值时,可以不指定数组长度。例如: int a5=1,2,3,4,5;可以写成 int a =1,2,3,4,5; 在第2种写法中,花括弧中有五个数,系统就会据此自动定义数组a的长度为5。,例4-2 用数组来处理求Fibonacci数列问题。 main( ) int i,f20=1,1; for(i=2;i20;i+) fi=fi-2+fi-1; for(i=0;i20;i+) if(i%5= =0) printf(“n“);/*每行输出5个数据*/ printf(“%8d“,fi); 程序运行结果: 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765,例4-3 用冒泡法对10个数排序(由小到大)。 冒泡法的思路是:将相邻两个数比较,将小的调到前头。 若有10个数: 7,0,4,8,5,9,6,1,3,2 。先进行第1趟比较,第1次将7和0对调,第2次将第2和第3个数(7和4)对调,如此共进行9次,得到0-4-7-5-8-6-1-3-2-(9)的顺序,可以看到:最大的数9已“沉底”,成为最下面的一个数。经第1趟(共9次比较)后,已得到最大的数9。 然后进行第2趟比较,对前9个数按上法进行比较,经过8次比较,得到0-4-5-7-6-1-3-2-(8-9)的顺序;第3趟比较,得到0-4-5-6-1-3-2-( 7-8-9)的顺序;第4趟比较,得到0-4-5-1-3-2-(6-7-8-9) 的顺序;第5趟比较,得到0-4-1-3-2-(5-6-7-8-9)的顺序;第6趟比较,得到0-1-3-2-(4-5-6-7-8-9)的顺序;第7趟比较,得到0-1-2-(3-4-5-6-7-8-9)的顺序;已得到由小到大的顺序,第8、9趟比较不会改变顺序。共比较九趟,在第1趟中要进行两两比较9次(10-1),第2趟比较8次(10-2)第9趟比较1次(10-9)。可以推知,如果有n个数,只要进行n1趟比较,在第j趟比较中要进行nj次两两比较。,main( ) int i,j,t;,a10= 7,0,4,8,5,9,6,1,3,2; for(i=1;iaj+1) t=aj;aj=aj+1;aj+1=t; for(i=0;i10;i+) printf(“%d ”,ai); /*按已排好的次序输出*/ 程序运行结果: 0 1 2 3 4 5 6 7 8 9,4.2 二维数组 4.2.1 二维数组的定义 二维数组定义的一般形式为 类型说明符 数组名常量表达式1常量表达式2 例如:float a34; 定义a为34(3行4列)的数组。注意:不能写成float a3, 4。 C语言中,二维数组中元素排列的排序是:按行存放,即在内存中先顺序存放第1行的元素,再存放第2行的元素。上面定义的数组元素在内存中的存储顺序是: 第1行:a00 a01 a02 a03 第2行:a10 a11 a12 a13 第3行:a20 a21 a22 a23 注意:C语言中二维数组的行号、列号都是从0开始计数,与人们习惯的记法不同。如上述数组第2行第3列的元素为a12,而不是a23。,4.2.2 二维数组的引用 二维数组的元素的表示形式为: 数组名下标下标 例如:a23 引用时注意: (1)使用数组元素时,注意下标值应在已定义数组大小的范围内。 如数组anm,数组元素由a00到an-1m-1共n*m个。 (2)下标也可以是整型表达式,如a2-12*2-1。 (3)数组元素可以出现在表达式中,也可以被赋值。例如:a12=a23/2。,4.2.3 二维数组的初始化 可以用下面方法对二维数组初始化。 (1)分行给二维数组赋初值。例如: int a34=1,2,3,4,5,6,7,8,9,10,11,12;,这种赋初值方法比较直观,将第1个花括弧内的数据赋给第1行的元素,将第2个花括弧内的数据赋给第2行的元素,即按行赋初值。 (2)将所有数据写在一个花括弧内,按数组排列的顺序对各元素赋初值。例如: int a34=1,2,3,4,5,6,7,8,9,10,11,12; 效果与第1种方法相同,但如果数据多,写成一大片,容易遗漏,也不易检查。第1种方法一行对一行,界限清楚。 (3)可以对部分元素赋初值: 对各行中的某一元素赋初值: 例如:int a34=1,5,9; 初始化后的数组元素如下: 1 0 0 0 5 0 0 0 9 0 0 0 这种方法对非0元素少时比较方便,不必将所有的0都写出来,只需输入少量数据。, 对某几行元素赋初值: int a34=1,5,6; 数组元素为: 1 0 0 0 5 6 0 0 0 0 0 0 (4)第一维的长度可以不指定: 对全部元素赋初值时,定义时第一维的长度不指定,则第二维的长度不能省。 例如: int a 4=1,2,3,4,5,6,7,8,9,10,11,12; 等价于:int a34=1,2,3,4,5,6,7,8,9,10,11,12; 系统会根据数据总个数分配存储空间,一共12个数据,每行4列,可确定为3行。 分行赋初值定义时,可以只对部分元素赋初值而省略第一维的长度。 例如: int a 4=0,0,3, ,0,10;,例4-5 有一个34的矩阵,编程序求出其中值最小的那个元素的值及其所在的行号和列号。 解 先用N-S流程图表示算法,如教材书上图4-2所示。 据此写出以下程序: main( ) int i,j,row=0,colum=0,min; int a 4=1,2,3,4,9,8,7,6,-10,10,-5,2;/*第4种赋值方法*/ min=a00; for(i=0;i=2;i+) /*外循环*/ for(j=0;j=3;j+) /*内循环*/ if(aijmin) min=aij;row=i;colum=j; printf(“min=%d,row=%d,colum=%dn“,min,row,colum); 程序运行结果:min=-10,row=2,colum=0,4.3 字符数组 用来存放字符的数组是字符数组。字符数组中的一个元素存放一个字符。 4.3.1 字符数组的定义 字符数组的定义形式为: char 数组名常量表达式; 例如:char c10; 由于在C语言中字符型和整型可以通用,所以上面的定义又可以写为: int c10; 但一般用类型char定义。,4.3.2 字符数组的初始化 (1)可以在定义字符数组时初始化各元素。 例如:char c10=I, ,a,m, ,h,a,p,p,y;,(2)如果花括弧中提供的初值个数数组长度,则作语法错误处理;如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即0)。 例如: char c6=g,o,o,d ; 此时 c4和c5都为0。 (3)如果初值个数与数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。 例如: char c =g,o,o,d; 数组c的长度自动定为4。 (4)二维字符数组也可以初始化。,4.3.3 字符数组的引用 引用字符数组中的一个元素,可以得到一个字符。 例4-6 输出一个字符串。,程序如下: main( ) char c10=I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(“%c“,ci);/*依次引用字符数组的元素ci*/ printf(“n“); 程序运行结果:I am a boy,4.3.4 字符串和字符串结束标志 字符串的初始化:用字符串常量来初始化字符数组。例如: char c11=“I am happy“;或 char c =“I am happy“; 或 char c11=“I am happy“;或 char c =“I am happy“; 注意:上述数组c包括8个字母、2个空格,但它长度不是10,而是11。因为字符串常量的最后由系统加上一个0。因此字符串初始化时,可以省略字符数组的长度,由系统自动匹配;如果要标出字符数组的长度,则应大于双引号内的实际各种字符的个数。,4.3.5 字符数组的输入输出 用“%c“(char)格式符可以逐个字符输入或输出,用的机会较少;在大多数情况下,我们采用整个字符串输入输出,用“%s“(string)格式符可以实现整个字符串的输入输出。 (1)字符数组的输出 printf(“%s“)函数 可用printf来输出字符,输出字符不包括结束符0。 用“%s“格式符输出字符串时,printf函数中的输出项是字符数组名,而不是数组元素名。下面的写法是不对的: printf (“%s“,c0); 如果数组长度大于字符串实际长度,也只输出到0结束。例如: char c10=“China“; printf(“%s“,c); 也只输出“china”5个字符,而不是输出10个字符。这就是字符串结束标志的好处。 如果一个字符数组中包含一个以上0,则遇到第一个0时输出就结束。,(2)字符数组的输入 scanf(“%s“)函数 输入一个字符串。 例如:定义 char c6; 用scanf函数输入一个字符串:scanf(“%s“,c); 从键盘输入:China 系统自动在后面加一个0结束符。 输入多个字符串:输入时以空格分隔。 例如: char str16,str28,str38; scanf(“%s%s%s“,str1,str2,str3); 输入数据: CHINA HOLLAND AMERICA 输入后str1,str2,str3数组状态为: CHINA0 HOLLAND 0 AMERICA 0,例4-7 输入、输出一个字符串(与例4-6相比较)。 程序如下: main( ) char c10; scanf(“%s“,c); printf(“%s“,c); 程序运行结果: 键盘输入 I am a boy 回车 屏幕显示 I am a boy,4.3.6 字符串处理函数 在C的函数库中提供了一些用来处理字符串的函数,使用方便。下面介绍几种常用的函数。字符串标准函数的原型在头文件string.h中。 1输出字符串 puts()函数 (1)调用方式:puts(字符数组) (2)函数功能:将一个字符串(以0结束的字符序列)输出到终端,并用n取代字符串的结束标志0。用puts()函数输出字符串时,不要求另加换行符。 (3)使用说明 由于可以用printf函数输出多个字符串,而puts函数只能输出一个字符串,因此puts函数用得不多。 用puts函数输出的字符串中可以包含转义字符。例如: char str =“ChinanBeijing“; puts(str); 输出: China Beijing 在输出China后,有转义字符n,即输出完字符串China后换行输出字符串Beijing。,2输入字符串 gets()函数 (1)调用方式:gets(字符数组)。 (2)函数功能:从键盘上读取1个字符串(可以包含空格),并将其存储到字符数组中去。 (3)使用说明 gets()读取的字符串,其长度没有限制,编程者要保证字符数组有足够大的空间,存放输入的字符串。 该函数输入的字符串中允许包含空格,而scanf()函数不允许。 从键盘输入一个字符串到字符数组,得到一个函数值,该函数值是字符数组的起始地址。 用puts和gets函数只能输入或输出一个字符串,不能写成: puts (str1, str2) 或gets (str1, str2) 这是它们与scanf函数和printf函数的区别。,3连接字符串 strcat()函数 (1)调用方式:strcat(字符串1,字符串2)。 (2)函数功能:连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值字符数组1的地址。 (3)使用说明 字符数组1必须足够大,以便容纳连接后的新字符串。下例中定义str1的长度为30,是足够大的,如果在定义时改用: char str1=“Peoples Rebuplic of“; 因长度不够,就会出问题。 连接前两个字符串的后面都有一个0,连接时将字符串1后面的0取消,只在新串最后保留一个0。 例如: char str130=“Peoples Republic of “; char str2 =“China“; printf(“%s“,strcat(str1,str2); 则输出: Peoples Republic of China,4复制字符串 strcpy()函数 (1)调用方式:strcpy(字符数组1,字符串2) 其中,“字符串”可以是串常量,也可以是字符数组。 (2)函数功能:将“字符串”完整地复制到“字符数组”中,字符数组中原有内容被覆盖。 例如: char str110,str2=“China“; strcpy(str1,str2); 执行后,str1的状态为:C h i n a 0 0 0 0 0 (3)使用说明 字符数组1必须定义得足够大,以便容纳被复制的字符串。字符数组1的长度不应小于字符串2的长度。 “字符数组1”必须写成数组名形式(如str1),“字符串2”可以是字符数组名,也可以是一个字符串常量。如 strcpy(str1,“China“) 复制时连同字符串后面的0一起复制到字符数组1中。 不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。 可以用strcpy函数将字符串2前面若干个字符复制到字符数组1中去。例如 strcpy(str1,str2,2); 作用是将str2中前面2个字符复制到str1中去,然后再加一个0。,5字符串比较函数 strcmp( ) (1)调用方式:strcmp(字符串1,字符串2) (2)函数功能:比较两个字符串的大小。字符串比较的规则与其他语言中相同,即对两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同的字符或遇到0为止。如全部字符相同,则认为相等;若出现不相同的字符,则以第一个不相同的字符的比较结果为准。比较的结果由函数值带回。 如果:字符串1=字符串2,函数返回值等于0; 字符串1字符串2,函数返回值正整数。 (3)使用说明 不能使用关系运算符“= =”来比较两个字符串,只能用strcmp()函数来处理。 字符串的比较函数可以用来设置用户程序密码。 例4-8 核对密码。 main( ) char str10; gets(str); if(strcmp(str,“2005-1-1“)= =0) printf(“yes!“);/*输入字符串2005-1-1时正确*/ else exit( );/*输入错误时退出程序,exit( )函数的作用是退出程序*/ ,6求字符串长度 strlen()函数 (1)调用方式:strlen(字符串)。 (2)函数功能:求字符串(常量或字符数组)的实际长度,函数值为字符串中实际长度,不包括0在内。 例如: char str10=“China“; printf (“%d“,strlen(str); 输出结果不是10,也不是6,而是5。 也可以直接测字符串常量的长度,例如: strlen (“China“),7将字符串中大写字母转换成小写字母 strlwr()函数 (1)调用方式:strlwr(字符串)。 (2)函数功能:将字符串中的大写字母转换成小写,其他字符(包括小写字母和非字母字符)不转换。 8将字符串中小写字母转换成大写字母 strupr()函数 (1)调用方式:strupr(字符串)。 (2)函数功能:将字符串中小写字母转换成大写,其他字符(包括大写字母和非字母字符)不转换。,例4-9 输入一行英文单词,单词之间用空格隔开,统计其中有多少个单词。 main( ) char str 81; int i, num=0,word=0; char c; gets(str); for (i=0;(c=str i)!= 0;i+) /*从字符串的第一个字符开始,依次赋给c,至字符串结束为止*/ if (c= = ) word=0; /*当str i为空格符时,word赋值0 */ else if (word= =0) word=1;num+; /*当str i 为单词头一个字母时,word赋值1(原来为0),num加1;当str i 为单词的后续字母时,因word的值是1,不做任何操作,返回去继续循环*/ printf(“There are %d words in the linen“,num); 程序运行结果: 键盘输入 I am a boy 回车 屏幕输出 There are 4 words in the line 程序中变量i作为循环变量,num用来统计单词个数,word作为判别是否单词的标志,word=0表示未出现单词,如出现单词word就置成1。,本 章 小 结 1数组是一个有序数据的集合。数组元素可以是基本数据类型,如数值型或字符型。数组元素的下标从0开始,到(常量表达式1)为止。 2一维数组有两种方法赋值,一是使用scanf()函数,二是在定义数组时给它赋值(数组的初始化)。 3二维数组可以看成是一种特殊的一维数组,这个特殊的一维数组的元素又是一维数组。因此定义的二维数组可以理解为定义了几个一维的数组。C语言的这种处理方法在数组初始化和用指针表示时显得很方便。二维数组初始化用花括号来分行,可以全部赋值,也可部分赋值;第一维的长度可以不指定,但第二维的长度必须指定。 4用来存放字符的数组是字符数组。一般人们关心的是有效字符串的长度而不是字符数组的长度,为此,C语言规定了一个字符串结束标志 0,它是一个“空操作符”,不能显示输出。它的作用就是在程序中依靠检测0来判定字符串是否结束。系统会对字符串常量自动加一个0作为结束符。用格式符“%c”可进行单个字符的输入输出,用格式符“%s”可进行字符串的输入输出。遇到第一个0字符串的输入输出就结束。字符串的处理函数有许多,常用的有连接、复制、比较、测长度、大小写转换等。,

注意事项

本文(C语言程序设计实用教程.ppt)为本站会员(max****ui)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

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




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!