首页 C辅导材料-数组的定义和引用

C辅导材料-数组的定义和引用

举报
开通vip

C辅导材料-数组的定义和引用计算机等级考试二级C辅导材料-数组的定义和引用 知识点提示 1.一维数组和多维数组的定义、初始化和引用。 2.字符串与字符数组 知识点 一.数组的概念 数组是C语言中构造数据类型(导出类型)之一,在程序设计中有着广泛的应用。数据是有序数据的集合,也就是说将一组同类型的数据按照连续的原则,在内存中组织起来便构成数组。数组由元素组成,数组中每一个元素都属于同一个数据类型,并且用一个统一的数组名和下标来惟一地确定数组中的元素。 如果从内存单元分配的角度来理解数组,数组的实质是解决了同类型内存单元一次性的批量分...

C辅导材料-数组的定义和引用
计算机等级考试二级C辅导材料-数组的定义和引用 知识点提示 1.一维数组和多维数组的定义、初始化和引用。 2.字符串与字符数组 知识点 一.数组的概念 数组是C语言中构造数据类型(导出类型)之一,在程序设计中有着广泛的应用。数据是有序数据的集合,也就是说将一组同类型的数据按照连续的原则,在内存中组织起来便构成数组。数组由元素组成,数组中每一个元素都属于同一个数据类型,并且用一个统一的数组名和下标来惟一地确定数组中的元素。 如果从内存单元分配的角度来理解数组,数组的实质是解决了同类型内存单元一次性的批量分配问题,而且在分配内存单元时还是连续的。 二.一维数组的定义和引用 1.一维数组的定义 格式:类型说明符 数组名[常量表达式]; 说明: ⑴ 数组名的命名规则与变量名相同,遵循标识符的命名规则。 ⑵ 数组的长度或大小,只能是常量表达式,C中不允许对数组的大小作动态定义。 2.一维数组元素的引用 引用形式:数组名[下标] 说明: ⑴ 下标可以是整常量或整型表达式。可以被赋值,也可以出现在表达式中。 ⑵ 下标的起始值是从0开始的,在引用数组元素时,对下标不进行越界检查。 ⑶ 对于下标值为i的元素,则其在数组的位置顺序为i+1。 3.一维数组的初始化 在定义数组时,对数组所有元素或部分赋初值,称数组的初始化。一维数组的初始化可用以下的方法: ⑴ 类型说明符 数组名[常量表达式]={初值表}; ⑵ 类型说明符 数组名[]={初值表}; 说明:不失一般性,定义数组时,若没有对其进行初始化,则其元素的值是不确定值。若对其进行了初始化,则元素的值为指定的初值或零。另外,初值的个数不能超过元素的个数。 4.一维数组元素的输入及输出 不失一般性,一维数组元素的输入输出操作,是通过循环实现,也就是对下标的遍历。 ·数组元素的输入操作实现 int a[M],i; for(i=0;i void main() { int num,num1,r,n=0; char dtor[32]; printf("请输入要转换的数:"); scanf("%d",&num1); num=num1; printf("要转换为几进制数(2~16):"); scanf("%d",&r); do { if(num%r>=10) dtor[n]=num%r+55; else dtor[n]=num%r+48; num=num/r; if(num==0) break; n++; }while(1); printf("十进制数%d与%d进制数",num1,r); for(;n>=0;n--) printf("%c",dtor[n]); printf("等值\n"); } [算例2] 起泡排序 #include #define M 100 void main() { int num[M],i,j,n,t; printf("对几个数进行排序(<=101)?:"); scanf("%d",&n); printf("请输入要排序的%d个数:\n",n); for(i=0;inum[j+1]) { t=num[j]; num[j]=num[j+1]; num[j+1]=t; } printf("排序后的结果为:\n"); for(i=0;i #define M 100 void main() { int num[M],i,j,k,n,t; printf("对几个数进行排序(<=101)?:"); scanf("%d",&n); printf("请输入要排序的%d个数:\n",n); for(i=0;inum[j]) k=j; if(k!=i) { t=num[i]; num[i]=num[k]; num[k]=t; } } printf("排序后的结果为:\n"); for(i=0;i #define M 100 void main() { int num[M],top,bot,loca,flag,i,n,num1; char yn; printf("输入原始序列数的个数:"); scanf("%d",&n); printf("输入第一个数:"); i=0; scanf("%d",&num[i]); while(inum1) bot=loca-1; else top=loca+1; }while(top<=bot&&flag==0); if(flag==0) printf("要查找的数不存在!\n"); printf("继续查找吗(Y/n)?"); getchar(); //吃掉上一个回车符 yn=getchar(); //或scanf("%d",&yn); }while(yn=='Y'||yn=='y'); } [算法6] 插入算法 #include #define M 100 void main() { int num[M],j,i,n,num1; char yn; printf("输入原始序列数的个数:"); scanf("%d",&n); printf("输入第一个数:"); i=0; scanf("%d",&num[i]); while(i=i;j--) num[j+1]=num[j]; num[i]=num1; } n++; printf("插入后的数据序列为:\n"); for(i=0;i #define M 100 void main() { int num[M],i,m,n,k,count; printf("有多少人数:"); scanf("%d",&m); printf("每次报到多少数:"); scanf("%d",&n); for(i=1;i<=m;i++) num[i]=i; //编序号 i=1;count=0;k=0; //初始化,k为报数计数器,count为统计出列人数 printf("出列顺序为:\n"); do { if(num[i]!=0) { k++; if(k%n==0) { num[i]=0; printf("%d,",i); if(count==m-1) printf("\n最后出列的是%d号\n",i); count++; } } i++; if(i>m) i=1; } while(count #define M 3 #define N 4 void main() { int a[M][N],b[N][M],i,j; //以下为输入部分 for(i=0;i #define M 3 #define N 4 #define L 3 void main() { int a[M][N],b[N][L],c[M][L],i,j,k; //以下为输入部分 for(i=0;i0 【2】 strcpy(a,b) [例4] 以下程序的功能是,将二维数组x各行上的最小值,存放在一维数组a的对应位置上,请填空。 int i,j,x[N][M],a[N]; for(i=0;ix[i][j]) 【2】; } for(i=0;i #include #define M 5 void main() { char str[M][80],t[80],i,j,k; //以下为字符串的输入 for(i=0;i0) k=j; if(k!=i) { strcpy(t,str[k]); strcpy(str[k],str[i]); strcpy(str[i],t); } } //以下为输出部分 for(i=0;i #include #define M 5 void main() { char str[80],ch,i,j; gets(str); //输入原始串 ch=getchar(); //输入要删除的字符 for(i=0,j=0;str[i];i++) if(str[i]!=ch) str[j++]=str[i]; str[j]='\0'; puts(str); } [算例3] 两字符串的复制 #include #include #define M 5 void main() { char str1[80],str2[80],i; gets(str1); //输入原始串 gets(str2); for(i=0;str2[i];i++) str1[i]=str2[i]; str1[i]='\0'; puts(str1); } [算例4] 两字符串的连接 #include #include #define M 5 void main() { char str1[80],str2[80],i,j; gets(str1); //输入原始串 gets(str2); for(i=0;str1[i];i++) ; for(j=0;str2[j];j++) str1[i++]=str2[j]; str1[i]='\0'; puts(str1); } [算例5] 两字符串比较大小 #include #include #define M 5 void main() { char str1[80],str2[80],lengh; int i; gets(str1); //输入原始串 gets(str2); for(i=0;str1[i]==str2[i]&&str1[i]&&str2[i];i++) ; lengh=str1[i]-str2[i]; if(lengh>0) printf("%s大于%s!\n",str1,str2); else if(lengh<0) printf("%s小于%s!\n",str1,str2); else printf("%s等于%s!\n",str1,str2); } [算例6] 求字符串的串长 #include #include #define M 5 void main() { char str[80],lengh; int i; gets(str); //输入原始串 for(i=0,lengh=0;str[i];i++) lengh++; printf("%s的长度为:%d,%d\n",str,lengh,i); } 第 17 页 共 17 页
本文档为【C辅导材料-数组的定义和引用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_266166
暂无简介~
格式:doc
大小:92KB
软件:Word
页数:17
分类:互联网
上传时间:2012-03-17
浏览量:51