2014-09-10 45 views
-9

我编译并运行并选择否。 1和y,它不会计算价格?请帮忙。也不会让我选择座位。进一步检查后,价格将不会加载其他电影。请帮忙检查C编程代码

#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 

void printarray(const int[6][10]); 
float price(); 
float seat(); 
int i,j; 
int array[50][50]={1,1,1,2,1,3,1,4,1,5,1,6,1,7,1,8,1,9,1,10, 
        2,1,2,2,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10, 
        3,1,3,2,3,3,3,4,3,5,3,6,3,7,3,8,3,9,3,10, 
        4,1,4,2,4,3,4,4,4,5,4,6,4,7,4,8,4,9,4,10, 
        5,1,5,2,5,3,5,4,5,5,5,6,5,7,5,8,5,9,5,10, 
        6,1,6,2,6,3,6,4,6,5,6,6,6,7,6,8,6,9,6,10}; 

float padult=12.00, pkids=8.00, total, adult, kids, tadult, tkids; 
char choice1, y, n; 
char decision1; 
char decision2; 


int main() 
{ 
    printf("\n\t\t\t WELCOME \n\t\t\t\t\tTO\n\t\t\t THE CINEMAS \n"); 
    printf("\n\t\t Please choose your movie: \n"); 

    int choice; 
    printf("\n\t\t1. Finding Nemo "); 
    printf("\n\t\t2. Transformers "); 
    printf("\n\t\t3. Don't Break My Heart"); 
    printf("\n\t\t4. Meet The Robinson"); 
    printf("\n\t\t5. Good Night!!"); 
    printf("\n\t\t6. Cancel"); 
    printf(" \n\n\n Please choose 1 of the option: "); 
    scanf("%d", &choice); 

    switch(choice) { 
    case 1: 
     printf("\nTitle: Finding Nemo\n"); 
     printf("Description:\n"); 
     printf("About a fish name Nemo caught by a human. And his father tries to save him by travelling around the world. "); 
     printf("\nNemo is being caught and unconciously being brought to Sydney, Australia..."); 
     printf("\nWill his father who never leave their home save Nemo... Will his father survive the travelling around the world.. "); 
     printf("\nGenre: Cartoon\n"); 
     printf("Do you want to watch this movie:[y][n]\n"); 
     scanf("%c",&choice1); 
     scanf("%c",&choice1); 

     if(choice1 == 'y'){ 
      price(); 
      break; 
     } else { 
      main(); 
     } 
     break;     

    case 2: 
     printf("\nTitle: Transformers\n"); 
     printf("Description:\n"); 
     printf("Story starts when 5 robots that call themselves Autobots arrive on Earth. They tried to protect human from Decepticon which are evil.\nThey fought the Decepticon clan with all their might. Will the earth be saved by the Autobots...\nOr will the Earth fall to the hand of the Decepticon and human race extinct..."); 
     printf("\nGenre: Scifi\n"); 
     printf("Do you want to watch this movie:[y][n]\n"); 
     scanf("%c",&choice1); 
     scanf("%c",&choice1); 

     if(choice1 == 'y'){ 
      float price(); 
      break; 
     } else { 
      main(); 
     } 
     break; 


    case 3: 
     printf("\nTitle: Don't Break My Heart...\n "); 
     printf("Description:\n"); 
     printf("Don't Break My Heart is a story about a young girl named Elizabeth that doesn't believe in love anymore. At the age of 16, she's being played by the most handsome boy in her school.\nThe boy broke up with her in front of the school assembly making her embarrased to go to school after that situation. Luckily, a boy named Samuel like her but never reveal his true feelings.\nHe than help the girl to realise the happiness of love. Will the girl realise the true feelings of Samuel..."); 
     printf("\nGenre: Romance\n"); 
     printf("Do you want to watch this movie:[y][n]\n"); 
     scanf("%c",&choice1); 
     scanf("%c",&choice1); 

     if(choice1 == 'y'){ 
      float price(); 
      break; 
     } else { 
      main(); 
     } 
     break; 


    case 4: 
     printf("\nTitle: Meet The Robinson\n"); 
     printf("Description:\n"); 
     printf("Meet The Robinson is a Disney cartoon that tells us about a lonely orphan is being attacked by his enemy from the future. He is than help by his own son from the future.\nHe has to help his son so his enemy does not change the past. He help his son defeat his true enemy by time travelling.\nHis enemy who's actually his childhood friend realise that he is being used. He then switches sides and defeated their true enemy.\nThis movie shows you how friendship help us defeat anything eventhough they are far away."); 
     printf("\nGenre: Cartoon\n"); 
     printf("Do you want to watch this movie:[y][n]\n"); 
     scanf("%c",&choice1); 
     scanf("%c",&choice1); 

     if(choice1 == 'y'){ 
      float price(); 
      break; 
     } else { 
      main(); 
     } 
     break; 


    case 5: 
     printf("\nTitle: Good Night!!\n"); 
     printf("Description:\n"); 
     printf("Good Night!! is a horror story about a ghost who live in peoples dream. Once he entered the dream, it will come out until the dreamer died.\nYou cannot get out of the dream unless you are awake before the final sign. If you get to see this ghost what will you do?\nFind out how they defeat the ghost inside the dream.."); 
     printf("\nGenre: Horror\n"); 
     printf("Do you want to watch this movie:[y][n]\n"); 
     scanf("%c",&choice1); 
     scanf("%c",&choice1); 

     if(choice1 == 'y'){ 
      float price(); 
      break; 
     } else { 
      main(); 
     } 
     break; 


    case 6: 
     printf("\nThank you!!\nGood bye\n"); 


    default: 
     printf("Invalid choice...\n"); 
     printf("\n\n Do you wish to continue?[y][n]: "); 
     scanf("%c", &decision1); 

     if(decision1 == 'y'){ 
      main(); 
     } else { 
      printf("\n\n Thank You!!\nGood bye\n"); 
      break; 
     } 
     break; 
    }    
    system("pause"); 
    return 0; 
} 


float price(){ 
     printf("\n\tPrice: Adult: RM12.00\n\tChildren: RM8.00\n"); 
     printf("How many adult: \n"); 
     scanf("%d", &adult); 
     printf("How many kids: \n"); 
     scanf("%d", &kids); 
     printf("You have %d adult and %d kids\n", adult, kids); 
     total=(adult*padult)+(kids*pkids); 
     printf("Select seats: \n"); 
     float seats(); 
     printf("Total= RM .2%f\n", total); 
     return total; 
} 
+2

自己调试代码。错误的编码!!函数调用应该是'price(); '不'浮动价格();'。不要从main调用'main'。我认为你不熟悉[goto。](http://www.tutorialspoint.com/cprogramming/c_goto_statement.htm) – 2014-09-10 11:37:04

+0

不要从代码中递归地调用'main()'... – 2014-09-10 11:38:44

+2

为什么不呢?也许他想引起该网站的名称,堆栈溢出... – 2014-09-10 11:39:54

回答

1

你的代码有很多问题。仅举几例:

  1. scanf("%c",&choice1);会考虑进入按键。

  2. 情况下5float price(); - >不正确。

  3. if(decision1 == 'y'){ main(); } - >使用标志和do..while()

等等,等等

此外,它是不是一个很好的实践的研究把一切内主。为了清理代码并增强可读性,如何为每个case创建单独的函数并从switch中调用它们?