鱼C论坛

 找回密码
 立即注册
查看: 1581|回复: 3

想问一下各位大神, 为什么我输出的结果是这样子的, 我想输出的是s1:

[复制链接]
发表于 2020-11-29 01:34:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
using namespace std;
#include"c.h"

int main()
{
    sqstr s1, t1, str;
    input(s1, "dasczxca");
    input(t1, "dascxzfe");
    cout<<"s1: ";
    output(s1);
    cout<<"t1: ";
    output(t1);
    str = maxstr(s1, t1);
    cout<<"str: ";  output(str);
    cout<<str.length<<endl;
    return 0;
}




#define MaxSize 100
typedef struct
{
   char data[MaxSize];
   int length;
}sqstr;

void input(sqstr &s, char str[])
{
    int i = 0;
    while(str[i] != '\0')
    {
        s.data[i] = str[i];
        i++;
    }
    s.length = i;
}

void output(sqstr s)
{
   int i;
   for(i=0; i < s.length; i++)
   {
      cout<<s.data[i];
      cout<<endl;
   }
}

sqstr maxstr(sqstr s, sqstr t)
{
      sqstr str;
      int midx = 0, mlen = 0, tlen, i = 0, j, k;
      while(i < s.length)
      {
             j = 0;
           while(j < t.length)
           {
                 if(s.data[i] == t.data[j])
                 {
                        tlen = 1;
                        for(k=1; i+k < s.length && j+k < t.length && s.data[i+k] == t.data[j+k]; k++)
                        {
                           tlen++;
                        }

                        if(tlen > mlen)
                        {
                           midx = i;
                           mlen = tlen;
                        }
                        j = j+1;
                 }   
                    else j++;
           }
                 i++;
      }
      for(i=0; i < mlen; i++)
      {
         str.data[i] = s.data[midx+i];
      }
         str.length = mlen;
         return str;
}




输出结果:
s1: d
a
s
c
z
x
c
a
t1: d
a
s
c
x
z
f
e
str: d
a
s
c
4
Press any key to continue


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-11-29 01:36:38 | 显示全部楼层
s1: dasczxca
t1: dascxzfe
str: dasc
4
Press any key to continue

这是我想要的结果显示   我看了半天也不知道为什么它是一行一个一行一个输出的
求求大神!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-29 06:39:17 From FishC Mobile | 显示全部楼层
你for循环里面不要放cout<<endl,这个语句就是换行的意思,所以你每一次输出都紧跟了一次换行。把这个语句移动到for循环的括号后面,效果就会是输出所有字符再换行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-29 10:50:21 | 显示全部楼层
倒戈卸甲 发表于 2020-11-29 06:39
你for循环里面不要放cout

谢谢大神  好了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 13:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表