33,311
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
void Union(char *La, char *Lb);
int ListLength(char *L);
void GetElem(char *L, int i, char *e);
int LocateElem(char *L, char *e, int (*comp)(char a, char b));
int compare(char a, char b);
void ListInsert(char *, int, char *);
int main(){
char *La;
char *Lb;
int i;
for(i = 0; i <= 10; ++i){
La[i] = i;
Lb[i] = i + 5;
}
La[i] = '\0';
Lb[i] = '\0';
Union(La, Lb);
for(i = 0; La[i] != '\0'; ++i){
printf("%c\n", La[i]);
}
return 0;
}
//unite La and Lb without repeat elements
void Union(char *La, char *Lb){
int La_length = ListLength(La);
int Lb_length = ListLength(Lb);
int i = 0;
char *e;
for(i; i<= Lb_length; ++i){
GetElem(Lb, i, e);
if(!LocateElem(La, e, compare))
ListInsert(La, ++La_length, e);
}
}
//caculate the length of L
int ListLength(char *L){
int i;
for(i = 0; *(L + i) != '\0'; ++i);
return i;
}
void GetElem(char *L, int i, char *e){
*e = *(L + i);
}
//search the element e in L, if exist return the location, else return 0
int LocateElem(char *L, char *e, int (*comp)(char a, char b)){
int i;
for(i = 0; *(L + i) != '\0'; ++i){
if(comp(*(L + i), *e)) return i + 1;
}
return 0;
}
//compare the element a and b
int compare(char a, char b){
if(a == b) return 1;
return 0;
}
//if e doesn't exit in L, insert the e in L
void ListInsert(char *L, int i, char *e){
int j;
for(j = ListLength(L) - 1; j >= i; --j){
*(L + j + 1) = *(L + j);
}
L[ListLength(L)] = '\0';
*(L + i - 2) = *e;
}
#include<stdio.h>
#define MAX_ARR 10+1
void Union(char *La, char *Lb);
int ListLength(char *L);
void GetElem(char *L, int i, char e[]);
int LocateElem(char *L, char *e, int (*comp)(char a, char b));
int compare(char a, char b);
void ListInsert(char *, int, char *);
int main()
{
char arrLa[MAX_ARR *2] = {0};
char arrLb[MAX_ARR] = {0};
int i,iii;
for(i = 0; i <MAX_ARR; ++i)
{
arrLa[i] = 65 + i;
arrLb[i] = 70 + i;
}
Union(arrLa, arrLb);
for(i = 0; arrLa[i] != '\0'; ++i)
{
printf("Result:%c ", arrLa[i]);
}
printf("\n\n");
system("pause");
return 0;
}
//unite La and Lb without repeat elements
void Union(char La[], char Lb[])
{
int La_length = ListLength(La);
int Lb_length = ListLength(Lb);
int i = 0;
char e[2];
for(i; i<= Lb_length; ++i)
{
memset(e, 0, 2) ;
GetElem(Lb, i, e);
if( !LocateElem(La, e, compare) )
{
//ListInsert(La, ++La_length, e);
}
}
}
//caculate the length of L
int ListLength(char *L)
{
int i;
for(i = 0; *(L + i) != '\0'; ++i);
return i;
}
void GetElem(char *L, int i,char e[])
{
e[0] = *(L + i);
}
//search the element e in L, if exist return the location, else return 0
int LocateElem(char *L, char *e, int (*comp)(char a, char b))
{
int i;
for(i = 0; *(L + i) != '\0'; ++i)
{
if(comp(*(L + i), *e)) return i + 1;
}
return 0;
}
//compare the element a and b
int compare(char a, char b)
{
if(a == b)
return 1;
return 0;
}
//if e doesn't exit in L, insert the e in L
void ListInsert(char *L, int i, char *e)
{
int j;
for(j = ListLength(L) - 1; j >= i; --j)
{
*(L + j + 1) = *(L + j);
}
L[ListLength(L)] = '\0';
*(L + i - 2) = *e;
}
#define MAX_NUM 11
char arrA[MAX_NUM] = {0};
char arrB[MAX_NUM] = {0};
int i = 0;
for( ; i<MAX_NUM; i++)
{
arrA[i] = 65 + i;
arrB[i] = 70 + i;
}
arrA[i] = '\0';
arrB[i] = '\0';
后面的大概看了看,感觉有些乱,慢慢调试吧,把这程序调通了,你可以给自己C语言成绩加20分了。
祝你好运!