1、题目: 请编写一个C函数,该函数将一个字符串逆序
#include <stdio.h>
#include <string.h>
char *change(char *s)
{
int i;
int n = strlen(s)/2;
char tmp;
for(i = 0; i <= n; i++)
{
tmp = s[i];
s[i] = s[strlen(s)-i-1];
s[strlen(s)-i-1] = tmp;
}
return s;
}
int main()
{
char str[20];
printf("Please input a string:\n");
scanf("%s", str);
printf("\nThe reserved string is:\n%s\n", reserve(str));
return 0;
}
2、题目: 请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出
#include <stdio.h>
void to_change(int num,int n);
int main()
{
int num,n;
printf("Please enter a number to change:");
scanf("%d",&num);
printf("请输入要转换的进制: ");
scanf("%d",&n);
to_change(num,n);
printf("\n");
return 0;
}
void to_change(int num,int n)
{
int r;
r = num % n;
if(num > 0)
to_change( num / n,n );
putchar( '0' + r);
return ;
}
3、题目: 输入一个字符串,计算字符串中子串出现的次字数
#include <stdio.h>
#include <string.h>
void str_son(char a[], char b[])
{
int i = 0;
int j = 0;
int count=0;
int n = 0;
int num = 0;
n = strlen(b);
while(a[i]!='\0')
{
if(a[i]==b[j])
{
count++;
j++;
i++;
if((count%n)==0)
{
num++;
j = 0;
}
}
else if(count!=0)
{
count = 0;
j = 0;
}
else
{
i++;
}
}
printf("字串个数为:%d\n",num);
}
int main()
{
char a[20];
char b[5];
printf("请输入一个字符串(20个字节以内):");
scanf("%s",a);
printf("请输入子串(5个字节以内:)");
scanf("%s",b);
str_son(a,b);
return 0;
}
4、题目: 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构.
#include <stdio.h>
#include <string.h>
int reserve(char a[],int n)
{
int i=0,j=0;
char temp = 0;
int m = n-1;
for(i=0;i<m;i++)
{
n--;
for(j=0;j<n;j++)
{
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
int re_reserve(char *a)
{
int n = 0;
while(1)
{
n++;
if((*a)==' '||(*a)=='\0')
{
reserve(a-n+1,n-1);
n = 0;
}
if(*a=='\0')
{
break;
}
a++;
}
}
int main()
{
char a[]="I am from shanghai";
int n = strlen(a);
reserve(a,n);
re_reserve(a);
printf("output:%s\n",a);
return 0;
}
5.题目: 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
提示:帧头和帧尾分别是head和tail字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧.
#include <stdio.h>
#include <string.h>
int deal(char str[],char h[],char end[])
{
int i=0,j=0,k=0,x=0;
int size_h,size_e;
char temp[20]={0};
int count_h=0;
int count_e=0;
size_h=strlen(h);
size_e=strlen(end);
while(str[i]!='0')
{
if(str[i]==end[k])
{
count_e++;
k++;
}
if(count_h==size_h)
{
if(count_e==size_e)
{
printf("合法字符串为:");
for(x=0;x<=(j-size_e);x++)
{
printf("%c",temp[x]);
}
printf("\n");
return 1;
}
temp[j] = str[i];
j++;
}
else if(str[i]==h[j])
{
count_h++;
j++;
}
else
{
j=k=count_h=count_e=0;
}
i++;
}
printf("没有合法字符串\n");
return 0;
}
int main()
{
char str[]="asdheadhauboisoktail";
char h[]="head";
char end[]="tail";
deal(str,h,end);
return 0;
}