1.代码优化
代码:
#include <stdio.h>
#include <string.h>
int fn(int num);
int main(int argc, const char *argv[])
{
int num = 0;
scanf("%d",&num);//5
int sum =fn(num);
if(sum==-1)
{
return 0;
}
printf("sum = %d\n",sum);
return 0;
}
int fn(int num)//5
{
if(num==1)
{
return 1;
}
else if(num>1)
{
return fn(num-1)*(num);
}
else
{
printf("错误\n");
return -1;
}
}
2.三个函数族封装(除strlen)
strcmp(比较):
#include<stdio.h>
#include<string.h>
int mystrcmp(char *s1,char *s2)
{
for(;*s1!='\0'||*s2!='\0';s1++,s2++)
{
if(*s1==*s2)
{
continue;
}
else
{
return *s1-*s2;
}
}
}
int main(int argc,const char *argv[])
{
char arr[30]="",brr[30]="";
printf("请输入字符串arr>>");
gets(arr);
printf("请输入字符串brr>>");
gets(brr);
printf("%d\n",mystrcmp(arr,brr));
printf("%d\n",strcmp(arr,brr));
return 0;
}
strcpy(复制):
#include<stdio.h>
#include<string.h>
void mystrcpy(char *s1,char *s2)
{
for(;*s2!='\0';s1++,s2++)
{
*s1=*s2;
}
*s1='\0';
}
int main(int argc,const char *argv[])
{
char arr[30]="",brr[30]="";
printf("请输入字符串arr>>");
gets(arr);
printf("请输入字符串brr>>");
gets(brr);
mystrcpy(arr,brr);
puts(arr);
printf("%s\n",strcpy(arr,brr));
return 0;
}
strcat(拼接):
#include<stdio.h>
#include<string.h>
void mystrcat(char *s1,char *s2)
{
for(;*s1!='\0';s1++);
for(;*s2!='\0';s1++,s2++)
{
*s1=*s2;
}
*s1='\0';
}
int main(int argc,const char *argv[])
{
char arr[30]="",brr[30]="";
printf("请输入字符串arr>>");
gets(arr);
printf("请输入字符串brr>>");
gets(brr);
mystrcat(arr,brr);
puts(arr);
return 0;
}
3.斐波那契数列
代码:
#include<stdio.h>
#include<string.h>
int dg(int x)
{
if(x>=3)
{
return dg(x-1)+dg(x-2);
}
else
{
return 1;
}
}
int main(int argc,const char *argv[])
{
int num;
printf("想计算第几项斐波那契数列的值>>");
scanf("%d",&num);
getchar();
printf("%d\n",dg(num));
return 0;
}