问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请编写一个函数int fun(char *ss,char *s),该函数的功能是:求出ss字符串中指定字符串s的个数并返回此值

发布网友 发布时间:2022-12-02 21:45

我来回答

2个回答

热心网友 时间:2023-11-12 22:43

#include <string.h>
#include <stdio.h>
#define M 81
int fun( char *ss, char *s )
{
int count=0;//计数
int f=1;
for(int i=0;i<strlen(ss);i++)
if(strlen(ss)-i<strlen(s))//到最后,剩余的长度不够子串s的长度了,肯定不相同,退出循环
break;
else
{
f=1;
for(int j=i,k=0;j<i+strlen(s);j++,k++)//每次循环母串ss截取子串s的长的字符 ,与子串s比较
if(ss[j]!=s[k])//有一个不相同的
f=0;//f赋值0;
if(f==1)//f==1说明截取的字符串与子串相同
count++;//计数器加1
}
return count;

}
int main()
{
char a[M]="1231231", s[M]="12";
printf( " Please enter a string:" );
gets(a);
printf( " Please enter a substring:" );
gets(s);
printf( " The counts is: %d ", fun( a, s ) );
}追问

结果·不对

追答

自定义函数部分没有问题,几个极端数据组都测试过了;你绝对修改主函数部分了

因为你给的代码是printf( " The counts is: %d ", fun( a, s ) );

应该是输出 The counts is: (一个数);

拜托,你要修改主函数部分,也要看着改;你这个运行结果图,printf函数输出的绝对不是fun()函数的返回值;而是一个没有赋初值的变量,所以才会输出这么大个数;

你把我给你的代码全部粘贴到编译器上运行一下,看看结果;试试几组数据,错没错你就知道了;

下面是我运行全部代码,输入几组数据后的结果;看一样输出这几组数据都没问题;

热心网友 时间:2023-11-12 22:44

main最后一个printf没带\n,gets会把换行符读入字符串,gets为极不安全的函数
#include <string.h>
#include <stdio.h>
#define M 81

int fun(char *ss,char *s) {
int sslen = strlen(ss);
int slen = strlen(s);
if (sslen <= 0 || slen <= 0) {
return 0;
}
--slen;
int chr = (int)((char*)memchr(s + 1, s[0], slen - 1) - s); //s中第二次出现s[0]的地方
if ((int)((char*)NULL - s) == chr) {
chr = slen;
}
int res = 0; //返回值

for (int i = 0; i < sslen - slen + 1; i++) {
if (ss[i] == s[0]) {
if (!memcmp(ss + i + 1, s + 1, slen - 1)) {
//第一个元素已经比较过了,直接从第二个元素开始
res++;
}
i += chr;
}
}

return res;
}

int main()
{
char a[M], s[M];
printf(" Please enter a string:");
fgets(a, M, stdin);
a[strlen(a) - 1] = '\0';
printf(" Please enter a substring:");
fgets(s, M, stdin);
s[strlen(s) - 1] = '\0';
printf(" The counts is: %d\n", fun(a, s));
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么网址更新火影忍者集数最快 如果你跟男朋友分手了,他的回答是顺其自然这是什么意思,我该怎么办... 一个女人像男人提分手男人说顺其自然是什么意思 上线两年《X-HERO》如何做到登顶多个国家榜首的? 龙武游戏怎么样费钱吗 Q1游戏公司产品 中国现有什么银行 x.最近六个月的通话记录? 爱奇艺会员哪里买便宜 爱奇艺会员免费领取 iphone4 怎样删除原来的旧凯立德地图 T6SS-结构组成 暖空调开几度比较好 pic16f73-i/sp4ap是什么原件 格峰牌轻奢暖风空调机,暖风效果好吗? 纪梵希面霜,纪梵希面霜好用吗 华为无线耳机不插电灯不亮 易瘦体质养出来,哪几个加速燃脂的生活细节,一个月能瘦好几斤? 速溶咖啡热量高吗?一杯300ml的咖啡大概含多少卡路里热量? 怎么写辩护词 2020农历闰四月份是什么星座,农历闰四月是什么月? 南京星火路龙湖时代每天都有核酸检测吗 hkh是什么口红 hkh口红是什么牌子 感情签抽到签王好还是不好 00个人抽签,我抽到一个签王.什么叫做签王?那就是前线,哪里是前线 辽中南是什么(辽中南的地位) 上海皇廷花园酒店是商务酒店还是度假的 汾阳花园酒店几星级 上海佰翔花园酒店属于什么街道什么村 上海皇廷花园大酒店几星级 上海皇廷花园酒店地址 做好的汤圆怎么保存 汤圆如何冷冻保存效果好 关于保险制单的,急用 倒签提单时保险时间怎么显示?做的是信用证,如果显示倒签时间,如果以后出险,索赔上有问题吗 突然变成未注册 突然变成未注册 突然变成未注册原因简述 突然变成未注册怎么办? 上海第二妇婴医院的上班时间是多少? 高手帮忙想一个﹏冭_委屈ゝ的情侣名 谢谢了 乐视电视s40耳机插口在什么位置请指点 家里摆木雕两只大公鸡摆件好吗 风水书上看到,请“木制公鸡”放在家里合适位置,可以防止男朋友变心。 问题是:我和男朋友异地恋。放在 衣柜里放古玩小公鸡摆件有何意义 88年属龙的男人家里客厅里摆放桃木大红公鸡摆件摆放那个方位置好? 张莉品牌是几线品牌 我国当代教育教学理论有哪些 window 和 lnuix 下c/c++程序中信号量如何实现 荒野大镖客2主角死后玩谁 石锅烤肉怎么做 石锅烤肉如何做 运动鞋要有跟的好还是没跟的好? 法宣消费者权益保护法误工费赔偿项目有哪些?