首页 > 编程知识 正文

c语言数组下标的数据类型,数组元素下标的数据类型为

时间:2023-05-04 16:05:05 阅读:135712 作者:319

引导词; 数组是同一类型的数量组,以下是网络编辑给大家分享的C语言数组知识点。 欢迎参考学习。

一.排列声明

声明数组的语法是数组名称后加上方括号中的维的说明。 下面对一维数组进行说明。 整数数组的示例如下所示。

int array[10];

此语句定义具有10个整数元素的数组array。 这些整数按顺序存储在内存中。 数组的大小是每个元素的大小乘以数组元素的数量。 方括号中的维表达式可以包含运算符,但计算结果必须为长整型值。 这个数组是一维的。

下一个声明是合法的。

int offset[5 3];

float count[5*2 3];

接下来是不合法的

int n=10;

int offset[n]; /*声明时,变量为数组维数*/

二.用下标访问数组元素

int offset[10];

说明该序列为一维序列,其中有10个数,分别为offset[0]、offset[1]、……offset[9]; 请注意,数组的第一个元素的下标从0开始。 有些刚学编程的人经常在这里犯错误。

offset[3]=25;

上面的示例将25代入整数数组offset的第四个元素。

赋值时,可以将变量用作数组的下标。

main () )

{

int i,offset[10];

for(I=0; i10; I ) Scanf(%d,offset[i] );

for(I=9; i=0; I--; printf(%d,offset[i] );

打印f (n );

}

标题的意思是,首先输入10个整数,存储在数组中,然后按相反顺序输出。

三.数组初始化

如上所述,变量可以在定义时初始化。 也可以排列。

intarray [5]={ 1,2,3,4,5 };

定义数组时,可以使用大括号内的初始化表进行初始化。 初始化值的数量可以等于数组元素的数量。

如果初始化的数量大于元素的数量,将发生编译错误。 如果少于元素个数,则其馀元素被初始化为0。

如果维表达式为空,则数组元素的数量由初始化值的数量隐式指定,如下式所示:

intarray [ ]={ 1,2,3,4,5 };

这也表明数组的数组元素的数量为5。

main () )

{

int i,array [ ]={ 1,3,5,7,9,11 };

for(I=0; i5; I ) printf(%d,array[i] );

打印f (n );

}

最终的结果是1 3 5 7 9

四.文字排列

整数和浮点数的排列很清楚。 一维数组还具有字符类型的数组。

char array[5]={'H ',' e ',' l ',' l ',' O'};

单个字符必须用单引号括起来。 另外,由于字符和整数是等效的,所以上面的字符类型数组也可以这样表示。

char array [5]={ 72,69,76,76,79 }; /*用相应的ASCII代码*

举个例子:

main () )

{

int i;

char array[5]={'H ',' e ',' l ',' l ',' O'};

for(I=0; i5; I ) printf(%d,array[i] );

打印f (n );

}

最终的输出结果为72 69 76 76 79

但是,字符类型数组和整数类型数组也有不同之处。 请看下面的东西。

char array[]=HELLO;

如果可以看到内部,实际上编译器就是这样处理的。

char array[]={'H ',' e ',' l ',' l ',' o ',''};

请看上面的最后一个字符“”。 这是一个字符常量,turbo c编译器总是在字符类型数组的末尾自动加。 这是文字的结束标志。 因此,HELLO只有5个字符,但数组中存储的数量为6。 但是,数组的长度还是5。

int i;

I=Strlen(Array ); /*求出字符串的长度,在string.h中输入*/

已知I仍为5,表示尚未计算最后一个“”。

#include string.h

main () )

{

int i,j;

char array [ ]=094387 fdhgkdladhladaskdh;

j=Strlen(Array );

for(I=0; I

打印f (n );

}

实际上,可以通过判断“”来输出字符串。 请看下面的东西。

mai

n()

{

int i;

char array[]=094387fdhgkdladhladaskdh;

for(i=0;array[i]!='';i++) printf(%c,array[i]);

printf(n);

}

举几个例子:

1.输入10个整数存入数组中,然后把它们从小到大排列并放在同一数组中。(思路:先找出最小的,放在第一个位置,为了防止把原先的数覆盖掉,可以把原先的第一个数和最小数的位置互换)。

main()

{

int array[10];

int i,j,min,stmp;

for(i=0;i<10;i++) scanf(%d,&array[i]);

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

{

min=array[i];

for(j=i+1;j<10;j++)

if(min>array[j]) /*里面的4行语句很重要*/

{

min=array[j];

stmp=array[i];

array[i]=array[j];

array[j]=stmp;

}

}

for(i=0;i<10;i++) printf(%d ,array[i]);

printf(n);

}

分析:先让第一个值作为基准,如果后面有比它小的,那么就把这两个数互换一下,同时把基准换成小的值。两个数互换应该这样(stmp=a;a=b;b=stmp;),而不是(a=b;b=a;),想想这是为什么?必须要用一个变量作为桥梁。这种一个一个的把最小的放在前面的排序方法,我们形象的叫做冒泡法。

2.输入一行字符存入数组,然后把他们反序存入到同一数组中。

#include stdio.h

main()

{

char c,stmp,array[80];

int i=0,j;

while((c=getchar())!='n') /*注意这儿的用法*/

array[i++]=c;

array[i]=''; /*为什么要加''?是否可以不加?*/

for(j=i-1;j>=i/2;j--)

{

stmp=array[j];

array[j]=array[i-1-j];

array[i-1-j]=stmp;

}

for(i=0;array[i]!='';i++) printf(%c,array[i]);

printf(n);

}

3.一个已经排好序的数组,输入一个数,利用二分法把这个数从原数组中删除,数组顺序保持不变。如原数组为1,3,5,7,9,11,13,15,17,19,待删除的数为13,则输出为1,3,5,7,9,11,15,17,19。

二分法:每次都是判断中间的数是否满足要求,若满足则删除,若不满足,则把该数当作边界,然后再找中点。例如这一题,第一次的是10个数的中点,为11,发现11<13,则找11-19的中点15,发现15>13,再找11-15的中点13,正好,则删除。

main()

{

int array[10]={1,2,3,5,8,15,20,30,100,200};

int first=0,end=9,middle=(first+end)/2,num,i;

scanf(%d,&num);

while(array[middle]!=num) /*注意这里面的三行代码*/

{

if(array[middle]>num) end=middle;

else first=middle;

middle=(first+end)/2;

}

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

{

if(i>=middle) array[i]=array[i+1];

printf(%d ,array[i]);

}

printf(n);

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。