大学C语言程序设计基础第6章_第1页
大学C语言程序设计基础第6章_第2页
大学C语言程序设计基础第6章_第3页
大学C语言程序设计基础第6章_第4页
大学C语言程序设计基础第6章_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第6章 数 组1.概述双精度型(double)结构体类型(struct)共用体类型(union)数 据 类 型整型(int)实型单精度型(float)字符类型(char)数组类型枚举类型(enum)基本类型构造类型指针类型 空类型2.基本数据类型:如整型、实型、字符型。 这些数据又表现为常量、变量。基本数据类型中的数据之间没有任何关联,也没有任何顺序。一堆无序的且没有任何关联的数据是很难处理的。所以,需要把数据变量有序地关联起来。形成构造类型。构造类型:由基本数据型按照一定的规则构成一些复杂的数据类型. 如数组、结构体、共同体等。数组定义: 有序数据(变量)的集合。 数组中的每一个元素都属于

2、同一数据类型; 数组元素用一个统一的数组名和下标来唯一的确定。算法依赖于数据结构,选择合适的数据结构,可以简化算法。 程序=算法+数据结构。3. 6 .1 一维数组的定义和引用1、一维数组的定义: 类型说明符 数组名常量表达式;例如: int a10;表示定义了一个含有10个整型元素、名称为a的一维数组。说明:类型说明符用来说明数组中各个数据元素的类型。在 任何一个数组中,数据元素的类型都是一致的。(2) 数组名的命名规则与变量名相同,遵循标识符命名规 则(以字母或下划线开头,由字母、数字、下划线组 成)。 注意:数组名不仅是一个标识符号,它还是一个地址常量。是数组第一个元素的存储地址。4.

3、int a10;(3) 常量表达式用方括号 括起,不能用圆括 号,如 b(10) 是错误的。(4) 常量表达式表示数组中元素的个数,即数组 的长度。例如,在a10中,10 表示数组中 有10个元素。这10个元素分别是: a0,a1,a2,a3,a4,a5,a6, a7,a8,a9。 注意:下标从0开始,没有a10。5.(5) 常量表达式中必须是由常量或符号常量组成的表达式,不能包含变量。例如, (6) 由于数组元素占有连续的内存单元,因此一维数组中的各个元素按照下标规定的顺序存放在内存中。例如,我们定义了一个整型的一维数组 int a5;那么这个 数组中的每个元素都将占用二个字节。 假定内存地

4、址1000开始存放数组 a: 各元素起始地址: 1000 1002 1004 1006 1008 各数组元素 : a0 a1 a2 a3 a4(7) 定义数组只是为数组预留适当的内存空间,并未给数组元素赋值。int n=10;char namen; # define M 10char textM*2+16.7定义的作用:系统为数组开辟相应的内存空间数组a在内存中是如何存放的呢?aa 0a 1a 2a 3a 4a 5a 6a 7a 8a 9例:int a10 ; 各元素在内存中连续存放 数组名代表首地址7.2.一维数组元素的引用 引用 就是读出数组中某一元素的值或将数椐赋给某一数组元素。 定义了

5、一个数组以后,怎么引用数组中的元素呢?C语言规定只能一个一个地引用数组元素而不能整体引 用数组名。引用的一般形式: 数组名下标使用说明: 先定义数组,再引用数组元素。 用指定的下标来引用数组中的元素。 下标可以是表达式。例如: x3=b11+b10; i=2; a=xi+2;8. 一个数组含有 n 个元素,那么下标的取值范围为 0,n-1。引用数组元素时,注意下标值不要超出数组范围。例如:通过循环控制数组元素下标的变化,达到输入10个数 的目的。Int a10; for(i=0;i=10;i+) scanf(%d,&ai);应该在数组定义范围内操作:#include void main()in

6、t i,a10; for(i=0;i=9;i+) ai=i; for(i=0;i=9;i+) printf(“%3d”,ai);下标超界9.例: 从键盘输入10个字符,再反序输出。程序如下:#include stdio.h void main()char ch10; /*定义字符数组C,它含有10个字符*/ int i; for(i=0;i=0;i-) /*反序输出*/ printf(%c,chi); putchar(n); getch(); (演示)10.3. 一维数组的初始化 定义数组只是为数组元素分配了存储空间。其值是不确定的。因此,在引用数组元素前,还必须给下标变量赋值。 还可以在定义

