《C程数组实用教案》由会员分享,可在线阅读,更多相关《C程数组实用教案(76页珍藏版)》请在金锄头文库上搜索。
1、引例:引例:输入输入(shr)30(shr)30个学生的成绩,求高于平均个学生的成绩,求高于平均成绩的人数。成绩的人数。main() int i,x; float sum=0,ave; for(i=1;i=30;i+) scanf(%d,&x); sum+=x; ave=sum/30; printf(aver=%fn,ave);将30个人的成绩逐一与ave比较(bjio),大于ave计数。(循环处理)如何保存30个成绩?第1页/共75页第一页,共76页。第第5 5章章 数组数组5.1 一维数组5.2 二维数组5.3 字符(z f)型数据5.4 算法举例第3页/共75页第三页,共76页。l定义:
2、批量数据的集合l特点:所有数据类型相同l要素(yos):数组名、下标第4页/共75页第四页,共76页。5.1 5.1 一维数组一维数组一、一维数组的定义和引用定义:类型(lixng)说明符数组名数组长度如:inta10,x5*3;0 01 12 23 34 45 56 67 78 89 9aa0 a2 a4 a6 a8 a1 a3 a5 a7 a9int n; scanf(“%d”, &n);int an;l引用方式引用方式(fngsh):数组名:数组名下标下标l注意:命名规则(guz)、数组长度、下标 、空间分配整型表达式整型表达式整数或整型常量表达式第5页/共75页第五页,共76页。5.1
3、 5.1 一维数组一维数组二、一维数组元素(yun s)的赋值1. 初始化:定义同时赋值;2. 数组元素的输入:scanf函数输入;3. 数组元素的赋值:使用赋值运算(yn sun);4. 产生随机数:使用随机函数random。第6页/共75页第六页,共76页。5.1 5.1 一维数组一维数组1、初始化在定义数组时,对全部数组元素赋初值。inta5=6,2,7,-3,5;只给一部分元素赋值。inta5=6,2;inta5=6,2,0,0,0;定义数组时使数组a中全部元素自动(zdng)赋以0值。staticinta5;inta5=0;对全部数组元素赋初值时,可以不指定数组长度。inta3=1,
4、2,3;inta=1,2,3;等价等价等价第7页/共75页第七页,共76页。随机函数random的用法: 格式: random(x) 说明: (1) x为整型 (2) 头文件stdlib.h (3) 产生0, x) 区间上的整数。注意: 若需每次运行时产生不同(b tn)的随机整数,用randomize()函数,所在头文件:time.h产生产生a,ba,b区间区间(q jin)(q jin)上任意整数的方上任意整数的方法:法: random(b-a+1)+a random(b-a+1)+a2、 随机(su j)函数random和rand第8页/共75页第八页,共76页。rand函数的用法:格式
5、: rand ( )说明: (1) 头文件stdlib.h。 (2) 该函数产生(chnshng)0到整型最大值之间的一个随机整数。产生a,b区间上任意(rny)整数的方法: rand( )%(b-a+1)+asrand函数 (头文件time.h) srand(time(0) 用当前时间(shjin)作为随机数的初始种子第9页/共75页第九页,共76页。main( ) int i, a5=1,2,3,4,5; for (i=0; i5; i+) printf(%5d, ai ); printf(n); 例5-1 数组元素(yun s)的引用。int i, a5; for (i=0; i5; i
6、+) scanf(%d, &ai);ai=i+1;ai=random(20);#include第10页/共75页第十页,共76页。例:用数组求Fibonacci数列(shli)前40项. main( ) int i; long f40=1,1; for(i=2;i40;i+) fi=fi-2+fi-1; for(i=0;i40;i+) if(i%5=0) printf(n); printf(%12ld,fi); 第11页/共75页第十一页,共76页。例5-2 求10个学生(xu sheng)成绩的最高分、最低分和平均分。#include stdio.hmain( ) int i, a10, m
7、in, max; float av, s; for(i=0;i=9;i+) scanf(%d,&ai); max=min=a0; s=a0; for(i=1;i10;i+) if(aimax) max=ai; s+=ai; av=s/10; printf(max=%d,min=%d,av=%.2f, max,min,av); 运行输入(shr):63 88 89 90 66 73 61 92 72 78 运行结果:max=92,min=61,av=77.20第12页/共75页第十二页,共76页。例5-3:求10个数的最小值及其位置,并与第1个数对调(dudio)。(最小值唯一)分析:分析: 用
8、数组用数组a存放存放10个数据,个数据,int a10; 用用k记录最小值的位置记录最小值的位置(wi zhi)。 交换交换a0与与ak的值。的值。12-1437 276231-3665-2-31k=0 k=1k=6k=1k=1k=1k=1k=6k=6k=6a0a1a2a3a4a5a6a7a8a9第13页/共75页第十三页,共76页。例5-3:求10个数的最小值及其位置,并与第1个数对调(dudio)。(最小值唯一)main( ) int i, k, a10, t; for(i=0;i10;i+) scanf(%d,&ai); k=0; for(i=1;i10;i+) if(aiak) k=i
9、; if(k!=0) t=a0; a0=ak; ak=t; printf(min :%dn,a0); printf(“weizhi:%dn, k); 4 6 8 9 0 12 3 45 1 5min :0weizhi:4第14页/共75页第十四页,共76页。例5-45-4:产生1010个40,10040,100内的随机数,并用选择排序法按由小到大的顺序(shnx)(shnx)排序后输出。59376k=0k=25339576k=3k=1k=2593597635679k=2k=3k=4967思路:在ai和a9中找出最小的数,记录( jl)最小数所在的下标位置k,然后将最小数与ai交换。第 i 轮:
10、k=i; k=i; for (j=i+1;jN;j+)for (j=i+1;jaj) if (akaj) k=j; k=j; if (k!=i)if (k!=i) t=ai;ai=ak;ak=t; t=ai;ai=ak;ak=t; 第第0轮轮第第1轮轮第第2轮轮第第3轮轮第15页/共75页第十五页,共76页。#include stdlib.hmain() int i, j, k, t, a10; for(i=0;i10;i+) ai=rand()%61+40; printf(%5d,ai); printf(n); for(i=0;i9;i+) k=i; for(j=i+1;jaj) k=j;
11、if (k!=i) t=ai; ai=ak; ak=t; for(i=0;i10;i+) printf(%5d,ai);例5-4:产生10个40,100内的随机数,并用选择排序(pix)法按由小到大的顺序排序(pix)后输出。第16页/共75页第十六页,共76页。例5-55-5:用顺序(shnx)(shnx)排序法对1010个数按升序排序。57362第第0轮轮53322756323765235765735675667第第1轮轮第第2轮轮第第3轮轮思路: 假设ai最小,发现(fxin)其后面的数比ai小,就将这两个数交换。第 i 轮:for (j=i+1; jn; j+) for (j=i+1;
12、 jn; j+) if (if (ajaiajai) ) t=ai; t=ai; ai=aj; ai=aj; aj=t; aj=t; 第17页/共75页第十七页,共76页。例5-55-5:用顺序(shnx)(shnx)排序法对1010个数按升序排序。#include stdlib.hmain( ) int i, j, k, a10; for(i=0;i10;i+) ai= rand()%61+40; printf(%5d,ai); printf(n); for(i=0;i9;i+) for(j=i+1;j10;j+) if(ajai) k=ai; ai=aj; aj=k; for(i=0;i1
13、0;i+) printf(%5d,ai);第18页/共75页第十八页,共76页。 main( ) int a =1,3,5,6,8,9,10,15, k, left, right, m, n=8; scanf(%d,&k); left=0; right=n-1; while(left=right) m=(left+right)/2; if(k=am) printf (%d,m); break; else if(kright) printf(no found!); 例5-6: 用二分查找法判断(pndun)一个数是否在一个有序数组中。第19页/共75页第十九页,共76页。例: : 用random
14、random函数产生n n个10,5010,50之间的随机(su j)(su j)整数,并按逆序重放在数组中。(n50)(n50) #includetime.h #includestdlib.h main( ) int a50, t, n, i; scanf(%d, &n); srand(time(0); for(i=0;in;i+) ai=rand()%41+10; printf(%5d,ai); printf(n); 逆序存放(cnfng)a数组元素 第20页/共75页第二十页,共76页。1 12 23 34 45 56 67 78 89 90 0a数组处理过程:数组处理过程:0 09 9
15、8 87 76 65 54 43 32 21 1a0a1a2a3a4a5a6a7a8a9a0a1a2a3a4a5a6a7a8a9算法算法(sun f): for(i=0;in/2;i+) t=ai; ai=an-1-i; an-1-i=t; 第21页/共75页第二十一页,共76页。例: : 用randomrandom函数产生(chnshng)n(chnshng)n个10,5010,50之间的随机整数,并按逆序重放在数组中。(n50)(n50) #include “time.h” #include stdlib.h main( ) int a50, t, n, i; scanf(%d, &n);
16、 srand(time(0); for(i=0;in;i+) ai=rand()%41+10; printf(%5d,ai); printf(n); for(i=0;in/2;i+) t=ai; ai=an-1-i; an-1-i=t; for(i=0;in;i+) printf(%5d,ai); 第22页/共75页第二十二页,共76页。 main( ) int i, j, t, a8=1,2,3,4,5,6,7,8; for(i=0;i=7;i+) printf(%3d,ai); printf(n); for(i=1;i=3;i+) t=a0; for( j=1;j=7;j+) aj-1=a
17、j; a7=t; for( i=0;i=7;i+) printf(%3d,ai);数据(shj)前移例例: : 一个数组有一个数组有8 8个元素:个元素:1 2 3 4 5 6 7 81 2 3 4 5 6 7 8不增加不增加(zngji)(zngji)数组,通过移动元素将数组变化为数组,通过移动元素将数组变化为4 5 6 7 8 1 2 34 5 6 7 8 1 2 3第23页/共75页第二十三页,共76页。例: : 用随机函数(hnsh)(hnsh)产生2020个10,9010,90之间的整数,找出其中素数,并按由小到大顺序排列。#include “stdlib.h”main( ) int
18、 a20, b20, i, j, k=0, t; for(i=0;i20;i+) ai= rand()%81+10; printf(%5d,ai); printf(n); for(i=0;i20;i+) for( j=2;j=ai-1;j+) if(ai%j=0) break; if(j=ai) bk=ai; k+; 将数组 a 中的素数(s sh)找出放到数组b中第24页/共75页第二十四页,共76页。例: : 用随机函数(hnsh)(hnsh)产生2020个10,9010,90之间的整数,找出其中素数,并按由小到大顺序排列。for(i=0;ik-1;i+) for(j=i+1;jk;j+)
19、 if(bjbi) t=bi; bi=bj; bj=t; for(i=0;ik;i+) printf(%5d,bi);用顺序(shnx)排序法使 b 数组升序第25页/共75页第二十五页,共76页。例: 输入(shr)n个数到数组中(n最多为100),选出所有大于n个数的平均值的那些数。1. int a100;2. 输入n个数据(shj)并求这n个数据(shj)的累加和。3. 求n个数据(shj)的平均值。4. 选出所有大于平均值的那些数。 第26页/共75页第二十六页,共76页。 main( ) int a100, s=0, av, i, n; scanf(%d,&n); for(i=0;
20、in; i+) scanf(%d ,&ai); s=s+ai; av=s/n; printf(av=%dn,av); for(i=0; iav) printf(%6d,ai); printf(n); 例: 输入(shr)n个数到数组中(n最多为100),选出所有大于n个数的平均值的那些数。第27页/共75页第二十七页,共76页。l定义l类型说明符数组名常量表达式常量表达式l例:inta23l说明l二维数组看作是特殊的一维数组。la0a00a01a02la1a10a11a12l二维数组在内存(nicn)中按行存放。5.2二维数组 a00 a02 a11 a01 a10 a12 第28页/共75页
21、第二十八页,共76页。5.2二维数组l引用(ynyng)形式l数组名下标下标l举例:l若有说明:inta34l则对a数组元素非法引用(ynyng)的是lA.a03*1B.a23lC.a1+10D.a04D第29页/共75页第二十九页,共76页。5.2二维数组l初始化l对全部元素(yuns)赋初值linta33=1,2,3,4,5,6,7,8,9;linta33=1,2,3,4,5,6,7,8,9;linta3=1,2,3,4,5,6,7,8,9;l对部分元素(yuns)赋初值linta33=1,2,5,6;等价第30页/共75页第三十页,共76页。例:打印(dyn)如下方阵 1 0 0 0 0
22、 0 1 3 1 0 0 0 1 4 3 3 1 0 1 4 4 3 3 3 1 4 4 4 3 3 1 2 1 4 4 3 1 2 2 2 1 4 1 2 2 2 2 2 1主对角线: i=j副对角线:i+j=6ij & i+jj & i+j6ij & i+j6i6第31页/共75页第三十一页,共76页。 main( ) int a77, i, j; for(i=0;i7;i+) for(j=0;j7;j+) if (ij&i+j6) aij=0; if (i6) aij=4; if (ij&i+jj&i+j6) aij=2; if(i=j|i+j=6) aij=1; for(i=0;i7;
23、i+) for(j=0;j7;j+) printf(%3d,aij); printf(n); 例:打印如下(rxi)方阵第32页/共75页第三十二页,共76页。3311111114 6 45 10 10 56 15 20 15 6例5-8:打印杨辉三角形,输出(shch)形式如下所示。算法算法(sun f)分析:分析: 定义定义a77 ai0=1; aii=1; aij=ai-1j-1+ai-1j211 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1111111第33页/共75页第三十三页,共76页。例5-8:打印(dyn)杨辉三角形。m
24、ain ( ) int a77, i, j; for (i=0;i7;i+) ai0=1; aii=1; for (i=2;i7;i+) for (j=1;ji;j+) aij=ai-1j+ai-1j-1;for (i=0;i7;i+) for (j=0;j=i;j+) printf(%6d,aij); printf(n); 填充(tinchng)杨辉三角形中的 1 数字填充除1以外(ywi)的其它数字第34页/共75页第三十四页,共76页。例:打印(dyn)杨辉三角形。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 11 5 10 10 5 1for (i=0;i6;i+) for
25、 (j=1;j6-i;j+) printf( ); for (j=0;j=i;j+) printf(%6d,aij); printf(n); 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1for (i=0;i6;i+) for (j=1;j6-i;j+) printf( ); for (j=0;j=i;j+) printf(%6d,aij); printf(n); 6个空格(kn )3个空格(kn )第35页/共75页第三十五页,共76页。main( ) int a33, i, j, t, k=1; for(i=0;i3;i+) for(j=0;j3;j
26、+) aij=k+; for(i=0;i3;i+) for(j=0;ji;j+) t=aij;aij=aji;aji=t; for(i=0;i3;i+) for (j=0;j3;j+) printf(%4d,aij); printf(n); 例5-7:矩阵(jzhn)转置。1 2 3 4 5 67 8 91 4 7 2 5 83 6 9第36页/共75页第三十六页,共76页。例:在一个(y)34矩阵中,求最大值及其位置. #include main( ) int a34, i, j, max , r, c; for(i=0;i3;i+) for(j=0;j4;j+) aij=rand()%80
27、+10; printf(%5d,aij); printf(n); max=a00; r=c=0; for(i=0;i3;i+) for(j=0;jmax) max=aij; r=i; c=j; printf(max=a%d%d=%dn,r,c,max); 47 71 43 71 77 98 96 36 89 27 65 99max=a23=99第37页/共75页第三十七页,共76页。例:以下程序(chngx)的功能是求一个二维数组中每行的最大值和每行的和。#include stdlib.h #define N 4main( )int aNN, bN, cN, i, j, k, s=0; for
28、(i=0;iN;i+) for(j=0;jN;j+) aij=rand()%100; for(i=0;iN;i+) k=ai0; 【?】 ; for(j=0;jN;j+) if(kaij) 【?】 ; s=s+aij; bi=k; 【?】 ; for(i=0;iN;i+) for(j=0;jN;j+) printf(%4d, 【?】 ); printf(%4d%4d,bi,ci); printf(n); s=0;k=aij;ci=s;aij符号(fho)常量第38页/共75页第三十八页,共76页。符号(fho)常量用一个(y )标识符表示一个(y )常量命名规则: 1、字母、数字(shz)、下
29、划线组成 不能以数字(shz)开头; 2、一般不超过8个字符。 3、见名知意。 4、区分大小写。#define PI 3.14main( ) float c,s,r; r=5; c=2 * 3.14 * r; s=3.14 * r * r; printf(%f,%f ,c,s); #define 符号常量名 常量 #define PI 3.14PIPI第39页/共75页第三十九页,共76页。练习(linx):求一个3行4列矩阵的外框的元素值之和,注意,矩阵四个角上的元素不能重复加。#define m 3#define n 4main( ) int amn=1,2,3,4,5,6,7,8,9,1
30、0,11,12,i,j,s=0; for(i=0;im;i+) for(j=0;jn;j+) if(i=0|i=m-1|j=0|j=n-1) s=s+aij; printf(s=%dn,s); 第40页/共75页第四十页,共76页。5.3 字符(z f)型数据(1) 普通字符: 用一对(y du)单撇号括起来的一个字符。(2) 转义字符: n 123 xAF。转义字符转义字符含义含义ASCIIASCII代码值代码值nn换行,将光标移到下一行开头换行,将光标移到下一行开头1010t t横向跳到下一制表位置横向跳到下一制表位置9 9f f走纸换页走纸换页1212bb退格退格8 8r r回车,将光标
31、移到本行开头回车,将光标移到本行开头1313 反斜杠字符反斜杠字符“ “” ”9292 单撇号字符单撇号字符3939 双撇号字符双撇号字符3434dddddd1 13 3位八进制数所代表的字符位八进制数所代表的字符xhhxhh以以x x开头的开头的1 12 2位十六进制数所代表的字符位十六进制数所代表的字符5.3.1 字符(z f)常量第41页/共75页第四十一页,共76页。5.3.2 字符串常量(chngling)用一对双撇号括起来的字符序列。如: CHINA、a、how are you. 、 。字符串常量在内存(ni cn)中的存放: 每一个字符均以其ASCII码存放,且在字符串的最后自动
32、添加一个0作为字符串结束标志。请区别(qbi): a 和 a 第42页/共75页第四十二页,共76页。5.3.3 字符(z f)型变量只能放一个(y )字符,占一个(y )字节,存放该字符的ASCII码值。定义 char c1,c2;赋值 c1= a; c2= b;c=a;c=97;二者等价(dngji)整型与字符型变量可以通用通用范围:0 127第43页/共75页第四十三页,共76页。5.3.4 getchar和putchar函数(hnsh)1.getchar函数(hnsh)2.putchar函数(hnsh)从终端输入一个字符。 形式:c=getchar( );c为字符型或整型变量。向终端输
33、出一个字符。 形式:putchar(c); a a例5-11 从键盘上输入一个字符,然后输出到终端显示器上。#include stdio.hmain( ) char c; c=getchar(); putchar(c);第44页/共75页第四十四页,共76页。5.3.5 5.3.5 字符字符(z f)(z f)数组数组l定义(dngy)lchar字符数组名整型常量表达式l例:chars110,s223;l初始化l将字符数组中的各元素逐个赋予字符l例:charstr3=t,a,e;l用字符串常量来对字符数组初始化l例:charstr=“hello;lcharstr6=“hello;l注:对静态字
34、符数组未被赋值的元素系统自动将其赋值为空(0)。l字符数组元素的引用:同简单变量等价第45页/共75页第四十五页,共76页。下面几种定义形式(xngsh)是等价的:char name5= good;char name = good;char name5= good;char name = good;char name5= g, o, o, d;char name = g, o, o, d, 0char name = g, o, o, d, 0;第46页/共75页第四十六页,共76页。例:输出(shch)一个字符数组中的字符main( ) char c10=I, ,a,m, ,a, ,b,o,y
35、; int i; for (i=0;i10;i+) printf(%c,ci); Iamaboy第47页/共75页第四十七页,共76页。5.3.5 5.3.5 字符字符(z f)(z f)数组数组l字符(zf)数组的输入输出l%c逐个字符(zf)输入/输出l%s一次输入/输出整个字符(zf)串第48页/共75页第四十八页,共76页。5.3.5 5.3.5 字符字符(z f)(z f)数组数组l输入时应注意l“%s”格式(gshi)输入,后面跟数组名,且不带“&”符号。l“%s”格式(gshi)输入无法输入空格。l 例:char c10; scanf(%s, c); I am happy I 0
36、c0c1c2c3c4c5c6 c7c8c9 “%c”格式输入字符(z f)时,不需要分隔符,连续输入之后回车。第49页/共75页第四十九页,共76页。l输出应注意的问题l 用“%s”格式输出,遇0时结束,printf函数中的输出项是字符(z f)数组名,而不是数组元素。l 例: static char c11=china;l printf(%s, c); c h i n a 0 0 0 0 0 0chinal可使用gets和puts整体输入(shr)/输出字符串。第50页/共75页第五十页,共76页。#include #include main( )main( ) char a20; char
37、 a20; int i; int i; for(i=0;i6;i+) for(i=0;i6;i+) ai=getchar();ai=getchar(); for(i=0;i6;i+) for(i=0;i6;i+) putchar(putchar(aiai); ); scanf(scanf(%c%c, ,&ai&ai); );printf(printf(%c%c, ,aiai); );#include #include main( )main( ) char a20; char a20; scanf( scanf(%s%s, ,a a); ); printf( printf(%s%sn,n,a
38、a); ); 例:输入(shr)/输出字符串 gets(a);gets(a); puts(a);puts(a);第51页/共75页第五十一页,共76页。5.3.5 5.3.5 字符字符(z f)(z f)数组数组l字符(zf)串处理函数lstdio.hlgets(字符(zf)数组名):输入字符(zf)串lputs(字符(zf)数组名或字符(zf)串常量):输出字符(zf)串例例#include main( ) char a6; gets(a); puts(a);第52页/共75页第五十二页,共76页。5.3.5 5.3.5 字符字符(z f)(z f)数组数组string.h字符串有效(yux
39、io)长度函数strlen(字符数组名或字符串常量)chara10=abcde;printf(%dn,strlen(a);5举例(j l)下面程序段的输出结果是 char c =“tv0willn”; printf(“%d”,strlen(c); A. 14 B. 3 C. 输出不确定 D. 9B第53页/共75页第五十三页,共76页。例:不使用例:不使用(shyng)strlen(shyng)strlen函数求字函数求字符串有效长度符串有效长度#include“stdio.h”main()chars80;inti=0;gets(s);while(si!=0)i+;printf(“%d”,i)
40、;good0s igood4第54页/共75页第五十四页,共76页。5.3字符(zf)数组l字符(z f)串连接函数l strcat(字符(z f)数组名,字符(z f)数组名或字符(z f)串常量)l char a10=abcde,b10=xy; l strcat(a,b);l puts(a);l puts(b);abcdexyxy第55页/共75页第五十五页,共76页。例例5-20:5-20:不使用不使用strcatstrcat函数函数(hnsh)(hnsh),将两个字符串连接起来。,将两个字符串连接起来。 good0boy0数组数组s1数组数组s2goodboy0数组数组s1 i j第5
41、6页/共75页第五十六页,共76页。#include main( )main( ) char s80,t80; char s80,t80; int i, j; gets(s); gets(t); for(i=0;si!=0;i+) ; for(j=0; for(j=0;tj!=0tj!=0;j+) si+j=tj; si+j=0;si+j=0; puts(s); goodboygoodboy例例5-20:5-20:不使用不使用(shyng)strcat(shyng)strcat函数,将两个字符串连接起函数,将两个字符串连接起来。来。 第57页/共75页第五十七页,共76页。5.3字符(zf)数
42、组l字符串复制函数(hnsh)lstrcpy(字符数组名,字符数组名或字符串常量)lchara10=abcde,b10=xy;lstrcpy(a,b);lputs(a);lputs(b);xyxy第58页/共75页第五十八页,共76页。例例5-195-19:不使用:不使用strcpystrcpy函数完成函数完成(wn chng)(wn chng)字符串复制字符串复制#includestdio.hmain()chars80,t80;inti;gets(s);for(i=0;si!=0;i+)ti=si;ti=0;puts(t);输入(shr):china输出:china第59页/共75页第五十九
43、页,共76页。5.3字符(zf)数组l字符串比较(bjio)函数lstrcmp(字符数组名或字符串1,字符数组名或字符串2)函数值函数值= =the thatthe thesePLANE boat如:第60页/共75页第六十页,共76页。例例: : 编写程序,比较编写程序,比较(bjio)(bjio)两个字符串的大小。不用两个字符串的大小。不用strcmpstrcmp函数实现其功能。函数实现其功能。 比较规则:逐个字符进行比较,直到有两个字符不等或有一个字符串结束比较规则:逐个字符进行比较,直到有两个字符不等或有一个字符串结束(jish)(jish)为为止。止。#include main( )
44、 char s80,t80; int i; gets(s); gets(t); for(i=0;si=ti&si!=0;i+) ; ; printf(%dn,si-ti); ); thethat4第61页/共75页第六十一页,共76页。#include #include main( ) )char s80, t80; int i, i, k;k; gets(s); gets( gets(s); gets(t); for(i=0; si!=0; i+) if(si!=ti) break;i) break; k=si-ti; if(k0) printf(st tn);n); else if(k0)
45、 printf(s9|si0)sk=si; k+; sk=0; puts(s);7bc8bc9bc bcbcbc第64页/共75页第六十四页,共76页。例例: : 有三个字符串有三个字符串( (长度不超过长度不超过(chogu)20)(chogu)20),要求找出其中最大者。,要求找出其中最大者。str0str1str2 string大大 第65页/共75页第六十五页,共76页。例例: : 有三个字符串有三个字符串( (长度长度(chngd)(chngd)不超过不超过20)20),要求找出其中,要求找出其中最大者。最大者。#include string.h#include #include s
46、tdio.hstdio.hmain( ) char str20, s320; int i; for(i=0;i0) strcpy(str,s0); else strcpy(str,s1); if (strcmp(s2,str)0) strcpy(str,s2);printf(nthe largest string is:n%sn,str); CHINAHOLLANDAMERICAthe largest string is:HOLLAND第66页/共75页第六十六页,共76页。例5-21: 将5个姓名(xngmng)按由小到大排序。#include stdio.h #include string
47、.h main( )char a520, b20; int i, j; for (i=0;i5;i+) gets(ai); for (i=0;i4;i+) for (j=i+1;j0) strcpy(b,ai); strcpy(ai,aj); strcpy(aj,b); for (i=0;i0) d=m%16; if(d10) sn=d+0; else sn=d+55; n+; m=m/16; sn=0; for(i=0;in/2;i+) t=si; si=sn-1-i; sn-1-i=t; puts(s); 例: 将一个(y )十进制正整数转换为十六进制数。第72页/共75页第七十二页,共7
48、6页。28.以下程序的功能(gngnng)是打印以下图形。main ( )char a59= ; int i,j; for (i=0;i5;i+) for(j=i; 【?】;j+) aij=*; for(【?】;i5;i+) for(j=0;j9;j+) printf(%c, 【?】 ); 【?】 ; * * * * *ji+5 i=0 aijprintf(“n”)第73页/共75页第七十三页,共76页。4.从键盘上输入20个元素的值存入一维数组m中,然后将下标为(1. 3. 5. 7. 919)的元素值赋值给数组n,最后输出(shch)数组n的内容。 main() int m20,n10,a
49、,b=0; for(a=0;a20;a+) scanf(%d,&ma); if(a%2=1) nb=ma; b+; for(a=0;a10;a+) printf(%d,na); 第74页/共75页第七十四页,共76页。感谢您的欣赏(xnshng)!第75页/共75页第七十五页,共76页。内容(nirng)总结引例:输入30个学生的成绩,求高于平均成绩的人数。sum=sum+ai。引例:输入30个学生的成绩,求高于平均成绩人数。注意:命名规则、数组长度、下标 、空间(kngjin)分配。2. 数组元素的输入:scanf函数输入。3. 数组元素的赋值:使用赋值运算。例5-3:求10个数的最小值及其位置,并与第1个数对调。用一个标识符表示一个常量。1、字母、数字、下划线组成。 “%s”格式输入无法输入空格。m=m/16。感谢您的欣赏第七十六页,共76页。