9月10日,作业+日志


1.题目: 输入一个字符串,计算字符串中子串出现的次数

#include <stdio.h>
#include <string.h>
int count_substring(char* str,char* sub);//sub为需要查找的子串,str为总串,返回一个count值
int main()
{
char total[50];//定义一个总串,含50个字符
char sub[10];//定义一个子串,含10个字符i
int num;//用于输出子串个数
printf("please enter a string(<50):\n");
fgets(total,50,stdin);//从键盘输入字符给total[]
printf("please the substring(<10) u want find :\n");
fgets(sub,10,stdin);
num=count_substring(total,sub);
printf("The number of the substring is :%d\n",num);
return 0;
}
int count_substring(char* str,char* sub)
{
int i=0;
int j=0;
int str_len = strlen(str) - 1;
int sub_len = strlen(sub) - 1;
int count = 0;
for ( i = 0 ; i < str_len - sub_len + 1 ;i++)//因为后面在查找时还要加上子串的长度,防止内存溢出
{
for ( j = 0; j < sub_len ; j++)
{
if (sub[j] != str[i+j])
{
break;
}
}
if ( j == sub_len )
{
count++;
}
}
return count;
}

2.题目: 编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,即将句子中的单词位置倒置,而不改变单词内部结构.

#include <stdio.h>
#include <string.h>
int main()
{
char str[]="I am from shanghai";
puts (str);
char tmp;
char *p1 = str;
char *p2 = str + strlen(str) -1;
while (p1<p2)
{
tmp = *p1;
*(p1++) = *p2;
*(p2--) = tmp;
}
char *p3 = NULL;
p1 = str;
p2 = str;
while (*p2)
{
if (*p2 == ' ')
{
p3 = p2 - 1;
while (p1<p3)
{
tmp = *p1;
*(p1++) = *p3;
*(p3--) = tmp;
}
p1 = p2 + 1;
}
p2++;
}
p3 = p2 - 1;    
while (p1<p3)   
{
tmp = *p1;
*(p1++) = *p3;
*(p3--) = tmp;
}
puts (str);
return 0;
}

学习日志


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值