오케이 그럼 C와는 새로운 것이므로 기본적으로 4 라운드의 테니스 토너먼트를 통해 사용자를 안내하는 프로그램을 작성했습니다. 프로그램은 마지막 함수 (FR)까지 완벽하게 작동합니다. 우승 한 숫자를 입력 한 후 프로그램이 R1로 바로 돌아갑니다. 어떻게 가능합니까? 최종 라운드 이후에 프로그램을 종료하려면 어떻게해야합니까?마지막 기능이 루프의 일부가 아니어도 프로그램이 루프 순환에 머물렀다
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define R1CONTESTANTS 16
#define R2CONTESTANTS 8
#define R3CONTESTANTS 4
#define FRCONTESTANTS 2
#define WINNER 1
int main(void)
{
GetNames();
R1();
R2();
R3();
FR();
return 0;
}
int GetNames()
{
char Name[R1CONTESTANTS][20];
int n;
printf("Hello and Welcome to the 2014 Tennis Knockout Competition!\n");
printf("Please enter the names of all 16 players (MAX 20 CHARACTERS): \n");
/*Get Names loop*/
for(n = 0; n < 16 ; n++)
{
printf("%d >>", n+1);
scanf("%20s", Name[n]);
fflush(stdin);
}
R1(Name);
}
int R1(char Name[][20])
{
char R2Name[R2CONTESTANTS][20];
int m, i;
int Winner[8];
system("clear");
printf("WELCOME TO ROUND 1! IT WILL CONSIST OF 8 MATCHES! GOOD LUCK!");
for(m = 0, i = 0; m < 8 ; m++, i+=2)
{
printf("\nMatch %d of 8.\n", m+1);
printf("\n(1) %s v %s (2)\n", Name[i], Name[i+1]);
printf("\nWinner of Match %d(1/2): ", m+1);
scanf("%d", &Winner[m]);
fflush(stdin);
switch(Winner[m])
{
case 1 : strncpy(R2Name[m], Name[i], 20);break;
case 2 : strncpy(R2Name[m], Name[i+1], 20);break;
default : printf("\nSomething went wrong. Please try again.\n");break;
}
}
R2(R2Name);
}
int R2(char R2Name[][20])
{
char R3Name[R3CONTESTANTS][20];
int m, i;
int R2Winner[4];
system("clear");
printf("WELCOME TO ROUND 2! IT WILL CONSIST OF 4 MATCHES! GOOD LUCK!");
for(m = 0, i = 0; m < 4; m++, i+=2)
{
printf("\nMatch %d of 4.\n", m+1);
printf("\n(1) %s v %s (2)\n", R2Name[i], R2Name[i+1]);
printf("\nWinner of Match %d(1/2): ", m+1);
scanf("%d", &R2Winner[m]);
fflush(stdin);
switch(R2Winner[m])
{
case 1 : strncpy(R3Name[m], R2Name[i], 20);break;
case 2 : strncpy(R3Name[m], R2Name[i+1], 20);break;
default : printf("\nSomething went wrong. Please try again.\n");break;
}
}
R3(R3Name);
}
int R3(char R3Name[][20])
{
char FRName[FRCONTESTANTS][20];
int m, i;
int R3Winner[2];
system("clear");
printf("WELCOME TO THE SEMI FINALS! GOOD LUCK!");
for(m = 0, i = 0; m < 2; m++, i+=2)
{
printf("\nMatch %d of 2.\n", m+1);
printf("\n(1) %s v %s (2)\n", R3Name[i], R3Name[i+1]);
printf("\nWinner of Match %d(1/2): ", m+1);
scanf("%d", &R3Winner[m]);
fflush(stdin);
switch(R3Winner[m])
{
case 1 : strncpy(FRName[m], R3Name[i], 20);break;
case 2 : strncpy(FRName[m], R3Name[i+1], 20);break;
default : printf("\nSomething went wrong. Please try again.\n");break;
}
}
FR(FRName);
}
int FR(char FRName[][20])
{
int FRWinner;
char OWName[WINNER][20];
system("clear");
printf("YOU HAVE MADE IT TO THE FINAL ROUND! GOOD LUCK!");
printf("\n\n(1) %s v %s (2)\n", FRName[0], FRName[1]);
printf("\nWinner of Match and Tournament(1/2): ");
scanf("%d", &FRWinner);
fflush(stdin);
switch(FRWinner)
{
case 1 : strncpy(OWName[0], FRName[0], 20);break;
case 2 : strncpy(OWName[0], FRName[1], 20);break;
default : printf("Something went wrong.");break;
}
}
'fflush (stdin)'을 호출하지 마십시오. –
저의 강사가 우리에게 입력하게하고, 그렇지 않으면 ill drop marks가 –
int R3 (char R3Name [] [20]) 함수에 있지만 R3()로 호출하는 매개 변수는 전달하지 않습니다. 왜? –