C语言1115数组最小值,C语言数组[共52页]

《C语言数组[共52页]》由会员分享,可在线阅读,更多相关《C语言数组[共52页](52页珍藏版)》请在人人文库网上搜索。

1、第8周实验,作业1: 从键盘输入20个数到m数组,将下标为0、2、4的元素赋值给数组n,输出n中内容 作业2: 产生10个50,90上的随机整数,求其中能被5整除的所有数的和。 作业3: 将10个数(可以随机产生)中所有的偶数除以2,奇数乘以2. 作业4:求20个数(可以随机产生)中的最大值和次最大值。 作业5: 30个元素,赋予从2开始的偶数,每5个求一个平均值放到另一数组 作业6:数组为20个整数,求其中的素数。 作业7:教材97 5-6 作业8:实验指导45:6,引例:输入30个学生的成绩,求高于平均成绩的人数,include stdio.h main() int i,x,k=0; fl。

2、oat s=0,ave; for(i=1;i=30;i+) scanf(%d,for(i=1;i=30;i+) if(ave?) k+; 如何保存30个成绩,变量性质: 能保存多个数据(长度) 通过循环访问数据(有序,数组,定义:有序数据的集合 特点:所有元素类型相同 要素:数组名、 下标,t,t0,t1,t9,第5章 数 组,数组的定义和引用 对数组元素的操作: 对调、最大值、最小值、平均值、和 对整个数组的操作: 产生随机数组、逆序、排序 对字符数组的操作: 连接、复制、比较,一、 一维数组的定义和引用 定义 类型标识符 数组名 数组长度,5.1 一维数组,int a10; 表示数组a共包。

3、括10个元素,分别为a0 a9,整数或整型常量表达式,main( ) int i, b10; for (i=0; i10; i+) scanf(%d,只能逐个引用数组元素,而不能一次引用整个数组。 引用形式: 数组名 下标,2. 一维数组的引用,例5-1 数组元素的引用,bi=i,整型表达式, 从0开始,1、如何使数组元素为:100109 2、作业1: 从键盘输入20个数到m数组,将下标为 0、2、4的元素赋值给数组n,输出n中内容,在定义数组时,对全部数组元素赋初值。 int a5=6, 2, 7, -3, 5; 只给一部分元素赋值。 int a5=6, 2; int a5=6, 2, 0,。

4、 0, 0; 定义数组时使数组a中全部元素自动赋以0值。 static int a5; int a5=0; 对全部数组元素赋初值时,可以不指定数组长度。 int a3=1, 2, 3; int a =1, 2, 3,二、 一维数组的初始化,2. rand函数的用法: 格式: rand ( ) 说明: (1) 该函数包含在头文件stdlib.h中。 (2) 该函数产生0到整型最大值之间的一个随机整数,产生a,b区间上任意整数的方法: rand( )%(b-a+1)+a,srand函数 (头文件time.h) srand(time(0) 用当前时间作为随机数的初始种子,三、 随机函数random和。

5、rand,说明: srand函数,可以产生不同的随机数, 此函数包含在time.h头文件中,include stdlib.h main( ) int i, a10; for(i=0; i10; i+) ai=rand()%11+5; for(i=0; i10; i+) printf(%5d,ai); printf(n);,include time.h,srand(time(0,作业2:产生50,90上的随机整数,求能被5整除的数的和。 作业3:将10个数中所有的偶数除以2,奇数乘以2,例 5-3、4 求10个学生成绩的最高分、最低分和平均分,include stdio.h main( ) in。

6、t i,a10,min,max; float average,s; for(i=0;imax) max=ai; s+=ai; average=s/10; printf(max=%d,min=%d,ave=%7.2f, max,min,average);,5.1.4 一维数组的简单应用,作业5:30个元素,赋予从2开始的偶数, 每5个求一个平均值放到另一数组,例5-5 求10个数的最小的值,并将该最小值与最前面的元素互换(最小值唯一,方法1: 数组元素变化较大 无法知道最小值原来的位置 方法2,2,10,1,2,1,13,0,3,5,7,13,10,顺序法,选择法,include main( )。

7、 int i,j,t, a10, k; for(i=0; i=9; i+) scanf(%d,include main( ) int i,j,t, a10, k; for(i=0; i=9; i+) scanf(%d,作业4: 求20个数中的最大值和次最大值,例5-6 产生10个40,100内的随机数,并按由小到大的顺序排序后输出,3,45,2,6,17,66,50,2,3,6,2,17,6,for(j=1;j10;j+) if(aja0) t=a0; a0=aj; aj=t; for(j=2;j10;j+) if(aja1) t=a1; a1=aj; aj=t;,for(i=0;i9;i+)。

8、 for(j=i+1;j10;j+) if(ajai)t=ai; ai=aj; aj=t,执行9次,define N 10 #include stdlib.h #include stdio.h main( ) int i,j,t,aN,k; for(i=0;iN;i+) ai=rand()%61+40; printf(%5d,ai); for(i=0;iN-1;i+) for(j=i+1;jN;j+) if(ajai) t=ai; ai=aj; aj=t; for(i=0;iN;i+) printf(%5d,ai);,顺序排序,例5-6 产生10个40,100内的随机数,并用选择排序法按由小到。

9、大的顺序排序后输出,3,45,2,6,17,66,50,k=0,k=2,k=3,k=4,17,3,k=0; for(j=1;j10;j+) if(ajak) k=j; if(k!=0) t=a0; a0=ak; ak=t; k=1; for(j=2;j10;j+) if(ajak) k=j; if(k!=1) t=a1; a1=ak; ak=t;,for(i=0;i9;i+) k=i; for(j=i+1;j10;j+) if(ajak) k=j; if(k!=i) t=ai; ai=ak; ak=t;,执行9次,define N 10 #include stdlib.h main( ) in。

10、t i,j,t,aN,k; for(i=0;iN;i+) ai=rand()%61+40; printf(%5d,ai); for(i=0;iN-1;i+) k=i; for(j=i+1;jN;j+) if(ajak) k=j; if(k!=i) t=ai; ai=ak; ak=t; for(i=0;iN;i+) printf(%5d,ai);,选择排序,例:5-10 用二分查找法找一个数是否在一个有序的数组中,include stdio.h main( ) int n=8, key,m,left,right; int a=1,3,5,7,9,15,19,24; printf(输入待查数据:n。

11、); scanf(%d,作业7:教材97 5-6,3,45,2,6,17,66,50,50,66,17,6,2,45,3,for(i=0;i=(n-1)/2;i+) t=ai; ai=an-1-i; an-1-i=t;,例5-8 将一维数组中的n(n=50)个数按逆序存放,include stdio.h main( ) int a50,t,n,i; scanf(%d,补充1: 已知数组a中有8个互不相等的元素,数组b中有 5 个互不相等的元素,而数组c中包含那些在a中但不在b中的元素,编程产生数组c。(产生新数组,12,1,3,2,77,31,6,2,14,77,1,76,a,12,3,31,。

12、6,c,b,0,0,include stdio.h main( ) int i,j,k=0,a8,b5,c8; for(i=0;i=5) ck=ai;k+; for(i=0;ik;i+) printf(%5d,ci);,作业6:数组为20个整数,求其中的素数,补充2: 打印以下方阵: 1283 10 283 10 1 83 1012 3 10128 101283,1,2,8,3,10,1,2,8,3,10,1,2,8,3,10,1,2,8,3,10,1,2,8,3,10,1,2,8,3,for( j=1;j5;j+) xj-1=xj,y=x0,x4=y,main( ) int i,j,y; i。

13、nt x5=1,2,8,3,10; for(i=0;i=4;i+) for( j=0;j=4;j+) printf(%5d,x j); printf(n); y=x0; for( j=1;j=4;j+) xj-1=xj; x4=y;,for( j=0;j4;j+) xj=xj+1,1、作业8:实验指导45:6 2、如何实现:数组逆序,第9周实验,作业1:数组为20个整数,求其中的素数。 作业2:教材97 5-6 作业3:实验指导45:6 作业4:产生10个20.80的随机数,并进行排序。 作业5:打印等边杨辉三角(教材P97 5-9)。 作业6:教材P97 5-10 作业7:教材P97 5-5。

14、 作业8:实验指导P56:三(1,5.2 二维数组 一、 二维数组的定义和引用 1、定义 类型标识符 数组名第1维的长度第2维的长度 可以把二维数组看作是一种特殊的一维数组 a0 a00 a01 a02 a1 a10 a11 a12 二维数组在内存中按行存放,a00 a02 a11 a01 a10 a12,2、引用 数组名下标下标,二、二维数组的初始化 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, 5, 9; int a33=1, 。

15、0, 3, 4, 0, 0, 0, 8, 0; int a 3=1, 0, 3, 4, 0, 0, 0, 8, 0; int a 3=1, 0, 3, 4, 0, 8,三、 二维数组的输出,include stdio.h main() int a33,i,j,t,k=1; for(i=0;i3;i+) for(j=0;j3;j+) aij=k+; printf(原矩阵为:n); for(i=0;i3;i+) for(j=0;j3;j+) printf(%4d,aij); printf(n); for(i=0;i3;i+) for(j=0;ji;j+) t=aij;aij=aji;aji=t; 。

16、printf(转置后的矩阵为:n,for(i=0;i3;i+) for(j=0;j3;j+) printf(%4d,aij); printf(n);,原矩阵为: 1 2 3 4 5 6 7 8 9 转置后的矩阵为: 1 4 7 2 5 8 3 6 9,例5-12 将一个3行3列的矩阵转置后输出,例 5-13 输出如下图所示的杨辉三角形,main( ) 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-1+ai-1j; for(i=0; i7; i+) for(j=0。

17、; j=i; j+) printf(%4d, aij); printf(n);,1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1,作业5: 打印等边杨辉三角 (教材P97 5-9,四、 二维数组的常用算法,1 0 0 0 0 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,补充3: 打印如下方阵(7*7,主对角线:i=j,副对角线:i+j=6,ij for(i=0;i6) aij=4; else 。

18、if (ij,作业6:教材P97 5-10 作业7:教材P97 5-5 作业8:实验指导P56:三(1,例5-14 求一个5行3列的二维数组的每行的平均值,include stdio.h #define N 5 #define M 3 main() int aNM=88,76,69,85,78,91,84,76,61, 90,86,95, 67,51,70; int i,j; float s,ave; for(i=0;iN;i+) s=0; for(j=0;jM;j+) s+=aij; ave=s/M; printf(第%d行的平均值为%.2fn,i,ave);,第0行的平均值为77.67 第。

19、1行的平均值为84.67 第2行的平均值为73.67 第3行的平均值为90.33 第4行的平均值为62.67,例5-15 求一个5行3列的二维数组各列的最大值,include stdio.h #define N 5 #define M 3 main() int aNM=88,76,69,85,78,91,84,76,61, 90,86,95, 67,51,70; int i,j,lmax; for(j=0;jM;j+) lmax=a0j; for(i=1;iN;i+) if(lmaxaij) lmax=aij; printf(第 %d 列的最大值是 %dn,j,lmax);,第 0 列的最大值。

20、是 90 第 1 列的最大值是 86 第 2 列的最大值是 95,求N*M数组的最大值及其行标、列标。 求5*5二维数组每行最大值和每行的和,第10周实验,作业1:从键盘输入十个学生的成绩,统计最高分,最低分和平均分,以及得最高分的人数。 作业2:输出斐波那契(Fibonacci)数列(1,1,2,3,5,8,13)的前20项 作业3:将具有10个元素的一维数组最小值放到最前面,最大值放到最后面。 作业4:求20个数的一维数组中的素数,并将素数排序 作业5:求一个二维数组(5*5)中每行的最大值和每行的和 作业6:求出NM整型数组的最大元素及其所在的行坐标及列坐标。 作业7:实验指导P57:3。

21、,5.3 字符型数据,普通字符 用一对单撇号括起来的一个字符。 a x d ? (2) 转义字符 将反斜杠后面的字符转变成另外的意义。 (P81 表5.1) n 12 x35,1、字符型常量,一、 字符型数据常量,2、 字符串常量,用一对双撇号括起来的字符序列。 如: CHINA、a、how are you. 、 。 字符串常量在内存中的存放: 每一个字符均以其ASCII码存放,且在字符串的最后自动添加一个0(空字符,二进制00000000)作为字符串结束标志,请区别: a 和 a,1、 字符型变量,只能放一个字符,占一个字节,存放该字符的ASCII码值。 定义 char c1,c2; 赋值 。

22、c1= a; c2= b,c=a; c=97; 二者等价,整型与字符型变量可以通用,通用范围:0 127,C的值相等 但是在内存中的存放形式不一样,二、 字符型数据变量,2、 字符串变量,char c10;char d23,初始化 char c10=I, ,a,m, ,h,a,p,p,y,对字符数组初始化,可以用字符串常量来使字符数组初始化。如: char c =I am happy; char c =I am happy; char c11=I am happy,char c32=a, b, c, d, e,f,三、字符型数据输入输出,1、字符型数据: (1)printf、scanf函数:%。

23、c格式 (2)putchar、getchar函数 例5-16 从键盘上输入一个字符,然后输出到终端显 示器上,include stdio.h main( ) char c; c=getchar(); putchar(c);,2、字符数组的输入输出,1)printf、scanf:%c格式,逐个输入/输出。 (2)printf、scanf:%s格式,一次输入/输出,include main( ) char c10; int i; for (i=0;i10;i+) scanf(%c,ci=getchar(,putchar(ci,include main( ) char c10; scanf(%s,c。

24、); printf(%s,c);,china,说明1: 用%s格式输出字符时,输出遇0时结束,printf函数中的输出项是字符数组名,而不是数组元素,例:char c11=china; printf(%s, c,说明2: 在使用scanf函数时,若用%s格式输入字符串,则后面跟数组名,且不带 I am happy,注:用scanf函数(格式字符%s)无法输入空格,3)gets、puts:一次输入/输出整个字符串,例: #include main( ) char a10; gets(a); puts(a);,stdio.h,1、教材P97:5-8(统计) 8、实验指导P65:(6)(图形输出,1。

25、、 字符串有效长度函数 strlen(字符数组名或字符串常量) char a10=abcde; printf(%dn,strlen(a,2、字符串连接函数 strcat(字符数组名,字符数组名或字符串常量) char a10=abcde,b10=xy; strcat(a,b); puts(a); puts(b,四、 字符串处理函数,string.h,3、字符串复制函数 strcpy(字符数组名,字符数组名或字符串常量) char a10=abcde,b10=xy; strcpy(a,b); puts(a); puts(b,4、 字符串比较函数 strcmp(字符数组名或字符串1,字符数组名或字。

26、符串2,函数值,0 9A Za z the that,the these,PLANE boat,例5-21 不使用库函数STRCPY,完成字符串的复制,include stdio.h main() char a80,b80; int i; gets(a); for(i=0;ai!=0;i+) bi=ai; bi=0; puts(a); puts(b);,2、教材P97:5-7(部分复制) 3、实验指导P64:三(1)(条件复制) 4、实验指导P64:三(2)(条件复制,例5-26 在给定的字符串中删除所有的数字字符,include stdio.h main() char s80,c; int 。

27、i,k=0; gets(s); for(i=0;si!=0;i+) if(si9|si0) sk=si;k+; sk=0; puts(s);,7bc8bc9bc bcbcbc,5、实验指导P65:三(3)(删除) 6、删除一个字符串中的非字母字符(删除,例5-22 不用strcat函数实现连接功能,include main( ) char s80,t80; int i, j; gets(s); gets(t); for(i=0;si!=0;i+) ; for(j=0;tj!=0;j+) si+j=tj; si+j=0; puts(s);,7、实验指导P65:(5)(连接,例5-23:不用str。

28、cmp函数实现其功能,include main( ) char s80,t80; int i; gets(s); gets(t); for(i=0; si!=0;i+) if(si!=ti) break; printf(%dn,si-ti);,include main( ) char s80,t80; int i; gets(s); gets(t); for(i=0;si=ti,例5-25: 求三个字符串中的最大串,include #include main( ) char s380,maxs80; int i; for(i=0;i=0) strcpy(maxs,s0); else strcp。

29、y(maxs,s1); if(strcmp(s2,maxs)0) strcpy(maxs,s2); puts(maxs);,例5-27 判断一个字符串是否是另外一个字符串的子串, 如果是 输出其第一次出现的位置,不是输出相应信息,include stdio.h #include string.h main() int i,j,k,flag=0; char a80,b10; gets(a); gets(b); for(i=0;ai!=0;i+) for(j=i,k=0;bk!=0;k+,j+) if(bk!=aj) break; if(bk=0) printf(yes %dn,i); flag=1;break; if(flag=0) printf(non);,I love C programming gram yes 12 fjksdfajkasfd abc no。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值