7、数组的同时给数组赋初值,这称为:数组的初始化。形式如下: 类型说明符数组名长度数值表;使用说明:对数组的初始化操作只能在定义数组时进行,大括号中的内容即为 数组的初值,各项用逗号隔开。 例如,int X10=0,1,2,3,4,5,6,7,8,9;定义了一个含有10个整型元素的数组。X0=0、x1=1、x2=2(2) 可以只给部分数组元素赋初值。 例如,int a4=1,2; 定义了一个含有4个整型元素的数组。但只对前2个元素a0,a1赋初值,其余的元素系统将自动赋值为0。11.(3) 如果想将数组中的所有元素全部赋为0时,可以写成: int a10=0,0,0,0,0,0,0,0,0,0;也

8、可以这样写:int a10=0; 虽然只给第0个元素赋初值,但系统会自动将剩余的数组元素赋值 0。 不能这样写:int a10=0*10;在C语言中不能给数组整体赋初值。(4) 对全部数组元素赋初值时,可以不指定数组的大小。 int a=1,2,3,4,5; 省略数组的大小后,系统能够根据初值的个数自动定义决定数组的长度为 5。 因此这个数组定义语句相当于: int a5=1,2,3,4,5;12.例1: 键盘输入10数,输出其中最小的数。 用数组a10存放10个数,通过循环控制数组元素的下标读入。第1个数a0作为比较的目标。从第二个数a1开始直到a9 ,每一个数与min进行比较。如果大于mi

9、n,则放弃此数并读入下一个数,否则将此小数赋值给min。通过次比较后,min就是最小数。-打擂台法#include void main() int i,a10,min; printf(input 10 number:); for(i=0;i=9;i+) scanf(%d,&ai); min=a0; for(i=1;iai) min=ai; printf(nmin= %d,min); (演示)13.14例2:求Fibonacci数列:1,1,2,3,5,8,的前20个数. 公式为: F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n=3)#include void mai

10、n() 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); printf(%10d,fi); printf(n); 算法简单,占内存多#include main() int f1,f2,f3,i; f1=1;f2=1; printf(“%10d%10dn” ,f1,f2 ); for(i=1;i=18;i+) f3=f1+f2; printf(“%10d”,f3); if(i%2=0)printf(“n”); f1=f2; f2=f3; 14.15例3:用冒泡法对n个数排序。 (由小

11、到大)思想: 让大数逐步“沉入”数组的底部,让小数象气泡似的“冒起”到数组的顶点。做法:将相邻两个数比较,将小的调到前头。以五个数为例数组a1a2a3a4a5数组的初始状态823165947第一轮比较结果318265829824782第二轮比较结果3165965476582第三轮比较结果931476582第四轮比较结果931476582826547931第1轮:共进行4小次两两比较,最大的数向后移到了a5(最后)第2轮:只对前4个数进行3次两两比较,挑出这4个数中最大的一个,放到a4(次后)第3轮:只对前3个数进行2次两两比较,挑出这3个数中最大的一个,放到a3第4轮:只对前2个数进行1次两两

12、比较,挑出这2个数中最大的一个,放到a215.16比较的轮数:n-1第i轮比较的次数:j=n-i# define N 5main( ) int aN+1, k, i, j, temp; printf(input %d number:n,N); for(k=1;k=N;k+) scanf(%d,&ak); for(i=1;i=N-1;i+) for(j=1;jaj+1) temp=aj; aj=aj+1; aj+1=temp; for(k=1;ka2 j=2: a2a3 j=3: a3a4 j=4: a4a5i=2: j=1: a1a2 j=2: a2a3 j=3: a3a4 i=3: j=1:

13、 a1a2 j=2: a2a3i=4: j=1: a1a2双重循环执行过程16.6.2 二维数组的定义和引用 到目前为止,我们问题分析的还只是一维数组。如果需要描述类似矩阵这样的数据,该如何实现呢?考虑一个3*4的矩阵M: 0 1 2 3 4 5 6 7 8 9 11 12Mi,j 指的是第i行第j列的元素,其中i 的范围是1-3,j 的范围 是1-4。例如,M3,2指的是第3行第2列的元素,其值为9。 在C语言中对类似矩阵这样的数据可以用一个二维数组来表示。C语言允许使用多维数组,二维数组是最简单的多维数组。17.一、 二维数组的定义二维数组的定义形式 类型说明符 数组名常量表达式 常量表达

