欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    C语言第7章数组.docx

    • 资源ID:29063597       资源大小:21.12KB        全文页数:19页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    C语言第7章数组.docx

    1、C语言第7章数组第7章 数 组概述:1构造数据类型 char,int,float,double 等在C语言中称为基本数据类型。 由基本数据类型导出的各种数据类型,如数组、结构、联合等称为构造数据类型。2为什么要有构造数据类型? 为程序设计提供方便v 如同时定义多个变量:统计在一篇文章中各字母出现的次数。 进行一些特殊数据的处理 常用于处理大批量数据3什么是数组 数组是有序数据的集合,是类型相同的变量组成的序列,有统一的数组名,通过下标不同来访问不同变量,称这些变量为数组元素。 数组中的所有元素在内存中一定是连续存储的 数据特点:存在内在联系 只有一个下标一维数组 有两个下标二维数组7.1 一维

    2、数组 只有一个下标 格式: 类型说明符 数组名元素个数;例:int a10; /*定义含有10个元素的整型数组*/ 每个数组元素都是整数。 相当于同时定义了10个整型变量例:float b100; /*定义含有100个元素的浮点型数组*/ 每个数组元素都是浮点数 相当于同时定义了100个浮点型变量例:int a5, b6+3;1说明: 数组的命名规则与变量命名规则相同 定义一维数组时,数组元素的个数必须明确,即在方括号内的元素个数说明中不能使用变量; 可用 #define 定义符号常量,方便修改程序 例如: #define N 10 那么程序中可定义数组 int sN; 如要将数组b的长度改为

    3、20,只需把命令行改为#define N 20 其它部分无需改动2注意 数组元素下标从0开始;v int a10;v 定义的数组元素有a0,a1,.,a9共10个,且每个元素均为一个int型变量,v float b100;定义的数组元素有b0,b1,.,b99共100个,且每个元素均为一个float型变量,可与以前学过的变量一样使用。3一维数组的存储方式 数组在内存中是连续存储的。每个数组元素占有相同大小的空间。 数组占据的总的内存空间就是每个数组元素所占空间*数组元素个数。 数组第一个元素的起始地址就是整个数组的首地址。4一维数组元素的引用 格式:数组名下标 数组元素的下标从0开始,即int

    4、 a4,表示定义4个数组元素,分别是a0,a1,a2,a3 例如,a2,bi,bi+1是合法引用 下标可以是常量、变量或表达式 其值必须确定、且是整型 系统不做下标越界检查 注意,只能每次使用一个元素,而不能一次引用数组全体(字符串除外)。 常用循环对数组进行输入输出操作【例】存放字符的数组示例。#define N 4#include main( ) int i; char chN; ch0=G; ch1=o; ch2=o; ch3=d; for ( i=0; i4; i+ ) putchar(chi); 例:#includemain() int i,a10; for(i=0;i=0;i-)

    5、printf(“%dn”,ai); 【例】输入若干学生的成绩(用负数结束输入),计算其平均成绩,并统计不低于平均分的学生人数。 分析: 为了统计不低于平均分的学生人数,先把学生成绩存起来,等到计算平均成绩后,再与平均分比较 如果使用普通变量,过程就会很繁琐 选用数组简化程序 #define N 40 main( ) int i, n=0, count=0; float score,total=0,aN,ave; printf(data:n); scanf(%f,&score); while( score=0 ) an= score; n+; total=total+score; scanf(%

    6、f,&score); ave=total/n; for ( i=0; i=ave ) count+; printf(ave=%f,count=%d,ave,count);5一维数组的初始化 数组可以在定义时赋初值,称为初始化。【例】int i;int a5=1,2,3,4,5; for( i=0; i5; i+ ) printf(%5d,ai); 可以只对部分元素赋值,未赋值自动为0.【例】int i;int b5=2,3,4; /int b5=2,3,4,0,0; for( i=0; i5; i+ ) printf(%5d,bi); 对整个数组进行初始化时,可以不指明元素的个数,此时,系统自

    7、动按所给初值的个数来确定数组的元素数。【例】int i;int c =3,4,5,6,7; for( i=0; i5; i+ ) printf(%5d,ci); 例:int i;int d5=0; for( i=0; i5; i+ ) printf(%5d,di); 注意:不能写成 int e ; 【例】char a4=G,o,o,d; 6一维数组程序举例【例】定义含有10个元素的数组,并将数组中的元素按逆序重新存放后输出。 #include main( ) int i,t,a10=1,2,3,4,5,6,7,8,9,10; for( i=0; i10; i+ ) printf(%4d,ai)

    8、; printf(n); for(i=0; i10/2; i+ ) t=ai; ai=a10-i-1; a10-i-1=t; for( i=0; i10; i+ ) printf(%4d,ai); printf(n); 例:观察运行情况int i,t,a10=1,2,3,4,5,6,7,8,9,10;t=a0; for ( i=0; i9; i+ ) ai=ai+1; a9=t; for ( i=0;i10;i+) printf(%4d,ai);【例】输入十个互不相同的整数并存在数组中,找出最大元素所在的下标。 #include main( ) int i,k,a10; printf(Inpu

    9、t data:); for ( i=0; i10; i+) scanf(%d, &ai); printf(n);k=0; for ( i=1; i10; i+ ) if ( akai ) k=i; printf(“max=%dn”,k); 【例】在数组中找出最小元素,并与第一个元素对调 k=0; for( j= 1; jaj ) k=j; temp=a0; a0=ak; ak=temp; for ( j=0; j10; j+ ) printf(%4d,aj); 【例】选择排序 算法:v 1.输入N个数;v 2.找出最大的一个,与第一个元素交换位置。v 3.在其余的元素中找出最大的一个,与第二个

    10、元素交换位置。v 4.重复上一过程,直到所有元素都已排序。 【例】冒泡排序main( ) int a11,i,j,t; printf(“Input 10 numbers:n”); for (i=1;i11;i+) scanf(“%d”,&ai); printf(“n”); for (i=1;i=9;i+) for (j=1;jaj+1) t=aj; aj=aj+1; aj+1=t; printf(“the sorted numbers:n”); for (j=1; j=10;j+) printf(“%d”,aj);【例】将键盘输入的一个数,插入到已按降序排列的数组中,要求按原来的排序规律插入。

    11、算法: 设数组存储空间足够大 找合适的插入位置 向右移动插入点后的元素 插入 #include main( ) int i,j=0,k; int a11=20,18,16,14,12,10,8,6,4,2; for ( i=0; i=k & j=j; i- ) ai+1=ai; aj=k; for ( i=0; i11; i+ ) printf(%4d,ai); printf(n);7.2 二维数组1二维数组的定义 在二维数组中,有两个下标起作用,只有当两个下标都确定时,才可以唯一决定一个元素。 定义: 数据类型 数组名下标1下标2v 此时数组元素的个数为:下标1*下标2通常也把下标1称为行,

    12、下标2称为列,类似一张二维表(由行列组成的表)例:int a32; 表示有3行,每一行2列,共有6个元素。行、列下标都从0开始2二维数组的存储方式 与一维数组相同,二维数组在内存中也是连续存储的,各个数组元素之间按下标的前后顺序连续,下标小的在内存中的地址也小 可以认为是二维数组由多个一维数组组成,每个行是一个一维数组v 如int a23可以认为是由2个一维数组构成,每个一维数组有3个元素v a0有3个元素a00,a01,a02,v a1有3个元素 a10,a11,a123二维数组元素的引用 二维数组的每个元素可以当作一个内存变量来使用 引用格式:数组名 下标1下标2v 其中:下标可以是整型常

    13、数、变量或表达式。4二维数组的初始化二维数组初始化中要注意行、列的区分,赋初值的顺序是按照数组元素的存储顺序来进行的。例1:int a23=1,2,3,4,5,6;例2:int a23=1,2,3,4,5,6;例3:int a 3=1,2,3,4,5,6;例4:int a23=1,2,4,5,6;例5:int a23=1,2,4,5,6;例6:int a23=1,0,2;输入举例#include main( ) int i,j,s34;for(i=0; i3; i+) for(j=0; j4; j+) scanf(%d,&sij);printf(Array s:n);for(i=0; i3;

    14、i+) for(j=0; j4; j+) printf(%5d,sij); printf(n); 例:有一个3x4的矩阵,要求编程求出其中最大元素的值,以及其所在行列号main( ) int i,j,max, row,col,a34; for (i=0;i3;i+) for (j=0;j4;j+) scanf(“%d”,&aij); max=a00;row=0; col=0; for (i=0;i3;i+) for (j=0;jmax) max=aij; row=i; col=j; printf(“max=%d,row=%d,col=%dn”,max,row,col); 7.3 字符串1定义

    15、用双引号括起来的字符序列称为字符串 字符串的输出控制符用%sprintf(“%sn”, “aaaaaaaaaaa” ); 字符串与字符的区别在于字符串在内存中存储时,结尾一定要加上一个0(ASCII码为0的字符)作为字符串的结束符 C语言中没有专用的字符串类型变量,字符串要通过字符型char来处理 字符串实质上是一个以0为结束符的一维字符数组 有效字符的个数称为字符串长度 例如,“abc”的长度为3,但占4个字节(0占一位) 2初始化 用来存放字符型数据。 定义与使用方式可与数值型数组相同。 例:v char string5=H,e,l,l,o;v char string1=G,o,o,d;v

    16、 string为一个字符型的一维数组,初值在定义时指定,此时,string也可称为一个字符串变量。 字符数组可用字符串来赋初值;v 例:char string=“Hello”;v char s=“Hello”;v 注意:此时的s和string所占的空间均为6。3字符数组的输入输出 【例】字符串示例#include main( ) int i=0; char a =K; char b = Sit down ; while(ai!=0) putchar(ai); i+; printf(n); i=0; while(bi!=0) putchar(bi); i+; 一维字符数组可作为“字符串变量”来使

    17、用。v 例:char str20;v scanf(“%s”,str); v printf(“%sn”,str); 用scanf输入多个字符串时,中间以空格分格v 例:char str15, str25, str35;v scanf(“%s%s%s”,str1,str2,str3);v 输入how are you?4字符串输入输出函数 gets()v 从标准输入设备读入一个字符串v 例,char s20;v gets(s);v 此时,若输入how are you ,就会保存在s中 puts()v 将一个字符串输出到标准输出设备上v 例 char s=“China”;v puts(s);v 相当于

    18、printf(“%s”,s);【例】#include main( ) char a10, b10; gets(a); scanf(“%s”,b); puts(a); printf(“%sn”,b); 5二维字符数组 二维字符数组的每一行可作为一个一维字符数组,即可保存一个字符串。例:char months10=“January”,“February”,“March”;v 相当于定义了一个有3行10列的二维数组,每一行是一个一维数组,6常用字符串函数【例】求字符串长度函数的使用。strlen #include #include main( ) char a80; int count; gets(

    19、a); count=strlen(a); printf(%s: %dn,a,count); 【例】字符串复制函数的使用。strcpy #include #include main( ) char a50,b80; gets(a); strcpy(b,a); puts(b); 两个字符串交换:char a5=”ABCD”,b5=”abcd”;char temp5;strcpy(temp,a); strcpy(a,b); strcpy(b,temp); 【例】字符串连接函数的使用。strcat#include #include main( ) char a80,b30; gets(a); gets

    20、(b); strcat(a,b); puts(a);【例】连接字符串的自编程序。 #include main( ) int i=0,j=0; char a80,b30; gets(a); gets(b); while( ai!=0 ) i+; while( bj!=0 ) ai=bj; i+; j+; ai=0; puts(a); 【例】字符串比较函数的使用。strcmp#include #include main( ) char a30,b30; gets(a); gets(b); if( strcmp(a,b) 0 ) printf(第一个串大于第二个串n); if( strcmp(a,b

    21、) = 0 ) printf(两串相等n); if( strcmp(a,b) 0 ) printf(第一个串小于第二个串n); 【例】字符数组举例:p138例7.8 统计一行字符中单词的个数 算法:v 若某一字符为非空格,而前面一字符为空格,则单词数加1;用变量num计数v 若某一字符为非空格,而前面一字符也为非空格,则表示还是原单词,单词数不变;用变量word来标识v 连续的空格算为一个空格main() char c, string80; int i,num=0,word=0; gets(string); for (i=0;(c=ctringi)!=0;i+) if (c= ) word=0

    22、; else if (word=0) word=1; num+; printf(“There are %d wordsn”,num);例:字符数组举例有10个字符串,按字母表顺序求排在最前面的。#include #include main( ) char s20,str1020; int i; for (i=0;i10;i+) gets(stri); strcpy(s,str0); for (i=1;i10;i+) if(strcmp(stri,s)0) strcpy(s,stri); printf(“the first :%sn”,s);作业7.1 用筛法求100之内的素数main() in

    23、t i,j,line,a101; for(i=2;i101;i+) ai=i; for(i=2;isqrt(101);i+) for(j=i+1;j101;j+) if (ai!=0&aj!=0) if(aj%ai=0) aj=0; 7.6 打印杨辉三角形#includemain() int i,j,n;long int a2020; /*定义二维数组存储生成的三角形*/printf(“Please input a number 120 :”); scanf(%d,&n); for (i=0;i1) /*从第三行开始,计算中间的所有元素值*/ for (j=1;ji;j+) aij=ai-1j

    24、-1+ai-1j; 7.8 找出二维数组中的鞍点main()int t,j,k,f=0,max,col,a34; for(t=0;t3;t+) max=at0; col=0; for(j=0;jmax) max=atj; col=j; for(k=0;k3;k+) if (akcolmax) break; if (k=3) printf(“key=%d,row=%d,col=%dn”,max,t,col); f=1; /*for*/ if (f=0) printf(“not found!n”);7.15 编程,将字符数组s2中的字符全部拷贝到s1中,但不能使用strcpy函数。 要求:s2从键盘输入。输出s1。#includemain() char s180,s280; /*定义两个字符数组*/ int i; printf(Please input string s2:); scanf(“%s”,s2); /*输入的字符串保存在s2中*/ i=0; while(s2i!=0) s1i=s2i; i+; s1i=0; /*为字符串s1加上结束符*/ printf(The string of s1 is %sn,s1);


    注意事项

    本文(C语言第7章数组.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

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




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

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开