一、C语言函数知识思维导图
二、作业
对strlen、strcpy、strcmp、strcat进行函数封装并在main函数中调用(分文件存放)
1、01_main.c文件(main函数文件)
#include <stdio.h>
#include <string.h>
#include"./01_function.h"
int main(int argc, const char *argv[])
{
char str1[40]="";
char str2[40]="";
printf("请输入字符串str1和字符串str2:");
scanf("%s %s",str1,str2);
strlen1(str1);
printf("\n");
strcmp1(str1,str2);
printf("\n");
strcpy1();
printf("\n");
strcat1(str1,str2);
return 0;
}
2、01_function.h(头文件:函数的声明)
#ifndef _FUNCTION_H //如果没有定义过_function_h
#define _FUNCTION_H //那么定义_function_h
void strcat1(char str1[],char str2[]);
void strlen1(char str1[]);
void strcmp1(char str1[],char str2[]);
void strcpy1();
#endif
3、function.h(功能函数文件)
#include <stdio.h>
#include <string.h>
//strlen
void strlen1(char str1[])
{
int i=0;
for(i=0;str1[i]!='\0';i++)
{
}
printf("%d",i);
}
//strcmp
void strcmp1(char str1[],char str2[])
{
int i,j;
for(i=0;str1[i]!='\0';i++)
{
}
for(j=0;str2[j]!='\0';j++)
{
}
if(i>j)
printf("字符串1大于字符串2\n");
else if(i<j)
printf("字符串1小于字符串2\n");
else
printf("字符串1与字符串2相等\n");
}
//strcpy
void strcpy1()
{
char str1[40] = "";
char str2[40] = "";
int i,j;
printf("请输入str1:");
scanf("%s",str1);
for(i=0;str1[i]!='\0';i++)
{
str2[i] = str1[i];
}
printf("%s\n",str2);
}
//strcat
void strcat1(char str1[],char str2[])
{
int i,j;
i=strlen(str1);
for(j=0;str2[j]!='\0';j++)
{
str1[i] = str2[j];
i++;
}
printf("%s\n",str1);
}
三、练习
1、利用递归求4的阶乘
2、利用递归求斐波拉契数列的第二十项的值
#include <stdio.h>
int factorial(int n) //阶乘
{
if(1 == n)
{
return 1;
}
else
{
return n*factorial(n-1);
}
}
int fibonacci(int n)
{
if(n<=2)
{
return 1;
}
else
{
return fibonacci(n-1)+fibonacci(n-2);
}
}
int main(int argc, const char *argv[])
{
//1、求菲波拉契数列前20项和
int n;
printf("请输入项数:");
scanf("%d",&n);
int sum = fibonacci(n);
printf("菲波拉契数列的前%d项和为:%d\n",n,sum);
//2、求4的阶乘
printf("请输入阶乘的阶数:");
scanf("%d",&n);
int mul = factorial(n);
printf("%d的阶乘为%d\n",n,mul);
return 0;
}
//运行结果
ubuntu@ubuntu:07_test$ gcc recursion.c
ubuntu@ubuntu:07_test$ ./a.out
请输入项数:20
菲波拉契数列的前20项和为:6765
请输入阶乘的阶数:4
4的阶乘为24