중화사전망 - 서예자전 - 사전 작성 c

사전 작성 c

# include & ltstdio.h & gt

# include & ltstring.h & gt

# include & ltmalloc.h & gt

# include & ltmath.h & gt

# min(A 정의 (a, b) (a < B? 답: 을)

# max(A 정의 (a, b) (a < B? 나: 갑

Typedef 구조 사전

{

Char en [30];

Char zh [30];

Struct Dict * next

} Dict

인트메인 (void)

{

Dict * head = 0;;

Intstuccount = 0; //수량

While( 1)

{

Printf ("입력 피연산자: 1: 어휘 입력 2: 찾아보기 3: 중국어-영어 4: 영어-중국어 5: 삭제 6: 종료:");

Int quest

Scanf ('%d', & ampquest);

Scanf ("%* [\ n]);

If (quest = = 6) break;

Else if(quest = = 1)

{

Dict * newdict = (dict *) malloc (sizeof (dict));

Printf ("중국어를 입력하십시오:");

Scanf(“% 29s', newdict-> Zh);

Scanf ("%* [\ n]);

Printf ("영어를 입력하십시오:");

Scanf(“% 29s', newdict-> En);

Scanf ("%* [\ n]);

//연결된 목록의 머리를 삽입하여 새로 추가된 내용이 맨 위에 표시되도록 하여 효과를 쉽게 볼 수 있습니다.

Newdict-> Next = head

Head = newDict

++stu ccount;

}

Else if(quest = = 2)

{

If(head = = 0)

Printf ("할 말이 없어! \ n ");

기타

{

Printf ("단어 찾아보기 시작: \ n");

While( 1)

Int st=0, en = min(ST+ 10, stuccount);

{

Printf ("browse:% d to% d words \ n", st+ 1, en);

Dict * stu = 헤드

For(int I = 0;; 나 & ltST;; ++i)

{

스튜 = 스튜-> 다음으로,

}

For(int I = ST;; 나 & lten;; ++i)

{

Printf ("중국어: %s 영어: %s\n", stu-& gt;; 음, 스튜-> Zh);

스튜 = 스튜-> 다음으로,

}

Printf ("작업 번호 입력: 1 페이지 뒤로; 앞으로 2 페이지 -1exit: ");

Int squest

Scanf ('%d', & ampsquest);

Scanf ("%* [\ n]);

If(squest = = 1)

{

만약 (en! = stu count)ST = en;;

}

Else if(squest = = 2)

{

ST = max(0, ST-10);

}

Elseif (squest = =-1) break;

En = min(ST+ 10, stuccount);

}

}

}

Elseif (quest = = 3 | | quest = = 4 | | quest = = 5)

{

차 a [30];

If(quest = = 3)printf ("중국어 단어 입력:");

Else if(quest = = 4)printf ("영어 단어 입력:");

Else if(quest = = 5)printf ("삭제할 단어 입력 (중국어와 영어 모두 가능):");

Scanf(“% 29s', a);

Scanf ("%* [\ n]);

Dict * stu = 헤드

Dict * lst stu = 0;;

Intflag = 0;

그리고 (스튜! = 0 & amp& ampflag==0)

{

If(quest = = 3)

{

If(strcmp(a, stu-& gt;; Zh)= 0)

{

Printf ("영어: %s\n", stu-& gt;; En);

Flag =1;

}

}

Else if(quest = = 4)

{

If(strcmp(a, stu-& gt;; En)= 0)

{

Printf ("중국어는 %s\n", stu-& gt;; Zh);

Flag =1;

}

}

Else if(quest = = 5)

{

If(strcmp(a, stu-& gt;; En)= = 0 | | strcmp(a, stu-& gt;; Zh)= 0)

{

Stu ccount-;

If(lst stu! =0)

Lst stu-& gt;; Next = stu-& gt;; 다음으로,

기타

Head = stu-& gt;; 다음으로,

Printf ("삭제됨! \ n ");

Flag =1;

}

}

Lststu = stu

스튜 = 스튜-> 다음으로,

}

다음 경우 (플래그 ==0)

{

Printf ("단어를 찾을 수 없습니다! \ n ");

}

}

}

0 을 반환합니다

}

네가 달릴 수 있는지 보자. 새로운 수요가 있다면, 나는 계속 쓸 수 있다. 코드는 매우 명확해야 한다. 만약 네가 아무것도 이해하지 못한다면, 내가 너에게 설명해 줄 수 있다. 질문을 환영합니다.