数组专题 实用函数体
数组(Array)是个实用的工具
数组,随着学识的增长,我对其理解愈深,知其功用,记之为快。
遍历及其基本操作
一维数组的指针遍历
#include<stdio.h>
int main()
{
int array[4] ={10,20,30,40};
int count = 0;
for(count = 0;count < 4;count++)
printf("%d ",*(array+count));
return 0;
}
二维数组的指针遍历
#include<stdio.h>
int main()
{
int array[10][10] = {1,2,3,4,5,6,7};//假设填满了数据
int i, j;
for(i = 0; i < 10; i++)
for(j = 0; j < 10; j++)
printf("%d",*(*(array+i)+j));
printf("\n");
return 0;
}
我们在解决问题过程中,不免用到数学计算。
这时,我们就不得不提起数组的运算,举个例子。
计算1~10中偶数的平方和
#include<stdio.h>
#include<conio.h> // C99
#include<math.h>
int even(int m)
{
return m % 2 == 0 ? 1 : 0;
}
int main()
{
int a[10];
int i;
for(i = 0; i < 9; i++)
a[i] = i + 1;
for(i = 0; i < 9; i++)
{
//检查下标是否为偶
if(even (i + 1))
//变式;
//任何数学运算;
printf("%f\n",pow((float)a[i],2));
}
getch(); // C99
return 0;
}
再举一例
将指定范围内的元素加起来函数
int add(int a[],int start,int end)
{
int i = start;
int sum = 0;
for(;i <= end; i++)
{
sum += a[i];
}
return sum;
}
调用实例
int a[] = {1,2,3,4,5,6,7,8,9,10};
想对 1~10 求和
add(a,0,9)
如何将数组中奇数位置和偶数位置的元素加起来
double add(double a[],int start, int end,int flag)
{
int i = start;
double sum = 0;
if(flag == 0)
{
for(; i <= end; i++)
sum += a[i];
}
if(flag == 1)
{
if(start % 2 == 0)
i = start;
else
i = start + 1;
for(; i <= end; i += 2)
sum += a[i];
}
if(flag == 2)
{
if(start % 2 != 0)
i = start;
else
i = start + 1;
for(; i <= end; i+=2)
sum += a[i];
}
return sum;
}
执行包含外部变量的运算
乘以数组元素
int mult = 1;
void mul(int a[],int size)
{
for(i = 0; i < size; i++)
mult *= a[size];
}
将偶数元素加起来
int evenadd(int a[],int size)
{
int i = 0;
int sum = 0;
for(; i < size ; i++)
{
if(a[i] % 2 == 0)
sum += a[i];
}
return sum;
}
排序(字典序)
按字母顺序排序数组
void sort(char a[], int size)
{
char *temp;
int i, j;
for(j = 0; j < size ; j++)
for(i = 0; i < j; i++)
{
if(strcmp(a[i],a[i+1])>0)
{
strcpy(temp,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],temp);
}
}
for(i = 0; i < size; i++)
printf("%s\n",a[i]);
}
此方法也适用于字母+数字
调用
char *name["aaa","bbb",“ccc"];
sort(names,4);