a839419160 2017-04-17 14:50 采纳率: 0%
浏览 8436

C语言编程:写一个函数,输入一行字符,将此字符串中最长的单词输出.

为什么当最长的单词出现在最后一个就不能输出
#include
#include
void f(char m[],int n)
{
int i,count=0,r=0,s=0;
for(i=0;i<=n;i++)
{
if(m[i]!=' ')
{
count++;
}
else if(m[i]==' '||m[i]=='\0')
{
if(r<count)
{
r=count;
s=i-1;
}
count=0;
}
}
for(i=s-r+1;i<=s;i++)
{
printf("%c",m[i]);
}
}
int main()
{
char a[100];
gets(a);
int len=strlen(a);
f(a,len);
printf("\n");
return 0;

}

  • 写回答

2条回答 默认 最新

  • 战在春秋 2017-04-17 22:46
    关注

    假设输入为a bc, strlen函数返回值为4

    这样在第一个for循环中m[4]也会被判断,而m[4]不等于空格是成立的,所以conut结果为3,显然是不对的,应该是bc的长度2

     if(m[i]!=' ')
    {
        count++; 
    }
    

    修改后的代码如下:

    void f(char m[], int n)
    {
        int i, count = 0, r = 0, s = 0;
        for (i = 0;i <= n ;i++)
        {
            if (m[i] != ' ' && m[i] != '\0') //此处为重新修改判断条件
            {
                count++;
            }
            else 
            {
                if (r<count)
                {
                    r = count;
                    s = i - 1;
                }
                count = 0;
            }
        }
        for (i = s - r + 1;i <= s;i++)
        {
            printf("%c", m[i]);
        }
    }
    int main()
    {
        char a[100];
        gets(a);
        int len = strlen(a);
        f(a, len);
        printf("\n");
        return 0;
    }
    

    图片说明

    评论

报告相同问题?

悬赏问题

  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建