注册 登录
编程论坛 数据结构与算法

串的 输入输出问题

情义控灬浮云 发布于 2018-11-11 23:32, 1852 次点击
大佬们   这个程序 是把串T中每个字符在串S中第一次出现的位置。 我先把T里面重复的给“删”了,然后对比,但是输出结果删的位置和我想的不一样 ,我写的明明是删除重复的后者,程序跑出来删的是前者,还有for(;;i++)下面紧跟if语句 i值就加了吗 第j个  不应该是j+1么,但是这样程序跑出来却多算了一个,求指点
#include<stdio.h>
#include<stdlib.h>
typedef struct{
    char ch[50];
    int len;
}String;
int main()
{
    int i,j,k;
    String s,t;
    printf("please input the character in S you want to :\n");
    scanf("%d",&s.len);
    printf("their are:\n");
    for(i=0;i<s.len;i++)
        scanf("%c",&s.ch[i]);
    fflush(stdin);
    printf("please input the character in T you want to :\n");
    scanf("%d",&t.len);
    fflush(stdin);
    printf("their are:\n");
    for(i=0;i<t.len;i++)
        scanf("%c",&t.ch[i]);
    for(i=0;i<t.len-1;i++)
    {
        for(j=0;j<t.len&&j!=i;j++)
        {
            if(t.ch[i]==t.ch[j])
            {
                for(k=j;k<t.len-1;k++)
                {
                    t.ch[k]=t.ch[k+1];
                }
                t.len=t.len-1;
            }
        }
    }
    for(i=0;i<t.len;i++)
    {
        k=0;
        for(j=0;j<s.len;j++)
        {
            if(t.ch[i]==s.ch[j])
            {
                printf("%c 在串T中首次出现的位置为: %d;\n",t.ch[i],j);
                k++;
                break;
            }
        }
        if(k==0)
            printf("error! there is no %c in T!\n",t.ch[i]);

    }
    system("pause");
}
0 回复
1