您的位置:首页 > 其它

6.利用数组处理批量数据

2013-04-06 00:17 585 查看
1.一维数组的定义

定义数组的一般形式为:类型符 数组名[常量表达式]

例如:int a[10];char str[20];a[10]表示数组有10个元素,元素从0开始,分别是0~9。

注:常量表达式不能为变量,有一种情况可以是在函数里面。如:

void func(int n)

{

int a[2*n];

}

在调用函数时,这里由于n是从实参得到值。这种情况称为“可变长数组”。但是记住,我们在执行这个函数的时候,数组长度是确定的,因为肯定传了n的确定值进去了。

2.一维数组的初始化

我们可以给数组初始化。

1)例如int a[10]={0,1,2,3,4,5,6,7,8,9};

2)给部分值赋值 int a[10] = {0,1,2,3,4,5} 表示给前面6个元素赋值。

3)如果要一个数组的值全相同。 int a[10] = {0} ;该数组所有元素值为0

4)由于赋值的时候,已经确定了数组长度,所以可以不指名常量表达式。int a[]={1,2,3,4,5};

3.冒泡算法附件

4.定义二维数组

定义二维数组和一维数组类似:如 float pay[3][6] ; 定义了一个float类型的二维数组,第一维3个元素,第二维6个元素。

在内存中,二维数组中元素排列顺序按行存放,即先存放第一行所有元素,再存放第二行所有元素...…

5.二维数组初始化

例如:int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}} ;

如果要给某特定列赋值,可以用0省略前面的,如:

int a[3][4] = { {1} , {0,6} , {0,0,1} } ;

6.打擂台算法附件

7.C语言中没有字符串类型,字符串是存放在字符型数组中的

8.定义字符数组

定义字符数组与定义数值型的方法类似:

char c[10];

初始化: char c[]={'A','n','d','y'} ;

或者使用字符串常量来初始化:char c[]={"Andy"};或 char c[]="Andy" ;

需要注意的是:字符串初始化的长度与数组初始化的长度不同,字符串初始化会在最后默认加上字符串结束标志"\0"。所以它长度多1。

9.字符串结束标志

定义一个字符数组长度为100,而实际有效字符只有40个。为了测得字符的长度,C语言规定了一个字符串结束标志“\0”。也就是说,在遇到字符串“\0”的时候,就表示字符串结束,它前面的字符组成一个字符串。

10.字符串输入输出

1)逐个字符输入输出,用格式符"%c"。

2)整个字符串一次输入或输出,用格式符"%s"。

11.scanf输入字符串注意

假如我们需要输入:how are you? 的时候; 如果这样定义

char str[13] ;

scanf("%s",str);

由于系统默认把空格字符作为字符串之间的分隔符,所以在输入字符串的时候,默认在how后面加上了"\0"结束了字符串,因此系统只将how送到了str中。

正确的输入法:

char str1[5],str2[5],str3[5];

scanf("%s%s%s",str1,str2,str3);

注:scanf函数输入项如果是字符数组名,则不要再加上地址符"&",因为C语言中数组名代表该数组的起始地址。输入的数组如果是整型数组或不是字符数组,则必须加上&。

12.输出数组的起始地址

char c[]="China";

printf("%o",c)

输出原理:输出一个数组值的原理是得到一个数组的起始地址,然后一直输出字符直到遇到一个"\0"就停止下来。

13.字符串函数

1)puts(字符数组) //作用是将一个字符串输出到终端

2)gets(字符数组) //输入字符串函数,将终端输入值加载到字符数组中

3)strcat(字符数组1,字符数组2) //字符串连接函数,把字符数组2连接到字符数组1中

注:字符数组1必须足够大,以便容纳连接后的新数组。

4)strcpy和strncpy //字符串复制函数

strcpy(字符数组1,字符串2),表示把字符串2复制到字符数组1中去。

注:字符数组1必须定义足够大,起码要不小于字符串2的长度;字符数组1必须写成数组名形式;不能通过赋值语句直接将一个字符串或字符数组给一个字符数组,例如:str1="China"和str1=str2都是不合法的(其中str1是一个字符数组,str2是一个字符数组)。我们只能用strcpy函数将一个字符串复制到另一个字符数组中去。

strncpy(str1,str2,2),表示把str2中最前面的2个字符复制到str1中替代str1中原有的最前面2个字符,但复制的字符个数n不应该大于str1中的原有字符(不包括\0)

5)strcmp(字符串1,字符串2) //字符串比较函数,返回值为0,正或负

注:字符串比较将两个字符自左往右逐个比较(按ASCII码的值比较),直到出现不同的字符或遇到\0为止。比较结果由函数值带回,str1=str2值为0 ;str1>str2值为正数; str1<str2值为负数。

6)strlen(字符数组) //测试字符串长度(不包括\0在内)

7)strlwr(字符串) //将字符串中大写字母换成小写字母

8)strupr(字符串) //将字符串中小写字母替换成大写字母
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: