(2种)编写一个函数funchar(char *a,char *b,char *c)实现如下功能:将在第一个字符串中出现的但在第二个字符串未出现的字符放在第三个字符串中,函数返回第三个字符串的长度。
#include<stdio.h>
#include<string.h>
typedef struct zimu
{
char a[32];
char b[32];
char c[32];
}str;
int main()
{
int i,k=0,j,t=0;
str x={0};
scanf("%s",&x.a);
scanf("%s",&x.b);
for(i=0;i<strlen(x.a);i++)
{
for(j=0;j<strlen(x.b);j++)
{
if(x.a[i]==x.b[j])
{
t=0;
break;
}
else
{
t=1;
continue;
}
}
if(t==1)
{
x.c[k]=x.a[i];
k++;
}
}
printf("%s %d",x.c,k);
}
#include <stdio.h>
#include <string.h>
int funchar(char p1[], char p2[], char p3[])
{
int i,k=0,t,j;
for(i=0;i<strlen(p1);i++)//这个循环来读取p1的数组内容
{
for(j=0;j<strlen(p2);j++)//这个循环来读取p2的数组内容
{
if(p1[i]==p2[j])//比较p2在p1中是否有相同的数组内容,如果有就t=0。进行p[0],[1]等等的比较,要看p2的数组长度
{
t=0;
break;//打破循环体,跳出if语句和for语句,不再执行for(j)
}
else
t=1;
//跳过循环体中剩余语句,强制执行下一次循环,此处不用continue也行
}
if(t==1)//当t=1时,说明有不同的内容,将不同的内容赋值给p3,然后输出p3中数组的个数
{
p3[k]=p1[i];
k++;
}
}
p3[k]='\0';
return k;
}//补充funchar代码
void main(void)
{
char a[100], b[100], c[100];
int length;
gets(a);
gets(b);
length = funchar(a, b, c);
printf("%s %d\n", c, length);
}
如果需要注解说明,请联系作者。