1.将strlen strcpy strcmp strcat打包成函数
a. mystrlen, mystrcpy mystrcmp mystrcat.
b.mystrcpy mystrcmp mystrcat不需要返回值,因为指针没讲,无法返回数组
1.1mystrlen
#include <stdio.h>
int myStrlen(char str[]);
int main(int argc, const char *argv[])
{
char arr[100];
gets(arr);
printf("%d\n",myStrlen(arr));
return 0;
}
int myStrlen(char str[]){
int i=0;
for(;str[i]!='\0';i++);
return i;
}
1.2mystrcpy
#include <stdio.h>
void myStrcpy(char str[],char str1[]);
int main(int argc, const char *argv[])
{
char arr[100];
char arr1[100];
gets(arr);
gets(arr1);
myStrcpy(arr,arr1);
return 0;
}void myStrcpy(char str1[],char str2[]){
for(int i=0;;i++){
str1[i]=str2[i];
if(str2[i]=='\0')
break;
}
puts(str1);
}
1.3mystrcmp
#include <stdio.h>
int myStrcmp(char str[],char str1[]);
int main(int argc, const char *argv[])
{
char arr[100];
char arr1[100];
gets(arr);
gets(arr1);
printf("%d\n",myStrcmp(arr,arr1));
return 0;
}
int myStrcmp(char str1[],char str2[]){
int i=0,res;
for(;;i++){
res=str1[i]-str2[i];
if(res!=0)
break;
else if(str2[i]=='\0')
break;
}
return res;
}
1.4mystrcat
#include <stdio.h>
void myStrcat(char str[],char str1[]);
int main(int argc, const char *argv[])
{
char arr[100];
char arr1[100];
gets(arr);
gets(arr1);
myStrcat(arr,arr1);
return 0;
}void myStrcat(char str1[],char str2[]){
int i;
for(i=0;str1[i]!=0;i++);
for(int j=0;str2[j]!='\0';i++,j++){
str1[i]=str2[j];
}
str1[i]='\0';
puts(str1);
}
2.求斐波那契数列的第n项。
1、1、2、3、5、8、13、21、34、...,第一项和第二项时候都是输出1
公式:f(n)=f(n-1)+f(n-2);例如第20项,6765
#include <stdio.h>
int FS(int n);
int main(int argc, const char *argv[])
{
printf("%d\n",FS(20));
return 0;
}
int FS(int n){
if(n==1 || n==2) return 1;
else return FS(n-1)+FS(n-2);
}
3.输出一个十行的杨辉三角
提示:当前数据=上一行的当前列+上一行的前一列
#include <stdio.h>
int main(int argc, const char *argv[])
{
int arr[10][10]={0};
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
if(j==0) arr[i][j]=1;
else if(i>0&&j!=0)
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
if(arr[i][j]>0) printf("%d\t",arr[i][j]);
}
printf("\n");
}
return 0;
}