1.从键盘输入一个字符串,并输入一个子串,在字符串中查找子串,有子串找出子串出现的次数,并记录第一次和最后一次出现的位置
#include<stdio.h>
#include<string.h>
void fun(char *p, char *q)
{
int len1 = strlen(q), count = 0;
char *ret, *h;
//子串第一次出现的位置
ret = strstr(p, q);
printf("字符串首地址为:\n");
printf("%p\n",p);
printf("子串第一次出现的位置为:%p\n",ret);
while(ret != NULL)
{
count++;
h = ret;
ret += len1;
ret = strstr(ret, q);
}
printf("子串最后一次出现的位置为:%p\n",h);
printf("子串出现的次数为:%d\n",count);
}
int main()
{
char ch1[100] = "abcdecdfgcdhcb";
char ch2[5] = "cd";
fun(ch1, ch2);
return 0;
}
2.从键盘输入一个字符串,对字符串进行逆序,使用指针
#include<stdio.h>
#include<string.h>
void fun(char *p)
{
char *q = p + strlen(p) - 1;
char temp;
while(*p)
{
temp = *p;
*p = *q;
*q = temp;
p++;
q--;
if(p >= q)
{
break;
}
}
}
int main()
{
char str[10];
printf("请输入一个字符串:\n");
gets(str);
printf("字符串逆序后的结果为:\n");
fun(str);
puts(str);
return 0;
}
3.从键盘输入6个字符串进行排序
#include<stdio.h>
#include<string.h>
void sort(char (*p)[10])
{
int i, j;
char temp[10] = {0};
for(i = 0; i < 6-1; i++)
{
for(j = 0; j < 6-1-i; j++)
{
if(strcmp(p[j], p[j+1]) > 0)
{
strcpy(temp, p[j]);
strcpy(p[j], p[j+1]);
strcpy(p[j+1], temp);
}
}
}
}
int main()
{
int i;
char str[6][10] = {0};
printf("请输入6个字符串:\n");
for(i = 0; i < 6; i++)
{
scanf("%s",str[i]);
}
printf("排序前:\n");
for(i = 0; i < 6; i++)
{
printf("%s ",str[i]);
}
printf("\n排序后:\n");
sort(str);
for(i = 0; i < 6; i++)
{
printf("%s ",str[i]);
}
return 0;
}