计算机等级考试二级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,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。