c语言程序问题

c语言程序问题#include<stdio.h>main(){charstr[80],sub[80];intn;gets(str);gets(sub);printf("%... c语言程序问题#include<stdio.h>
main()
{char str[80],sub[80];
int n;
gets(str);gets(sub);
printf("%d\n",count(str,sub));
}
int count(char *str,char *sub)
{int i,j,k,num=0;
for(i=0;【1】;i++)
for(【2】,k=0;sub[k]==str[j];k++,j++)
if(sub[【3】])=='\0') {num++;break;}
return num;
}
【1】A)str[i]==sub[i] B)str[i]!='\0' C)str[i]=='\0' D)str[i]>sub[i]
【2】A)j=i+1 B)j=i C)j=0 D)j=1
【3】A)k B)k++ C)k+1 D)++k
这程序有问题吧
展开
 我来答
mmmacdaddy
2018-03-30
知道答主
回答量:10
采纳率:100%
帮助的人:2.7万
展开全部

这个程是用来统计字符串str中子串sub的数量的,但是程序当中有点小问题:

1.main函数最好注明返回值类型和参数类型以及return 0;

2.int n;的定义没有实际意义

【答案】

【1】B)str[i]!='\0'

【2】B) j=i 

【3】C)k+1

修改后完整代码(含注释)和运行截图如下:

#include<stdio.h>
#include<string.h>  // 有的编译器gets()函数包括在<string.h>中

int main(void)
{
    char str[80], sub[80];
    gets(str); 
    gets(sub);
    printf("%d\n", count(str, sub));
}
int count(char *str, char *sub)
{
    int i, j, k, num = 0;
    for (i = 0;str[i] != '\0'; i++)  // 如果str字符串没有结尾就继续查找子串
        /*如果当前字符仍然和子串sub中字符对应一致,则继续循环*/
        for (j = i, k = 0; sub[k] == str[j]; k++, j++)
if (sub[k + 1] == '\0')  // 判断是否到子串sub结尾
{
  num++;// 遇到子串sub结尾说明str已经有一个子串,则num+1
    break; 
        }
    return num;
}

纯手打,望采纳!

更多追问追答
追问
但我为什么不对
运行
fallx
2018-03-30 · TA获得超过5486个赞
知道大有可为答主
回答量:2321
采纳率:73%
帮助的人:759万
展开全部
int count(char *str,char *sub);//统计子串sub在母串str中的出现次数

void main()
{
char str[80],sub[80];
int n;
gets(str);
gets(sub);
printf("%d\n",count(str,sub));
}
int count(char *str,char *sub)
{
    int i,j,k,num=0;
    for(i=0;str[i]!='\0';i++)//母串没有结束就继续循环 
    for(j=i,k=0;sub[k]==str[j];k++,j++)//子串中的每个字符都要与母串中的相同
        if(sub[k]=='\0') //子串比较完毕
        {
            num++;
            break;
        }
    return num;
}
更多追问追答
追问
结果不对啊,为0

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式