1.设计接口函数,自行封装Mystrlen()
(1)main.c部分
#include <stdio.h>
#include "Mystrlen.h"
int main(int argc, char const *argv[])
{
char str[]="hello,world!";
int len = Mystrlen(str);
printf("字符串长度:%d\n",len);
return 0;
}
(2)Mystrlen.c部分
#include <stdio.h>
int Mystrlen(const char* str)
{
int len = 0;
while(*str !='\0')
{
len++;
str++;
}
return len;
}
(3)Mystrlen.h部分
int Mystrlen(const char* str);
运行结果:
字符串长度:12
2.设计接口函数,自行封装Mystrcpy()
(1)main.c部分
#include <stdio.h>
#include "Mystrcpy.h"
int main(int argc, char const *argv[])
{
char src[]="hello,world!";
char dest[20];
Mystrcpy(dest,src);
printf("复制之后的字符串:%s\n",dest);
return 0;
}
(2)Mystrcpy.c部分
#include <stdio.h>
char Mystrcpy(char*dest,char*src)
{
char*originaldest=dest;
while(*src!='\0')
{
*dest =*src;
dest++;
src++;
}
*dest ='\0';
return *originaldest;
}
(3)Mystrcpy.h部分
char Mystrcpy(char*dest,char* src);
运行结果:
复制之后的字符串:hello,world!
3.设计接口函数,自行封装Mystrncpy()
(1)main.c部分
#include <stdio.h>
#include "Mystrncpy.h"
int main(int argc, char const *argv[])
{
char src[]="hello,world!";
char dest[20];
Mystrncpy(dest,src,3);
printf("复制后的字符串:%s\n",dest);
return 0;
}c
(2)Mystrncpy.c部分
char* Mystrncpy(char*dest,char *src,int n)
{
char *originaldest = dest;
int i;
for(i=0;i<n && *src !='\0';i++)
{
*dest = *src;
dest++;
src++;
}
*dest='\0';
return originaldest;
}
(3)Mystrncpy.h部分
char* Mystrncpy(char*dest,char *src,int n);
运行结果:
复制后的字符串:hel
4.设计接口函数,自行封装Mystrcat()
(1)main.c部分
#include <stdio.h>
#include "Mystrcat.h"
int main(int argc, char const *argv[])
{
char dest[20]="hello,";
char src[]="world!";
Mystrcat(dest,src);
printf("拼接后的字符串:%s\n",dest);
return 0;
}
(2)Mystrcat.c部分
char* Mystrcat(char*dest,char*src)
{
char* originaldest=dest;
while(*dest!='\0')
{
dest++;
}
while(*src!='\0')
{
*dest = *src;
dest++;
src++;
}
*dest='\0';
return originaldest;
}
(3)Mystrcat.h部分
char* Mystrcat(char*dest,char*src);
运行结果:
拼接后的字符串:hello,world!
5.输入一个数,求此数最近相邻最小质数(只能被1或者自身整除的数称为质数)
(1)main.c部分
#include <stdio.h>
#include <stdbool.h>
#include "nearest_prime.h"
int main()
{
int num;
printf("请输入一个整数:");
scanf("%d",&num);
printf("最近相邻最小质数为:%d\n",nearest_prime(num));
return 0;
}
(2)nearest_prime.c部分
#include <stdbool.h>
bool prime(int num)
{
if(num<=1)
{
return false;
}
for(int i=2;i*i<=num;i++)
{
if(num%i==0)
{
return false;
}
}
return true;
}
int nearest_prime(int num)
{
int smaller=num-1;
int larger=num+1;
while(true)
{
if(prime(smaller))
{
return smaller;
}
if(prime(larger))
{
return larger;
}
smaller--;
larger++;
}
}
(3)nearest_prime.h部分
int nearest_prime(int num);
运行结果:
请输入一个整数:5
最近相邻最小质数为:3
6.字符串去重--->googggoole--->gole
(1)main.c部分
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include "remove.h"
int main()
{
char str[]="googggoole";
printf("原始字符串:%s\n",str);
remove_after(str);
printf("去重后的字符串:%s\n",str);
return 0;
}
(2)remove.c部分
#include <string.h>
void remove_after(char*str)
{
int len = strlen(str);
if(len<2)
return;
int index =0;
for(int i=0;i<len;i++)
{
int j;
for(j=0;j<i;j++)
{
if(str[i]==str[j])
break;
}
if(j==i)
str[index++]=str[i];
}
str[index]='\0';
}
(3)remove.h部分
void remove_after(char*str);
运行结果:
原始字符串:googggoole
去重后的字符串:gole