是阿杰呀 发表于 2020-11-29 01:34:27

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

#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;
   int length;
}sqstr;

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

void output(sqstr s)
{
   int i;
   for(i=0; i < s.length; i++)
   {
      cout<<s.data;
      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 == t.data)
               {
                        tlen = 1;
                        for(k=1; i+k < s.length && j+k < t.length && s.data == t.data; k++)
                        {
                           tlen++;
                        }

                        if(tlen > mlen)
                        {
                           midx = i;
                           mlen = tlen;
                        }
                        j = j+1;
               }   
                  else j++;
         }
               i++;
      }
      for(i=0; i < mlen; i++)
      {
         str.data = s.data;
      }
         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


是阿杰呀 发表于 2020-11-29 01:36:38

s1: dasczxca
t1: dascxzfe
str: dasc
4
Press any key to continue

这是我想要的结果显示   我看了半天也不知道为什么它是一行一个一行一个输出的
求求大神!!!

倒戈卸甲 发表于 2020-11-29 06:39:17

你for循环里面不要放cout<<endl,这个语句就是换行的意思,所以你每一次输出都紧跟了一次换行。把这个语句移动到for循环的括号后面,效果就会是输出所有字符再换行

是阿杰呀 发表于 2020-11-29 10:50:21

倒戈卸甲 发表于 2020-11-29 06:39
你for循环里面不要放cout

谢谢大神好了!{:5_91:}
页: [1]
查看完整版本: 想问一下各位大神, 为什么我输出的结果是这样子的, 我想输出的是s1: