6、实现字符串的 A-(A and B)

1、源程序
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

void fun(char *s,char *t,char *u)
{
int i,j,k,sl,tl,ul=0;
sl=strlen(s);
tl=strlen(t);
for(i=0;i<tl;i++)  //以t为基准进行扫描
    {
        for(j=0;j<sl;j++)
            if(s[j]==t[i]) break; //有相同的字符,进行下一轮的探寻
        if(j==sl)                 //说明扫描已完成,t的当前字符在s中没有相同的
        {
        for(k=0;k<ul;k++)
            if(t[i]==u[k]) break; //u中已经有了这个字符,那就踏过
        if(k==ul) 
            u[ul++]=t[i];          //储存这个字符
        }//if
        
    }//for
u[ul]='\0';
}

int main()
{
char s[100],t[100],u[100];
printf("input the two string:\n");
scanf("%s%s",s,t);
fun(s,t,u);
printf("the result is:%s\n",u);
//getch();
}
2、以其中一个集合为基准进行扫描,不在其中一个集合而在另个一个集合中的元素则进行输出。
     本程序忽略了相同元素。也可以不忽略,则如下程序所示:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

void fun(char *s,char *t,char *u)
{
int i,j,k,sl,tl,ul=0;
sl=strlen(s);
tl=strlen(t);
for(i=0;i<tl;i++)  //以t为基准进行扫描
    {
        for(j=0;j<sl;j++)
            if(s[j]==t[i]) break; //有相同的字符,进行下一轮的探寻
        if(j==sl)                 //说明扫描已完成,t的当前字符在s中没有相同的
        {
        //for(k=0;k<ul;k++)
            //if(t[i]==u[k]) break; //u中已经有了这个字符,那就踏过
        //if(k==ul) 
            u[ul++]=t[i];          //储存这个字符
        }//if
        
    }//for
u[ul]='\0';
}

int main()
{
char s[100],t[100],u[100];
printf("input the two string:\n");
scanf("%s%s",s,t);
fun(s,t,u);
printf("the result is:%s\n",u);
//getch();
}

3、思想简单,但要注意细节。

发布了321 篇原创文章 · 获赞 31 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/hopegrace/article/details/104605740