求救.....
请高手帮帮忙.....求集合的并交.#include"stdio.h"
#include"stdlib.h"
#include"string.h"
#define MAXSIZE 150 /* 数组最大界限*/
typedef int ElemType; /* 数据元素类型 */
typedef struct{
//ElemType a[MAXSIZE];/* 一维数组 子域 */
ElemType b[MAXSIZE];
int d1,d2,d3,d4;
int length; /* 数组长度子域 */
}SqList; /* 顺序存储的结构体类型*/
char a[]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
void out_put(char d[]){ //定义输出函数
int i;
if(d[i]=='\0')printf("Null!");
for(i=0;d[i]!='\0';i++)printf("%2c",d[i]);
}
void in_put1(char b[]){ //定义输入函数1
int i=0;
char ch;
ch=getchar();
ch=getchar();
while(ch!='\n'){
if(ch>=65&&ch<=90){
for(i=0;b[i]!='\0';)
b[i]=ch;//或用ch=b[i];
i++;
ch=getchar();
}
}
//dele_leach(int e[]);
}/*in_put1*/
void in_put2(char c[]) //定义输入函数2
{ int i=0;
char ch;
ch=getchar();
while(ch!='\n'){
if(ch>=65&&ch<=90){
for(i=0;c[i]!='\0';)
ch=c[i];
i++;
ch=getchar();
}
}
//dele_leach(char e[]);
}/*in_put2*/
/*void dele_leach(char e[]){ //定义去掉重复元素函数
int e[MAXSIZE];
int i,j,k;
for(i=0;e[i]!='\0';i++){
for(j=i+1;e[j]!='\0';){
if(e[i]==e[j]){
for(k=j+1;e[k]!='\0';k++)e[k-1]=e[k];
i--; //不知要不要
}
else j++;
}
}
}/*dele_leach*/ */
void jiaoji(char b[],char c[],char d[]){
int i,j=0,k=0;
for(i=0;b[i]!='\0';i++){
while(c[j]!=b[i]&&c[j]!='\0'){
j++;
}
if(b[i]==c[j]){
d[k]=b[i];
k++;
}
j=0;
}
}/*jiaoji*/
void binji(char b[],char c[],char d[]){
int i,j=0,k;
for(k=0;b[k]!='\0';k++){
d[k]=b[k];
}
for(i=0;c[i]!='\0';i++){
while(b[j]!=c[i]&&b[j]!='\0'){
j++;
}
if(b[j]=='\0'){
d[i]=b[i];
}
j=0;
}
}/*binji*/
void main()
{int choice;
do {
SqList b,c,d,e,d1,d2,d3,d4;
b.length=c.length=d.length=e.length=0; /*初始化结构体变量*/
d1.length=d2.length=d3.length=d4.length=0;
printf("\n1. 输出全集 " );
printf("\n2. 输入两个集合,并显示其交集");
printf("\n3. 输入两个集合,并显示其并集");
printf("\n4. 结束程序");
printf("\n请输入您的选择:1,2,3,4: ");
scanf("%d",&choice);
switch(choice)
{
case 1:{int i;
printf("输出全集是:");
for(i=0;i<26;i++)
{
printf("%c ",a[i]);
}
}break;
case 2:{
printf("\n请输入第1st个集合:");
in_put1(&b.d1); /*创建第一个集合*/
printf("\n请输入第2nd个集合:");
in_put2(&b.d2); /*创建第二个集合*/
printf("\n第1st集合是: ");
out_put(b.d1); /*输出第一个集合*/
printf("\n第2nd个集合是: ");
out_put(b.d2); /*输出第二个集合*/
printf("\n它们的交集是: ");
jiaoji(&d1,&d2,&d3); /*求交集*/
out_put(b.d3); /*输出交集*/
}break;
case 3:{
printf("\n请输入第1st个集合:");
in_put1(&b.d1); /*创建第一个集合*/
printf("\n请输入第2nd个集合:");
in_put2(&b.d2); /*创建第二个集合*/
printf("\n第1st集合是: ");
out_put(b.d1); /*输出第一个集合*/
printf("\n第2nd个集合是: ");
out_put(b.d2); /*输出第二个集合*/
printf("\n它们的并集是: ");
binji(&d1,&d2,&d3); /*求交集*/
out_put(b.d3); /*输出交集*/
}break;
} /* switch */
}while(choice>=1&&choice<4); /*输入合法,循环*/
printf("\n 再见!");
printf("\n");
} /* main */
编译运行后无错误提示,但是执行后,选2或3,只能输入第1st个集合,然后就不能执行了.
请各位高手多多指教!!!谢谢先啦.....
[[it] 本帖最后由 vation 于 2008-6-29 16:35 编辑 [/it]]
[[it] 本帖最后由 vation 于 2008-6-29 19:30 编辑 [/it]]