14、式;其中: 类型说明符用来说明数组中各个数据元素的类型。 第1个常量表达式说明了这个数组有几行。第2个常量表达式说明了每行有几个元素,或说明了几列。数组元素的个数是两个常量表达式的乘积。例如: int a34; 表示定义一个二维数组a,它有3行4列,共12个元素,其中每个元素为整型。18.可以将二维数组 a 看成由 3 个一维数组组成,一维数组名分别是: a0、a1、a2; 每个一维数组中又含有4个元素,例如第一个一维数组a0的各个元素表示为: a00、a01、a02、a03。整个a数组可以描述成如下形式:这种对二维数组的描述方式对第10章学习用指针处理数组时将非常有用。 19.2) 二维数组

15、的存储C语言规定,二维数组中的元素排列的顺序是按行优先,即存储时先存放第一行的数据,再存放第二行的数据,以此类推。例如,二维数组a34在内存中的存放顺序为: a00a01a02a10a11a12a20a21a22。20.21a00a01a02a03a10a11a12a13a20a21a22a23a或a0 a1a2 二维数组a在内存中存放形式二维数组是按行存放的。 即:先存放第一行的元素; 再存放第二行的元素; .。21.二、 二维数组元素的引用 定义数组,引用元素。 引用格式为: 数组名下标下标 例如: int a22 共定义了4个元素,分别为: a00,a01,a10,a11二维数组的引用使

16、用两个下标。另外要注意: int a45; 定义数组 b=a34; 引用元素,将元素a34赋值给变量 b。 ?能用 b=a45给变量赋值吗? 22.三、二维数组的初始化二维数组初始化的方法有以下几种方法: 将所有的数值顺序列在一对大括号中: int a34=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; (比较直观,) 可以只给每行的前面部分数组元素赋初值。 int a34=1,4,3,1,2; 这种赋值方式相

17、当于: int a34=1,0,0,0,4,3,0,0,1,2,0,0; (系统自动将没有赋值的元素赋0。)23. 可以对各行的某一元素赋初值。 int a34=1,0,6,0,0,11; 这种赋值方式相当于: int a34=1,0,0,0,0,6,0,0,0,0,11,0; 可以只对部分行赋初值。 int a34=1,1;这种赋值方式相当于: int a34=1,0,0,0,0,0,0,0,1,0,0,0;24. 如果将数组的所有元素全部赋值的话,在定义数组时可以省略第一维的长度,但注意第二维的长度不能省略。如: int a 4=1,2,3,4,5,6,7,8,9,10,11,12; 一共

18、定义了12个数据,系统会根据总个数自动确定第一维的长度(数据总数除以第二维的长度)。 这种赋值方式相当于: int a34=1,2,3,4,5,6,7,8,9,10,11,12;也可以在对部分数组元素赋初值时省略第一维的长度。 int a 4=1,1;因为有3个逗号分隔的大括号,所以第一维的长度就是3。25.四、二维数组程序举例例: 输出一个矩阵的转置矩阵。 数组a: 2 4 5 换成 数组b: 2 3 3 7 8 4 7 5 8#includevoid main()int a23=2,4,5,3,7,8; int b32,i,j;printf(array a:n);for(i=0;i=1;i

19、+) for(j=0;j=2;j+) printf(%5d,aij); bji=aij; printf(n); (演示)printf(array b:n);for(i=0;i=2;i+) for(j=0;jmax,把aij作为 新的临时最大值,并记录下其行下标 I 和列 j 。当全部元素比较完 后,max是整个矩阵全部元素的最大值。下面给出程序。#includevoid main()int i,j,row=0,colum=0,max; int a34=1,2,3,4,9,8,7,6,-10,10,-5,2; max=a00; for(i=0;i=2;i+) /* 用二重循环遍历全部元素 */

20、for(j=0;jmax ) max=aij;row=i;colum=j; printf(max=%d, row=%d, colum=%dn,max,row,colum); 运行结果:max=10, row=2, colum=1 (演示)27.例:输入6个学生、每人5门课的成绩,统计每个学生的总成绩。#includevoid main() int s65,sum6,i,j; printf(“please input 5 score :n”); for(i=0;i6;i+) printf(“%-4d:”,i+1); for(j=0;j5;j+) sacnf(“%d”,&sij; for(i=0;

21、i6;i+) sumi=0; for(j=0;j5;j+) sumi+=sij); for(j=0;j6;j+) printf(“student%-4d %-6.2f”, j+1,sumj); 如何统计每门课的平均成绩?另定义一个 sum15for (j=0;j5;j+) sum1j=0; for(i=0;i6;i+) sum1j+=sij;for(i=0;i5;i+) printf(“subject:%-4d %-6.2f”,i+1 ,sumj);28.例打印出以下的杨辉三角形(要求打印出10行)。11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1问题分析 这是一个

