一道C语言的题目求解!!

编写函数int fun(char *s1,char *s2),在字符串s1中统计字符串s2出现的次数并返回。若s2在s1中未出现,则返回0。例如:
若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:ab ,则程序输出:n=4
若输入的字符串s1为:abaaAabcaabbabca,字符串s2为:abd,则程序输出:No find
#include
#include
int fun(char *s1,char *s2)
{
}
int main()
{ char a[80],b[80];
  int n;
  printf("Please input the first string:");
  gets(a);
  printf("Please input the second string:");
  gets(b);
  n=fun(a,b);
  if(n==0)
    printf("No find\n");
  else printf("n=%d\n",n);
  return 0;
}

1个回答

最简单的朴素字符串匹配算法可以实现

int fun(char* s1, char* s2)
{
    int num = 0;
    int n = strlen(s1);
    int m = strlen(s2);
    for(int s = 0; s <= n - m; ++s) {
        int j = 0;
        if(s1[s] == s2[j]) {
            int k = 0;
            for(int i = 0; i < m; ++i) {
                if(s1[s + i] == s2[j + i]) {
                    ++k;
                    continue;
                }
                else {
                    break;
                }
            }
            if(k == m) {
                ++num;
            }
        }
    }
    if(num == 0)
        return 0;
    return num;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
求解一道C语言题目!!!!
1. 电脑随机产生1000—9999之间的数字(包括1000、9999);n提示:用rand函数,该函数在stdlib.h库中,并保证多次运行产生不同的随机数n2. 玩家每轮有七次猜数的机会,如果七次都没有猜到,则失败,判为0分;n3. 玩家每轮可以请求帮助,提问关于产生数字的信息,扣分细则如下;n4. 游戏以百分制形式,初始分为100,最后得分最多为赢家。n 帮助内容及扣分细则:n. 判断你所猜的数中各位数字对应位置正误情况,以R表正确,E表错误。若随机数是2537,而猜的数是1234,则输出EERE,代表猜的数第3位正确,第1,2,4位错误。n——扣当前分数的1/10n. 判断你所猜的数中正确数字是什么。若随机数是2537,而猜的数是1234,则输出有两个数字正确,它们是2,3。 ——扣当前分数的1/10n#includen#includenint sort = 100;nint main()nnint in = 0;nint r = 0;nwhile (1)nnr = rand();nwhile (1000 <= r && r <= 9999)nnprintf("please enter data:");nscanf("%d", &in);nif (in > r || in < r) //如果大或小,减去当前分数的1/10nsort -= sort / 10;nprintf("当前分数%d\n", sort);nnnreturn 0;n
C语言一道条件结构题目,求解。
[color=#FF0000][b]题目是这样的:[/b][/color]rn用 vip 存储顾客是否是会员的信息rn用 cost1、cost2 和 cost3 三个单精度浮点型变量存储购买商品的费用rn要求:如果是会员或者消费总金额在100元以上,则打9折rn如果是会员并且消息总金额在100元以上,则打8折rn分别输出购物总额、折扣额、及应付总额rnrn[code=C/C++]rn#include rnrnvoid main()rnrn char vip;rn float cost1,cost2,cost3,sum1,sum2;rnrn //提示操作员验证是否为会员rn printf("\n是否为会员?(y/n): ");rn scanf("%c",&vip);rnrn fflush(stdin);rnrn //提示操作员输入物品1号2号3号的费用rn printf("\n请输入购买第一件商品的费用: ");rn scanf("%f",&cost1);rnrn fflush(stdin);rnrn printf("\n请输入购买第二件商品的费用: ");rn scanf("%f",&cost2);rnrn fflush(stdin);rnrn printf("\n请输入购买第三件商品的费用: ");rn scanf("%f",&cost3);rnrnrnrn /******************************************************rn 判断条件1:如果是会员或者消费总金额在100元以上,则打9折rn 判断条件2:如果是会员并且消息总金额在100元以上,则打8折rn ******************************************************/rnrn //条件1满足后的价格算法rn sum1=cost1+cost2+cost3-(cost1+cost2+cost3)*0.9;rn //条件2满足后的价格算法rn sum2=cost1+cost2+cost3-(cost1+cost2+cost3)*0.8;rnrn //判断条件1是否满足,如果满足计算输出价格rn if (vip=='y'|| cost1+cost2+cost3>=100) rn rn printf("\n购物总金额=%.2f\n",cost1+cost2+cost3);rn printf("\n折扣总金额=%.2f\n",sum1);rn printf("\n应付总金额=%.2f\n\n",cost1+cost2+cost3-sum1);rn rn elsern rn printf("\n应付总金额=%.2f\n\n",cost1+cost2+cost3);rn rn //判断条件2是否满足,如果满足计算输出价格rn /*********************************************************rn 此段代码(! vip=='y'&& cost1+cost2+cost3>=100)为了防止条件2rn 满足时也触发了条件1,会同时显示条件1和条件2的金额,那么就对rn 条件1进行取反运算,就可以避免条件2满足时条件1的金额会显示.rn **********************************************************/rn if (vip=='y' && cost1+cost2+cost3>=100 && ! vip=='y'&& cost1+cost2+cost3>=100)rn rn printf("\n购物总金额=%.2f\n",cost1+cost2+cost3);rn printf("\n折扣总金额=%.2f\n",sum2);rn printf("\n应付总金额=%.2f\n\n",cost1+cost2+cost3-sum2);rn rnrnrn[/code]rnrn[color=#FF0000][b]我写的代码问题就在:[/b][/color]rn条件2(是vip,金额也超过了100)满足了,显示的数据却还是打九折,应该条件2满足就打八折。rn小弟不才刚学C三天,希望高手能够帮我修改错误,谢谢了!!!
C语言求解 一道素数的题目
从键盘输入一个整数,输出距离该数最近的素数。根据输入的数不同,此问题可能有一个答案(或者比输入的数大或者比输入的数小),也可能需要输出两个值(一个比输入的数大,一个比输入的数小,两个距离输入的数一样近)。PS:数学意义上的最小素数是2,例如,若输入-213,结果应是2n不要太高深 开头用#include int main for scanf printf 等等这几类基础的吧n其他复杂的就算了吧
一道C语言题目
1) 有如下C语言程序:rn#include rnvoid main()rn rn int x=100;rn int y=100;rn int i;rn for( i=0; x>98; y=i )rn printf("%d,%d\n",x--,y);rnrn则其运行输出结果正确的是( )。 (选择一项)rn rn a) 100,100rn99,1rn b) 100,100rn99,0rn c) 99,100rn98,1rn d) 99,100rn98,0rn 我运行了下 结果是B,但是不懂这是为什么。求哪位高手解答下!rnrnrn在线求解释。rn
c语言的一道题目
求解;rn#include rnvoid fun(int x)rn if(x/2>0)fun(x/2);rn printf("%d",x);rnrnmain()rn fun(6);rn printf("\n");rnrn
一道C语言的题目
歌星大奖赛 rn〔要求〕 rn(1)在歌星大赛中,有10个评委为参赛选手打分,分数为1至100分。选手最后得分为:去掉一个最高分和一个最低分,后其余8个分数的平均值。请编写一个程序实现。 rn(2)同时对评委评分进行裁判,即在10个评委中找出最公平(即评分最接近平均分)和最不公平(即与平均分的差距最大)的评委。 rn〔提示〕这个问题的第一个要求算法十分简单,但是要注意在程序中判断最大最小值的变量是如何赋值的。第二个要求为了考虑效率,要用到排序技术。 rnrn
一道C语言的题目!
算出1!+2!....+20!(请用C语言编程)
一道c语言的题目
关于成绩评定的,居然搞不定,请大家帮帮忙。rn#includern#includernmain()rnrn int score,temp;rn char grade;rn printf("please enter a score:");rn scanf("%d",score);rn if(score>100&&score<0)rn printf("you have enter a wrong score,please enter the real again");rn scanf("%d",score);rn else //运行时提示这里失误,mispaced else in funtion main,rn //请高手们指点指点是怎么回事。rn if(score==100)rn temp=9;rn elsern temp=(score-score%10)/10;rn switch(temp)rn rn case(9):grade='a';break;rn case(8):grade='b';break;rn case(7):grade='c';break;rn case(6):grade='d';break;rn case(5):rn case(4):rn case(3):rn case(2):rn case(1):rn case(0):grade='f';rn rn printf("the score is %d and the grade is %c",score,grade);rnrn或有更好的算法请大家提示,多谢!
C语言题目求解
1。有五个学生记录每条记录包括标识、名称和三门课程的成绩。请编写一个程序,输入5个学生的信息,然后按他们的总得分排序。rn2。将上面提到的信息存入一个链接列表,编写函数来创建和输出链表。rnrn3。将学生信息写入文件stud.txt,并根据学生的ID排序,然后将结果写入同一个文件。rn4。编写一个程序,比较两个文件并打印第一行此两者的不同。rnrn编写一个程序用以比较两个文件,输出它们不同处的第一行(即两个文件开始不同的那一行)。
求解c语言题目!
输入一些学生的分数,那个分数出现的最多?如果有多个并列,从小到大输出;rn任务一:分数均为不超过100的非负整数;rn任务二:分数均为不超过100的非负实数,但最多保留2位小数
一道简单的C语言题目
[code=C/C++]#include rnvoid main()rnunion data int i;rn char c[2]; x;rn x.c[0]='A';rnx.c[1]='B';rnprintf("%c %c ",x.c[0],x.c[1]);rnx.i=65;rn printf("%c %c\n",x.c[0],x.c[1]);rn[/code]rn输出为什么是A B A,rn我知道共用体占用相同的内存空间,但是不明白为什么最后只输出一个A,另一个x.c[1]为什么没有数据。
C语言笔试题目一道
下午和同学讨论一道题,很有意思,大家做做看rnvoid main(int c,int,int)rnrn int cc=0;rn double a=1.0;rn double b=1.0;rn while(b+a!=a)rn b/=2;rn cc++;rn rn cout<
一道C语言宏定义题目
#include rn#define MIN(x,y) (x)<(y)?(x):(y)rnmain() rnrn int i=10,j=15,k;rn k=10*MIN(i,j);rn printf("%d\n",k);rn rnrn为什么最后输出结果是15?请各位高手帮忙,谢谢
求教一道C语言题目
学生成绩管理系统rn按要求完成以下功能rn1).添加:在文件中添加学生纪录.(每位学生应该有学号,姓名,性别,三门功课成绩).rn2).显示:显示所有学生成绩rn3).修改:输入要修改的学生姓名,显示该学生的信息后,修改相应数据rn4).删除:删除指定姓名的学生纪录rn5).排序:分别可以按单科成绩,总分成绩由高到低排序rnrn三门功课就数学 ,英语 ,语文吧rn能帮我写一下分析过程,算法编写和代码吗?
问一道C语言题目
[code=C/C++]rn#define F(x) x*xrnmain()rnrnint a = 3,b = 4,c;rnc = F(a+b);rnprintf("%d\n",c);rnrn[/code]rnrn则程序执行后输出的值是多少?rn书上给的答案是19,但是我不知道这题是如何执行的,能跟我细说一下吗?
求助 一道C语言题目
输入5个城镇的名字和它距离伦敦的距离 程序会输出距离伦敦不到100英里的城市名。用数组和字符串完成你的程序
一道考研C语言题目
把一个文本文件的内容输出到屏幕rn要求一页显示23行,满23行提示用户rn我的问题是怎么判断满了23行?
一道二级C语言题目!
#include rn#include rnfun(char *w,int n)rnrnchar t,*s1,*s2;rns1=w;s2=w+n-1;rnwhile(s1
一道简单的c语言题目
在用vc6.0编写图形的时候,不能使用graphic.h 这个头文件,这是tc中使用的,在vc6.0中的图形函数应该是怎么一回事???
请教一道C语言题目
int *p,*q;rn然后问p=q+1与p=1+q有区别吗?为什么?
C语言 一道题目 求助
刚学 上课没认真听 求助啊 rnrn 让用户输入4字符串 然后按如下形式输出:rn(1)第一问是字符串输出顺序和字符串内字母顺序全反了rn(2)第二问是字符串内字母顺序反了rn(3)第三问是字符串顺序反了
求一道c语言题目
给定一个文件比如1.txt该文件中存有一列数,如下:rn10rn15rn31rn42rn.....rn求这些数的平均值?
一道C语言题目求助
输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数funcos(e,x)求余弦函数的近似值。rn然后我是这么做的没有错误但是不能算出要求的东西rn#includern#includernint main(void)rnrndouble e,result,x;rndouble funcos(double e,double x);rnrnprintf("输入精度:");rnscanf("%lf",&e);rnprintf("x=");rnscanf("%lf",&x);rnresult=funcos(e,x);rnprintf("cos %f = %f",x,result);rnrnrnrnrndouble funcos(double e,double x)rnrnint flag,digit,i;rndouble denominator,sum,item,numerator;rnrnsum=0;rnitem=1.0;rndenominator=1.0;rnflag=1;rn numerator=1.0;rndigit=0;rnwhile(fabs(item)>=e)rnrnitem=flag*numerator/denominator;rnnumerator=numerator*x*x;rndigit=digit+2;rndenominator=1.0;rnfor(i=digit;i>=1;digit--)rndenominator=denominator*i;rnflag=-flag;rnsum=sum+item;rnrnrnreturn sum;rnrn求指导哪里错误了
一道很难的c语言题目
背景rn以下是几个标准的表达式:rnrn5 * 2 + -3 rn5 * (2 + -3) rn5 + ((-4 * -5) + (((5 + (6 - 2)) * 7 + ((4 + 2) * (3 - 1)))) rn与之等价的波兰表达式为rnrn+ * 5 2 -3 rn* 5 + 2 -3 rn+ 5 + * -4 -5 + * + 5 - 6 2 7 * + 4 2 - 3 1 rn在普通的表达式中,符号是位于运算对象之间的,而在波兰表达式中,运算符号位于参与运算的对象之前。rnrn波兰式在计算中的价值在于它不需要使用括号,之所以如此是由于波兰式的操作符的先后顺序是明确的。rnrn如果我们用 P 表示波兰表达式,用 O 表示操作符,用 D 表示数字,则可以将波兰表达式定义为 P = O P P 或 P = D。 rnrn任务rn编写程序计算波兰表达式的值。rnrn输入rn输入第一行是一个整数,表示输入文件中共有几个波兰式,之后每一行是一个波兰表达式。rnrn每个表达式包含数字和二元操作符 +、-、*,操作数和运算结果都在 [-101000, 101000] 之间。rnrn可以假设每行的数据(运算符号和数字)总共不超过 100 个。rnrn输出rn对每个表达式输出其值。rnrn提示rn先不要考虑高精度的情况,只考虑一些普通的数字参加运算;待正确后,再用高精度函数替代加法、减法和乘法运算即可。rnrn 测试输入 期待的输出 rn 15↵ rn+ 10 21↵ 31↵ rn+ 10 -21↵ -11↵rn+ -10 21↵ 11↵ rnrn还有很多极其bt的测试用例 rn
求助一道c语言题目:
求一千以内包含1和3的素数,用c语言写怎么写?谢谢
[讨论]一道c语言的题目
rn设长正整数用数组存储,如有K位的长整数用数组a[]存储: rnm=a[k]*10^(k-1)+a[k-1]*10^(k-2)+……+a[2]*10+a[1]*1 rn并用a[0]存储长整数m的位数,即a[0]=k rn通常,存储长整数数组的每个元素只存储长整数的一位数字。长整数运算时,为了运算方便,产生的中间结果的某位数字可能会大于9。这时,就应调用本函数将它规整,是数组的每个元素只存储长整数的一位数字。函数formal(int *a)就实现这个特殊要求: rnvoid formal(int *a) rn rn int p; rn rn for (p=1 ;p<a[0]||a[p]>=10; p++) rn if (p >= a[0]) ____①_____; rn a[p+1] += a[p] / 10 ; a[p]=____②____; rn rn rn if (p>a[0]) ____③_____; rn rnrn第二个我填的是:a[p]=a[p]%10 ;rn第三个我填的是:a[0]=p ;rn问题是第一个填什么啊?rnrn
求助一道C语言题目
写一个程序 输入5个城镇的名字和它距离伦敦的距离 程序会输出距离伦敦不到100英里的城市名。用数组和字符串完成你的程序rnrn 求助
一道C语言田忌赛马的题目。
1.Descriptionrn为了迎接一年一度的光棍节,田忌为它的马儿举办了一场浩大的运动会。已知每场比赛有两匹马进行,田忌会记下来谁比谁跑得快。当所有比赛结束后,田忌会根据这些零散的成绩来确定每匹马在所有马中的总排名。rn由于突然降温下暴雨,田忌终止了比赛同时也懒得去整理成绩了,而这群没教养的马儿又急着想知道自己的排名。于是他的管家找来你,希望你能帮忙计算出有多少个马儿的排名可以确定。rnInputrn多组测试数据,每组数据格式为rn第一行有两个整数N和M,表示田忌有N(2<=N<=200)匹马以及现在进行了M(1<=M<=4500)场比赛rn下面M行是两个用一个空格分开的整数A和B表示,参赛马匹编号和结果(第一个数字A是胜利者)rnOutputrn一个整数,表示有多少匹马的结果是确定的。rnSample Inputrn5 5rn4 3rn4 2rn3 2rn1 2rn2 5rnSample Outputrn2rnrnrn想了好几天完全没想法,各位有没有什么方法来交流下的?多谢了。rn
一道C语言指针的题目
#include rn#includernmain() rnrn char* p1,*p2,str[50]="abc";rn p1="abc"; p2="abc";rn strcpy(str+1,strcat(p1,p2)); rn printf("%s\n",str);rnrnA) abcabcacb B)bcabcabc C)aabcabc D)cabcabcrn答案是C 想问一下怎么出来的,在Visual Studio2005里运行时出现rn“22.exe 中的 0x102aed22 (msvcr80d.dll) 处未处理的异常: 0xC0000005: 写入位置 0x00415643 时发生访问冲突”这个错误rn请大家帮帮忙谢谢
求教一道c语言题目……
设有:int a = 1,b = 2,c==3,d = 4,m = 2,n = 2;执行(m = a > b) && (n = c > d)后n的是多少?
初学者的一道C语言题目
我是一个C语言初学者,这里有一道题目苦苦思索而不得其解:一个四位数,当它的逆向排列得到的四未数是它自身的倍数。用C语言编程找 出符合这一条件的四位数来,谢谢大家!
一道C语言的题 求解!!
int y,a;rny=2,a=1;rnwhile(y--!=-1)rndo a*=y;a++;while(y--);rnprintf("%d,%d",a,y);rnrn问题是 为什么a=1 ?rn谢谢各位大大!!感激不尽!!
求解一道简单题目?
设内存按字节编址,若8k*8bit存储空间起始地址为7000H,则该存储空间最大地址编号为?
一道面试题目求解!
1,需要运行某个作业时候,下列哪一种进程会运行这个作业(选择一个最佳答案)?rnrnA cjqn进程rnrnB Jnnn进程rnrnC service processrnrnD background processrn
求解一道数组题目
int i;rnint x[3][3]=1,2,3,4,5,6,7,8,9;rnfor(i=0;i<3;i++)rnprintf("%d",x[i][2-i]);rn结果是3 5 7 rn求解为什么?
一道c++题目求解
#includern#includernusing namespace std;rnclass Publicationrnrnprivate:rnstring title;rnstring name;rnfloat price;rnstring date;rnpublic:rn Publication()cout<<"Publication::Publication() called.\n";rn void inputData(string t,string n,float p,string d)rn rn title=t;name=n;price=p;date=d;rn rn void display()rn rncout<
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件