60.
编程题
将未在字符串s中出现而在字符串t中出现的字符形成一个新的字符串放在u中,u中字符按原字符串中字符顺序排列,不去掉重复字符。
测试数据:
s:ABCDE, t:BDFGG
运行结果:FGG
请认真测试程序的正确性。将源代码以文本方式提交,不要直接提交文件。
【算法提示】
设计函数void fun(char *s, char *t, char *u)实现要求的功能,函数以字符指针作为参数,通过指针移动进行字符比较:
设置两个字符指针p和q,p指针指向t串,q指针指向s串;通过移动指针p和q,将t串中的一个字母与s中的每个字母进行比较,若有相同的,则中断,再看t中的下一个,直到最后都没有相同的,放入u中。
#include <stdio.h>
void fun(char *s, char *t, char *u)
{
int k = 0;
for (int i = 0; t[i]; i++)
{
int flag = 0;
for (int j = 0; s[j]; j++)
{
if (t[i] == s[j])
{
flag = 1;
break;
}
}
if (!flag) u[k++] = t[i];
}
u[k] = 0;
}
int main()
{
char *s = "ABCDE";
char *t = "BDFGG";
char u[100];
fun(s,t,u);
printf("%s\n", u);
return 0;
}
您莫非就是传说中的彭老师的学生?
#include
void fun(char *s, char *t, char *u)
{
char *p=s;
char *q=t;
char *m=u;
for(;*q!='\0';*q++)
{
p=s;
for(;*p!='\0';*p++)
if (*q==*p)
break;
if (*p=='\0')
{
*m=*q;
*m++;
}
}
}
int main()
{
int i=0;
char s[80],t[80],u[160]={0};
printf("输入第一个字符串:");
gets(s);
printf("输入第二个字符串:");
gets(t);
fun(s,t,u);
for(i=0;i<160;i++)
{
if(u[i]==0)
break;
else
printf("%c",u[i]);
}
return 0;
}