22、10*10的矩阵,该矩阵的特点是对角线上方的元素全 为0,是一个下三角矩阵。杨辉三角形各行系数有如下规律:(1)各行第一个数都是1。(ai1=1)(2)各行最后一个数都是1。(aii=1) (3) 从第3行起,其余各数是上一行同列和前一列两个数 之和。 aij=ai-1j+ai-1j-1,(其中i为行数j为列数。)29.例#include #define N 11void main() int i,j,aNN; for(i=1;iN;i+) aii=1; ai1=1; for(i=3;iN;i+) for(j=2;j=i-1;j+) aij=ai-1j-1+ai-1j; (演示)for(i=1

23、;iN;i+) for(j=1;j=i;j+) printf(%5d,aij); printf(n); printf(n); 30. 6.3 字符串与字符数组在前面的学习中,我们学习了整型、实型、字符型变量,没有见到字符串变量,C语言中字符串存放在何处呢?原来 C语言用一维字符型数组来存放字符串。 字符数组就是字符串变量,字符数组的每一个元素(下标变量)存放一个字符。一、字符串常量 所谓字符串常量就是用双引号括起来的字符组合。例如, I am a boy “ 就是一个字符串。 字符串在内存中存放时,系统会在字符串结束处自动 加上字符串结束标志 0。(ASCII码为0)。 系统通过字符串结束标志

24、0,判断字符串是否结束,并得 到字符串的长度。31.二、字符数组的定义字符数组用来存放字符串,字符数组的说明形式如下:char 数组名常量表达式 常量表达式 ;例如: char a3; a0=Y;a1=O;a2=U;这里定义a为字符数组,包含3个元素。 我们知道,系统是用字符对应的ASCII码来处理字符的,于是字符和0255间的整数是等价的。他们可以通用。但有区别: char c10; /* 在内存中占10字节 */ int c10; /* 在内存中占20字节 */32.三、字符数组的初始化(1) 逐个元素初始化。比如: char c10=I, ,a,m, ,h,a,p,p,y; 这里把10个

25、字符分别赋给c0到c910个元素。(2) 初始化数据少于数组长度,多余元素自动为“空”。 比如: char c12= I , ,a,m, ,h,a,p,p,y;在这个初始化语句中,共写了10个字符(含空格),还有2个数组元素我们没有给出初值,根据前面所讲的,对没有给出初值的数组元素,系统自动对它们赋值0(或0)。这样上面这个数组初始化完毕后,如下所示:a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 I a m h a p p y 0 033.(3) 如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会根据初值个数确定数组长度。 char c =

26、I , ,a,m, ,h,a,p,p,y,0; (4) 初始化字符数组时,也可以写成如下形式: char a=I am happy;还可以写成如下形式,这种形式 最符合我们的习惯: char c =I am happy; 等价于:char c=I, ,a,m, ,h,a,p,p,y,0;系统自动在字符串尾加上一个:0 此0不需要人为书写。但是输出时不显示这个0. 程序是依据标志来0来确定字符串是否结束及其长度。 所以,数组 c 在内存中的长度是11,而不是10。应人工加上0此处可以不加034.在不确定字符数组长度情况下,逐个字符赋值要注意:例#include void main()int i,

27、j; char c=I am happy; char d=I, ,a,m, ,h,a,p,p,y; puts(c); puts(d); i=sizeof(c);j=sizeof(d); printf(%d %dn,i,j);运行结果: I am happy I am happy #$. 10 11 如何解决? (应加上尾标志0) 演示35.四、字符数组的输入输出 C语言提供了两组实现字符串输入输出操作的函数。一组是格式输入 scanf(), 格式输出函数printf()一组是键盘输入 gets (数组名), 屏幕输出 puts (数组名)。1、 使用格式函数输入输出将字符数组逐个字符输入输出(

