第一题:
main.c:
#include"head.h"
int main(int argc, const char *argv[])
{
char str[10]={"abcdefg"};
MyStrRev(str);
char a[]="hello";
StrRevRec(a,strlen(a));
printf("\n");
char dest[20]="xjx";
char src[]="xjj";
char *p=MyStrcat(dest,src);
printf("%s\n",p);
char str1[20]="xdbdubsfd";
char str2[10]="love";
int n;
MyStrcmp(str1,str2);
if((n=MyStrcmp(str1,str2))==0)
{
printf("str1=str2\n");
}
else if(n>0)
printf("str1>str2\n");
else
printf("str1<str2\n");
char str3[20]="wsadgud";
char str4[10]="hello";
MyStrcpy(str3,str4);
puts(str3);
char str5[10]="xjxxjj";
int len=Mystrlen(str5);
printf("len=%d\n",len);
return 0;
}
head.h:
#ifndef __HEAD_H__
#define __HEAD_H__
#include<stdio.h>
#include<string.h>
void MyStrRev(char *p);
void StrRevRec(char a[], int len);
char *MyStrcat(char *dest,const char *src);
int MyStrcmp(const char *s1,const char *s2);
char *MyStrcpy(char *dest,const char *sec);
long Mystrlen(const char *s1);
#endif
test.c:
#include"head.h"
void MyStrRev(char *p)
{
int n=strlen(p)-1,i=0;
char t;
while((p+i)<(p+n))
{
t=*(p+i);*(p+i)=*(p+n);*(p+n)=t;
i++;n--;
}
puts(p);
}
void StrRevRec(char a[], int len)
{
if(len==1)
{
printf("%c",a[len-1]);
}
else
{
printf("%c",a[len-1]);
StrRevRec(a,len-1);
}
}
char *MyStrcat(char *dest,const char *src)
{
char *p=dest;
while(*dest!='\0')
dest++;
while(*src!='\0')
{
*dest=*src;
dest++;
src++;
}
*dest='\0';
return p;
}
int MyStrcmp(const char *s1,const char *s2)
{
while(*s1==*s2)
{
if(!(*s1))
{
break;
}
else
{
s1++;
s2++;
}
}
return *s1-*s2;
}
char *MyStrcpy(char *dest,const char *sec)
{
while(*sec)
{
*dest=*sec;
dest++;
sec++;
}
*dest='\0';
return dest;
}
long Mystrlen(const char *s1)
{
long count=0;
while(*s1)
{
count++;
s1++;
}
return count;
}
第二题:
main.c:
#include"head.h"
int main(int argc, const char *argv[])
{
char str[]="AGAB%Sr67gs5ffwt+%";
int n=strlen(str);
Sort(str,n);
printf("%s\n",str);
char *p[4]={DaXie(str,n),ShuZi(str,n),XiaoXie(str,n),TeShu(str,n)};
char t[100];
for(int i=0;i<4;i++)
{
strcat(t,p[i]);
}
puts(t);
return 0;
}
head.h:
#ifndef __HEAD_H__
#define __HEAD_H__
#include<stdio.h>
#include<string.h>
void Sort(char *p,int n);
char *DaXie(char *p,int n);
char *ShuZi(char *p,int n);
char *XiaoXie(char *p,int n);
char *TeShu(char *p,int n);
#endif
test.c:
#include"head.h"
void Sort(char *p,int n)
{
int i,j;
char t;
for(i=1;i<n;i++)
{
for(j=0;j<n-i;j++)
{
if(*(p+j) > *(p+j+1))
{
t=*(p+j);*(p+j)=*(p+j+1);*(p+j+1)=t;
}
}
}
}
char *DaXie(char *p,int n)
{
static char dx[20]="";
static char *q=dx;
int i=0,j=0;
while(*(p+i))
{
if(*(p+i)>='A'&&*(p+i)<='Z')
{
*(q+j)=*(p+i);
j++;
}
i++;
}
*(q+j)='\0';
return q;
}
char *ShuZi(char *p,int n)
{
static char sz[20]="";
static char *q=sz;
int i=0,j=0;
while(*(p+i))
{
if(*(p+i)>='0'&&*(p+i)<='9')
{
*(q+j)=*(p+i);
j++;
}
i++;
}
*(q+j)='\0';
return q;
}
char *XiaoXie(char *p,int n)
{
static char xx[20]="";
static char *q=xx;
int i=0,j=0;
while(*(p+i))
{
if(*(p+i)>='a'&&*(p+i)<='z')
{
*(q+j)=*(p+i);
j++;
}
i++;
}
*(q+j)='\0';
return q;
}
char *TeShu(char *p,int n)
{
static char ts[20]="";
static char *q=ts;
int i=0,j=0;
while(*(p+i))
{
if(!((*(p+i)>='A'&&*(p+i)<='Z')||(*(p+i)>='0'&&*(p+i)<='9')||(*(p+i)>='a'&&*(p+i)<='z')))
{
*(q+j)=*(p+i);
j++;
}
i++;
}
*(q+j)='\0';
return q;
}
第三题:
判断一维字符数组是否存在回文字符串
例如: char a[] [10]={"asd","asa","werew","yuyu"};
提示存在回文字符串,回文字符串对称
main.c:
#include"head.h"
int main(int argc, const char *argv[])
{
char a[][10]={"asd","asa","werew","yuyu"};
int n=sizeof(a)/sizeof(a[0]);
int z=LoopStr(a,n);
if(z==1)
printf("存在回文字符串\n");
if(z==0)
printf("不存在回文字符串\n");
return 0;
}
head.h:
#ifndef __HEAD_H__
#define __HEAD_H__
#include<stdio.h>
#include<string.h>
int LoopStr(char a[][10],int n);
int HuiWen(char *p);
#endif
test.c:
#include"head.h"
int LoopStr(char a[][10],int n)
{
int i;
for (i=0;i<n;i++)
{
int z=HuiWen(a[i]);
if(z==1)
return 1;
}
return 0;
}
int HuiWen(char *p)
{
char *q=p;
int i=0;
int j=strlen(p)-1;
char t;
while(i<j)
{
if(*(q+i)!=*(p+j))
return 0;
else
{
i++;
j--;
}
}
return 1;
}
课堂练习:
main.c:
#include"head.h"
int main(int argc, const char *argv[])
{
Fibonacci();
FibonacciArr();
int i;
for(i=1;i<=10;i++)
{
int num=FibonacciRec(i);
printf("%d\t",num);
}
printf("\n");
return 0;
}
head.h:
#ifndef __HEAD_H__
#define __HEAD_H__
#include<stdio.h>
#include<string.h>
void Fibonacci();
void FibonacciArr();
int FibonacciRec(int n);
#endif
test.c:
#include"head.h"
void Fibonacci()
{
int a=1,b=1,c;
int n=10;
printf("%d\t%d\t",a,b);
for(int i=3;i<=n;i++)
{
c=a+b;
a=b;
b=c;
printf("%d\t",c);
}
printf("\n");
}
void FibonacciArr()
{
int arr[20]={1,1};
int n=10;
printf("%d\t%d\t",arr[0],arr[1]);
for(int i=2;i<n;i++)
{
arr[i]=arr[i-1]+arr[i-2];
printf("%d\t",arr[i]);
}
printf("\n");
}
int FibonacciRec(int n)
{
if(n==1||n==2)
{
return 1;
}
else
return FibonacciRec(n-1)+FibonacciRec(n-2);
}