Training4:字符串训练
1. 题目: 请编写一个C函数,该函数将一个字符串逆序
2. 题目: 请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出
3. 题目: 输入一个字符串,计算字符串中子串出现的次字数
4. 题目: 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构.
5. 题目: 输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来.
提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktail”中headhauboisoktail是合法帧
1.
#include <stdio.h>
#include <string.h>char *reserve(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.
#include <stdio.h>
#include <string.h>
#define N 20
char *hex(char *s,int num,int n)
{
char tmp;
int i = 0;
while (num != 0)
{
s[i] = num % n;
if(s[i] <= 9)
{
s[i]=s[i]+'0';
}
else
{
switch(s[i])
{
case 10:s[i]='A';
break;
case 11:s[i]='B';
break;
case 12:s[i]='C';
break;
case 13:s[i]='D';
break;
case 14:s[i]='E';
break;
case 15:s[i]='F';
break;
default:break;
}
}
num = num / n;
i++;
}
s[i]='\0';
for(i=0;i<strlen(s)/2;i++)
{
tmp = s[i];
s[i] = s[strlen(s)-i-1];
s[strlen(s)-i-1] = tmp;
}
return s;
}
int main()
{
int num;
int n;
char s[N];
printf("请输入一个整数和进制(中间以空格间隔):\n");
scanf("%d %d",&num,&n);
printf("转换后的字符串为:\n%s\n",hex(s,num,n));
return 0;
}
3.
#include <stdio.h>
#include <string.h>
int main()
{
char a[100];
printf("请输入字符串\n");
scanf("%s",a);
char * c = a;
char b[10];
printf("请输入子串\n");
scanf("%s",b);
char * d = b;
int n;
int num = 0;
n = strlen(d);
while(strlen(c) > 0)
{
if(strncmp(c,d,n) == 0)
{
num++;
c += n;
}
else
{
c++;
}
}
printf("%d\n",num);
return 0;
}
4.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
char *str[] = { "I", "am","from","shanghai" ,NULL};
int i = 0;
int j = 0;
int len = 0;
char *temp;
while (str[i] != NULL)
{
i++;
len++;
}
for(i = 0, j = len - 1; j > i; i++,j--)
{
temp =*(str+i);
*(str+i) = *(str+j);
*(str+j) = temp;
}
for(i = 0; i < len; i++)
{
printf("%s ", *(str+i));
}
printf("\n");
return 0;
}
5.
#include <stdio.h>
#include <string.h>
int substr(char str[255],char s[255],int k);
int main()
{
char str[255];
char head[255];
char tail[255];
int x,y;
int i = 0,t;
printf("enter a string:\n");
scanf("%s",str);
printf("enter head:\n");
scanf("%s",head);
printf("enter tail:\n");
scanf("%s",tail);
t = substr(str,head,0);
x = t - strlen(head);
y = substr(str,tail,t);
for(i = x;i < y;i++)
{
printf("%c",str[i]);
}
printf("\n");
return 0;
}
int substr(char str[255],char s[255],int k)
{
char *p = str+k;
char *p1 = s;
int i = k;
int flag = 0,m;
while(*p != '\0')
{
if(*p == *p1 && flag == 0)
{
while(*p == *p1 && *p1 != '\0')
{
p++;
p1++;
i++;
}
if(*p1 == '\0')
{
flag = 1;
m = i;
}
}
else
{
p++;
i++;
}
}
return m;
}