1.知识点
在C语言中,数组名作为函数参数时,实际上传递的是数组首元素的地址。这意味着在函数内部,我们可以通过指针来操作数组。
数组可以在被调函数修改主调函数的内容。
1.数组相关函数。
1.1打印数组元素
void printArray(int a[],int len)//打印数组元素;
{
int i;
for(i = 0;i<len;++i)
{
printf("%d,",a[i]);
}
printf("\b \n");
}
1.2数组内元素求和
int sumOfTheArray(int a[],int len)//数组内元素求和;
{
int i,sum = 0;
for(i = 0;i<len;++i)
{
sum += a[i];
}
return sum;
}
1.3数组最大值
int maxOfTheArray(int a[],int len)//数组最大值
{
int max,i;
max = a[0];
for(i = 1;i<len;++i)
{
if(max <a[i])
{
max = a[i];
}
}
return max;
}
1.4数组元素+10。
void fn(int a[],int len)//数组元素+10;
{
int i;
for(i = 0;i<len;++i)
{
a[i] += 10;
}
}
1.5数组逆序
void reverse(int a[],int len)//数组逆序;
{
int i;
for(i = 0;i<len/2;++i)
{
int t;
t = a[i];
a[i] = a[len-i-1];
a[len-i-1] = t;
}
}
1.6选择排序
void choiceSort(int a[],int len)//选择排序
{
int i,j,t;
for(i = 0;i<len;++i)
{
for(j = 0;j<len;++j)
{
if(a[i]<a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
}
1.7冒泡排序
void bubbleSort(int a[],int len)//冒泡排序
{
int i,j,t;
for(i = len-1;i>0;--i)
{
for(j = 0;j<i;++j)
{
if(a[j]>a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
}
1.8插入排序
void inserSort(int a[],int len)//插入排序
{
int i,t,j;
for(i = 1;i<len;++i)
{
t=a[i];
j=i;
while(j >0&&a[j-1]>t)
{
a[j]= a[j-1];
--j;
}
a[j] = t;
}
}
1.9二分法查找
int binarySearch(int a[],int len,int n)
{
int begin,mid,end;
begin = 0;
end = len -1;
while(begin <= end) //二分法查找
{
mid = (begin + end) / 2;
if(a[mid] > n)
{
end = mid -1;
}
else if(a[mid] < n)
{
begin = mid +1;
}
else
{
return mid;
}
}
return -1;
}
2.字符数组相关函数
2.1打印字符数组
void Puts(char s[])//打印字符数组;
{
int i = 0;
while(s[i] !='\0')
{
putchar(s[i]);
++i;
}
putchar(10);
}
2.2返回数组长度
int myStrlen(char s[])//返回数组长度;
{
int i = 0;
while(s[i] != '\0')
{
++i;
}
return i;
}
2.3字符串复制
void myStrcpy(char dest[],char src[])//字符串复制
{
int i = 0;
while(src[i] != '\0')
{
dest[i] = src[i];
++i;
}
dest[i] = '\0';
}
2.4字符串拼接
void myStrcat(char dest[],char src[])//字符串拼接;
{
int len = myStrlen(dest);
int i = 0;
while(src[i] != '\0')
{
dest[len +i] = src[i];
++i;
}
dest[len+i] = '\0';
}
2.5字符串比较
int myStrcmp(char s1[],char s2[])//字符串比较;
{
int i = 0;
while(s1[i] == s2[i] && s1[i] != '\0' && s2[i] != '\0')
{
++i;
}
return s1[i]-s2[i];
}
3.二维数组相关函数
3.1二维数组打印
void printArray2D(int a[][4],int rows)//二维数组打印;
{
int i,j;
int cols = sizeof(a[0])/sizeof(a[0][0]);
for(i = 0;i<rows;++i)
{
for(j = 0;j<cols;++j)
{
printf("%2d ",a[i][j]);
}
putchar(10);
}
}
3.2二维数组求最大值
int maxOfTheArray2D(int a[][4],int rows)//二维数组求最大值;
{
int max,i,j;
int cols = sizeof(a[0])/sizeof(a[0][0]);
max = a[0][0];
for(i = 0;i<rows;++i)
{
for(j = 0;j<4;++j)
if(max <a[i][j])
{
max = a[i][j];
}
}
return max;
}
3.3二维数组倒序
void reverse2D(int a[][4],int rows)//二维数组倒序;
{
int i,j;
int cols = sizeof(a[0])/sizeof(a[0][0]);
for(i = 0;i<rows;++i)
{
for(j = 0;j<cols/2;++j)
{
int t;
t = a[i][j];
a[i][j] = a[i][cols-j-1];
a[i][cols-j-1]= t;
}
}
}
3.4二维数组边缘求和
int sumOfTheArraEdgey2D(int a[][4],int rows)//二维数组边缘求和;
{
int sum,i,j;
int cols = sizeof(a[0])/sizeof(a[0][0]);
sum = 0;
for(i = 0;i<rows;++i)
{
for(j = 0;j<4;++j)
{
if(i == 0||j == 0||i ==2||j ==3)
{
sum += a[i][j];
}
}
}
return sum;
}
3.5二维数组元素*f
void fn2D(int a[][4],int rows,float f)//二维数组元素*f;
{
int i,j;
int cols = sizeof(a[0])/sizeof(a[0][0]);
for(i = 0;i<rows;++i)
{
for(j = 0;j<4;++j)
{
a[i][j]*=f;
}
}
}
4.字符串相关函数
4.1打印字符串
void printstrings(char s[][100],int rows)//打印字符串;
{
int i;
for(i = 0;i<rows;++i)
{
puts(s[i]);
}
}
4.2字符串倒序
void reverseStrings(char s[][100],int rows)//字符串倒序;
{
int i;
for(i =0;i<rows/2;++i)
{
char t[100];
myStrcpy(t,s[i]);
myStrcpy(s[i],s[rows-i-1]);
myStrcpy(s[rows-i-1],t);
}
}
4.3字符串排序
void sortStrings(char s[][100],int rows)//字符串排序;
{
int i,j;
for(i = 0;i<rows;++i)
{
for(j = i+1;j<rows;++j)
{
if(myStrcmp(s[i],s[j])>0)
{
char t[100];
myStrcpy(t,s[i]);
myStrcpy(s[i],s[j]);
myStrcpy(s[j],t);
}
}
}
}
4.5字符串查找
int bianaryFindStrings(char s[][100],int rows,char str[])//字符串查找;
{
int begin = 0;
int end = rows -1;
int mid;
sortStrings(s,rows);
while(begin <= end)
{
mid =(begin +end)/2;
if(myStrcmp(str,s[mid])>0)
{
begin = mid +1;
}
else if(myStrcmp(str,s[mid])<0)
{
end =mid - 1;
}
else
{
return mid;
}
}
return -1;
}