数组函数调用、strcpy、strcat、strcmp、strlen函数编写———C语言(day11)
首先先来一个练习,编写斐波拉契数列,并输出前几项的值
#include<stdio.h>
int fibo(int n)
{
int sum = 0;
if(n == 1 || n == 2)
{
sum = 1;
}else if(n > 2)
{
sum = fibo(n-1) + fibo(n-2);
}
return sum;
}
void inputfibo(int *a,int len)
{
int i = 0;
for(i = 0;i < len;++i)
{
a[i] = fibo(i+1);
}
}
void printffibo(int *a,int len)
{
int i = 0;
for(i = 0;i < len;++i)
{
printf("%d ",a[i]);
}
putchar('\n');
}
int main(void)
{
int n;
printf("Please input one number:");
scanf("%d",&n);
int a[n];
inputfibo(a,n);
printffibo(a,n);
return 0;
}
结果如下图所示:
数组作为函数参数
1.数组元素作为函数实参 — 此时函数的形参 是一个与实参类型相同变量即可
void printInt(int a);
printInt(a[0]);
2.数组作为函数的形参
void printArray(int a[10]); //此时 形式上看 是数组
//编译器最终 是当做指针变量来看的
void printArray(int *a); //实际是这样的
3.一维整型数组作为函数的形参:
a.一个是数组形式
b.数组长度
void printArray(int a[10],int len); //形参
printArray(a,len); //实参 -(1)数组名,一个是 (2)数组长度
一维字符型数组:一维字符型数组,做函数形参
void printStr(char s[1000]); //形式上 写成字符数组的形式
void printStr(char *s); //编译器最终当做指针变量处理
函数调用:
printStr(s); //数组名
//注意: 此时不需要传数组长度 ---因为字符串有结束标志
strcpy实现
void Str_cpy(char *dest,char *src)
{
for(int i = 0;;++i)
{
if(src[i] == 0)
{
break;
}
dest[i] = src[i];
}
}
strcat实现
void Str_cat(char *dest,char *src)
{
int i = 0;
int j = 0;
while(src[i])
{
++i;
}
while(src[i] = dest[j])
{
++j;
++i;
}
}
strcmp实现
int Str_cmp(char *dest,char *src)
{
int i = 0;
while(dest[i] == src[i])
{
i++;
}
return dest[i] - src[i];
}
strlen实现
long str_len(char *s)
{
int i = 0;
while(s[i] != 0)
{
++i;
}
return i;
}