2014-09-10 61 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中調用它們?