第七章c语言动态数组,C语言第七章数组.doc

C语言第七章数组

一维数组定义方式:

类型说明符 数组名[数组大小] ? ? ? ?(数组名与变量名定义规则相同)

如:char c[20];

数组大小代表数组中元素个数,需要注意的是,数组下标从0开始,因此数组大小20的数组中最后一个元素为19。

注意:C语言不允许对数组大小进行动态定义。

一维数组的引用:

数组名[下标]

如:a[3]

下标可以是常量或者表达式。如:a[3]、a[2*5]。

一维数组初始化:

在定义数组是进行赋值:int a[5]={1,2,3,4,5};

只给一部分元素赋值:int a[5]={1,2,3};该情况下后两个元素为0。

使一个数组中全部元素为0:int a[5]={0,0,0,0,0}; 或 int a[5]={0};

若对全部元素赋值,可不指定数组长度 :int a[]={1,2,3,4,5,};

利用数组解决fibonacci数列:

关键部分即利用数组构建fibonacci数列,但不能动态定义数列大小,如下:

int i,a[20];

a[0]=a[1]=0;

for(i=2;i

? ? a[i]=a[i-1]+a[i-2];

“起泡法”对数组中数列进行排序:

思路:将相邻两个数进行比较,将小的调到前面。

具体操作:对n个数进行比较,共有需要比较n-1次,第一次比较时有n-1个相邻比较组合,将最大的数送至最后的位置,第二次比较时有n-2个相邻比较组合,将次大的数送至倒数第二个位置,以此类推,直至找到最小的数,放在最前面的位置。

#include

void main()

{int i,j,a[10],t;

for(i=0;i<10;i++)

{ printf("请输入第%d个数字:",i+1);

?scanf("%d",&a[i]); }

for(i=0;i<9;i++)

?for(j=0;j<9-i;j++)

?{ if(a[j]>a[j+1])

? { t=a[j];

? ?a[j]=a[j+1];

? ?a[j+1]=t;

? }

?}

printf("排序后的结果为:");

for(i=0;i<10;i++)

printf("%d,",a[i]);

}

二维数组的定义:

类型说明符 数组名[一维大小][二维大小]

如: char c[2][4];(注:最大元素为c[1][3])

引用方法同一维数组。

二维数组初始化:

分行赋值:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

将所有元素放一块赋值:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};(若大括号内元素小于数组最大元素值,则对数组中剩下的元素赋0)

部分赋值:int a[3][4]={{1},{2},{3}}

在对全部元素赋值时,可省略第一维大小,但不能省略二维大小:int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};

或使用分行赋值的方法:int a[][4]={{1,2,},{5},{9,10,11,12}};

具体可用以下算法检验二维数组赋值情况,放入VC++6.0编译器中使用:

#include

void main()

{int i,j,a[][4]={按要求使用具体的赋值形式};

for(i=0;i<3;i++)

{ for(j=0;j<4;j++)

?printf("%10d",a[i][j]);

?printf("\n");

}

}

字符数组:

字符数组元素赋值时需要加上单引号!!!!

如:a[2][3]='a';

用字符数组存储字符串:

C语言中规定以'\0'作为字符串的结束符。

字符串可直接存储与字符数组中,方法为: char c[]={"I am happy"}; ? ?或 ? ?char c[]="I am happy"; ? ?系统会在最后自动加上'\0',而对字符数组中元素一个个赋值的方式,即:char c[]={'a','b','c','d'};则不会在最后加上'\0'。

char c[]="I am happy";等价于char c[]={'I','a','m',' ','h','a','p','p','y','\0'};

而不等价于char c[]={'I','a','m',' ','h','a','p','p','y'};

只有当存储字符串是才需要使用'\0'

字符数组的输入输出:

方法一:逐个输出数组中的字符,用循环语句结合%c格式符。

方法二:将整个字符串输出,用%s格式符。注:使用%s输出字符串时,必须使用数组名,而非数组元素名,即:printf("%s",c);

当字符数组中包含多个'\0'时,遇到第一个

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值