28、格式符“%c” )。将整个字符串的内容一次输入输出(格式符“%s”) 。 (1) 采用 格式符%c逐个字符输入输出, .void main()char c10=I, ,a,m, ,a, ,b,o,y; int i; for(i=0;i10;i+) printf(%c,ci); printf(n); getch(); 运行结果: I am a boy 36.(2) 采用格式符%s将整个字符串一次输入输出, .#include stdio.h void main()char c10 ; scanf(%s,c); printf(%sn,c); 输入:china 输出:china其中, scanf(“

29、%s”, c); 表示将键盘输入的内容按字符串的方式送到数组 c 中。这里注意在数组名 c 前不要加引用符号&,因为 数组名就是数组的首地址。37.对于printf( )输出字符串应注意: 不输出字符串结束符号0 输出项只能是数组名,不能是具体的数组元素。 printf(“% s”,c2);是错误的。 数组定义长度大于实际长度时,输出到0符为止。如: char c10=”china”; printf(“%s”,c); 只输出 china38. 对于用scanf() 输入字符串应注意: 输入的数组名此前应定义。 数组名前不要加取地址符号 & ,数组名就是数组的地址。 键入的串长度应小于定义的长度

30、。 利用一个scanf( )函数输入多个串时,各个串之间用 空格 分隔。 如:char c15,c25,c35; scanf(“%s%s%s”,c1,c2,c3); 可输入数据: How are you?当遇到分隔符时就认为字符串输入完毕, 同时将分隔符前 面的字符以及字符串结束字符0一并存入数组中。如: char c15 scanf(“%s”,c); 若输入:How are you? 则字符串C中只能得到 How,余下的位置填0 39.2、使用 gets(数组名)和puts(数组名)输入和输出 字符串输出函数 形式:puts(字符数组或字符串) 功能:将一个字符串输出到屏幕上,同时将字符串结

31、束标志0换成 n ,即输出完字符串后换行。例J7-9:#include void main( )static char a1 = chinanbeijing; static char a2 = china0beijing; puts(a1); puts(a2); puts(WUHAN);getch(); 运行结果: china beijing china WUHAN (演示)40. 字符串输入函数 从键盘输入一个字符串到字符数组保存,字符数组名就是保存的地址。形式:gets (字符数组)功能:从键盘输入一个字符串到字符数组。在输入过程中,遇“”回 车符结束,并将其转换为0存入字符串尾部, 特殊

32、地:对输入的空格可作为字符串的一个字符存入字符型数组中。例J7-10: 用gets和scanf 函数分别输入字符串,#includevoid main( )char a115, a215 ; gets(a1); scanf(%s,a2); printf (a1=%sn,a1); printf (a2=%sn,a2); 输入:china beijing china beijing 输出:a1=china beijing a2=china41.五、字符串处理函数 除了输入输出字符串函数外,在C语言的函数库中还提供了一些专门的字符串处理函数。这些函数是: 字符串连接函数: strcat字符串拷贝函数

33、: strcpy 字符串比较函数: strcmp求字符串长度函数: strlen 大小写字母转换函数: strlwr 和 strupr 同样:在使用这些库函数前必须在文件开始处用: include命令将相关的头文件包含到源程序中。42. 字符串连接函数形式:strcat (字符数组1,字符数组2)功能:连接两个数组中的字符串。把字符数组2中的内容(串2)连接到字符数组1的后面,结果存放到字符数组1中,strcat 函数值得到字符数组1的地址。例: (演示)#includevoid main( ) char a11=I ; char b11=am a boy; printf(%sn, strca

