自学内容网 自学内容网

数组函数调用、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;
}

原文地址:https://blog.csdn.net/m0_61988812/article/details/135874994

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!