34、t(a,b); printf(%dn,sizeof(a); getch(); 执行结果如下: I am a boy 1143.说明:函数应有两个参数,参数1变量是字符数组名,但字符 数组也可以是字符串。(2) 定义字符数组1 时必须考虑有容纳两个字符串的空间。(3) 连接后字符串中原有的0被字符串的第一个字 符替代,新串中保留了字符串中的0,作为新串 的结束标志。 如: char str130=World“; str212=“ Cup; printf(%sn,strcat (str1,str2); 执行结果为:World Cup44.字符串拷贝函数形式:strcpy(字符数组1,字符数组2)功

35、能:将字符串2(也可以是字符数组2的部分内容)拷贝到 字符数组1中,字符数组1中原来的内容被覆盖。例: (演示)#include void main( )char a18, a2 = china, a3 = wuhan ; strcpy(a1,a2); strcpy(a2,a3); strcpy(a3, hubei); printf(a1=%sna2=%sna3=%sn, a1,a2,a3); getch(); 运行结果: a1=china a2=wuhan a3=hubei45.说明:(1) “字符数组1”必须写成数组名的形式,“字符数组2”可以是字符数组名,也可以是一个字符串。(2) 拷贝

36、时连同字符串后面的0一起拷贝到字符数组1中。(3) 字符串拷贝不能用赋值语句,如: a1=a2;是非法的操作。(4) 注意字符数组1要足够大,以放下字符数组2中的字符串。(5)可以只将字符串数组2的部分内容拷贝到字符串数组1中。 如:strcpy(str1,str2,3); 将str2中前3个字符复制到str1中。46. 字符串比较函数形式:strcmp (字符串1,字符串2)功能:比较两个字符串,比较时按AscII码值从左向右逐个比较,直到出现不同字符或遇到0为止。比较的结果由函数值带回:(1) 如字符串1等于字符串2,返回函数值为0。(2) 如字符串1大于字符串2,返回函数值为正数,其值是

37、ASCII码的差值。(3) 如字符串1小于字符串2,返回函数值为负数,其值也是ASCII 码的差值。不能这样比较二个字符串: if(str1= =str2) printf(“yes”); 只能用: if(strcmp(str1,str2)= =0) printf(“yes”);47.例如: i=strcmp(“chinese”, “china”);不相等返回 e的ASCII码 a的ASCII码 =101 97 =448.例 (演示)#include#include void main( )int i,j,k; char a1 =wuhan,a2 =beijing; i=strcmp(a1,a2

38、);j=strcmp(china,korea); k=strcmp(a2, beijing); printf(i=%dnj=%dnk=%dn,i,j,k); TC 编译,运行结果: i=21 J=- 8 k=0 VC+系统编译,结果: i=1 J=-1 K=049.注意:(1) 两个字符串不能直接比较if(str1= =str2) printf(“yesn”);是错误的; 只能是:if(strcmp(str1,str2)= =0)printf(“yesn”)(2) 可对字符串中部分字符进行比较:strcmp(str1,str2,n) 比较str1与str2的前n个字符. 如:strcmp(st

39、r1,str2,3);50.求字符串实际长度函数形式:strlen(字符数组)功能:检测字符串长度,函数返回字符串中实际字符的个 数,不包括0 ;例: (演示)#include void main( ) char a110= china; printf(%dn,strlen(a1); printf(%dn,strlen(beijing0wuhan); getch(); 运行结果:5 7 51. 大小写字母转换函数strlwr(字符串);将字符串大写字母转换成小写。Strupr(字符串);将字符串小写字母转换成大写。 如:strlwr(“ABCD) 结果为:abcd strupr(“AbCd”)

40、 结果为: ABCD 52.七、字符数组应用举例例: 输入三个字符串,并找出其中最大者。(演示)#include string.h void main()char string20; char str320; int i; for(i=0;i0) strcpy(string,str0); else strcpy(string,str1); if (strcmp(str2,string)0) strcpy(string,str2); printf(nthe largest string is: n%sn,string); getch();输入:china 输出:the largest strin

41、g is: beijing ren ren 53.例:输入一串以句号为结束标志的字母,再反序打印这些字母。#include void main()char s101,ch;int i=0,j; do scanf(“%c”,&ch); if(ch=a)&(ch=A)&(ch=0;j- -) printf(“%c”,sj); getch();退出do while循环后 i 的值是多少?54.例:将一批国家名按从小到大排序。 (演示)#include void main()char str1120=japen,canada,australia,china,korea,england,france,a

42、merican,india,russia, ; int i,j; for(i=0;i9;i+) for(j=i+1;j0) /*stri和strj表示二维数组中的行*/ strcpy(str10,stri);strcpy(stri,strj); strcpy(strj,str10); for(j=0;j10;j+) puts(strj); getch(); 55.例 简单密码检测程序 (略)#include#include /*包含clrscr()函数原形*/#include /*包含exit()函数原形*/ void main() char pass_str80; /*定义字符数组passstr*/ int i=0; while(1) clrscr(); /*清除屏幕,光标到左上角*/ printf(请输入密码n); gets(pass_str); /*输入密码*/if(strcmp(pass_str,“password”)!=0) /*口令错*/ printf(口令错误,按任意键继续); else break; /*输入正确,中止循环*/ getch(); i+; if(i=3) exit(0); /*输入三次错误的密码,正常退出程序*/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论