2015-10-17 126 views
-1

我最近編寫了一個簡短的小型後果避難所生存遊戲,我遇到了「預期」錯誤;在'{'token'之前。誤差在28行,23字:錯誤:預期';'之前'{'token

#include <stdio.h> 

int main(int argc, char *argv[]) 
{//setup changing variables 
    int X = 0; 
    int money = 300; 
    int resources[10]; 
    resources[0] = 100; 
    resources[1] = 200; 
    printf("Welcome!\nFirst we will choose the extra supplies for your shelter!"); 
    while(X < 1) 
    { 
     //Setup the input 
     char input[15]; 
     //Introduction: 
     printf("You have $%d dollars\n1: Cards ($4)\n2: Ounce of Gold ($20)\n3: 10 Pounds of Spare Parts($20)\n4: Ham Radio ($75)\n5: Calendar ($5)\n6: Book of Blueprints ($10)\n7: (2 Gallons) Extra Water Storage ($6)\n8: (1 gallon) Fuel ($10)\n9: Check Current Supplies\n10:Start\n", money); 
     //Have player buy Items 
     if(input == 1){ 
      if(money > 3){ 
       money = money - 4; 
       resources[2] = resources[2] + 1; 
       printf("You have purchased a deck of cards...\n"); 
      } 
      else{ 
       printf("You can not afford this item\n");  
      } 
     } 
     elif(input == 2) 
      { 
      if(money > 19) 
      { 
       money = money - 20; 
       resources[3] = resources[3] + 1; 
       printf("You have purchased an Ounce of Gold...\n"); 
      } 
      else 
      { 
       printf("You do not have enough money\n"); 
      } 
     } 
     elif(input == 3){ 
      if(money > 19){ 
       money = money - 20; 
       resources[4] = resources[4] + 10; 
       printf("You have purchased 10 pounds of Scrap Parts...\n"); 
      } 
      else{ 
       printf("You do not have enough money\n"); 
      } 
     } 
     elif(input == 4){ 
      if(money > 74){ 
       money = money - 75; 
       resources[5] = resources[5] + 1; 
       printf("You have purchased 1 Ham Radio...\n"); 
      } 
      else{ 
       printf("You do not have enough money.\n"); 
      } 
     } 
     elif(input == 5) 
     { 
      if(money > 4) 
      { 
       money = money - 5; 
       recources[6] = resources[6] + 1; 
       printf("You have just purchased a calendar...\n"); 
      } 
      else 
      { 
      printf("You can not afford the calendar.\n"); 
      } 
     } 
     elif(input == 6) 
     { 
      if(money > 9){ 
       money = money - 10; 
       resources[7] = resources[7] + 1; 
       printf("You have just purchased a Book filled with Blueprints...\n"); 
      } 
      else{ 
       printf("You can not afford the Book of Blueprints.\n"); 
      } 
     } 
     elif(input == 7){ 
      if(money > 5){ 
       int money = money - 6; 
       int resources[8] = resources[8] + 2; 
       printf("You have purchased 2 extra gallons of water storage..."); 
      } 
      else{ 
       printf("You do not have enough money..."); 
      } 
     } 
     elif(input == 8){ 
      if(money > 9){ 
       money = money - 10; 
       resources[9] = resources[9] + 1; 
       printf("You have purchased one gallon of fuel..."); 
      } 
      else{ 
       printf("You can not afford the fuel..."); 
      } 
     } 
     elif(input == 9){ 
      printf("You currently have: \n%s Pounds of Food\n%s Gallons of Water\n%s Decks of Cards\n%s Ounces of Gold\n%s Pounds of Spare Parts\n%s Ham Radios\n%s Calendars\n%s Books of Blueprints\n%s Gallons of Fuel", resources[0], resources[8] + resources[1], resources[2], resources[3], resources[4],  resources[5], resources[6], resources[7], resources[9]); 
      fgets(input, sizeof(input), stdin); 
     } 
     elif(input == 10){ 
      break; 
     } 
     else 
     { 
      printf("Input Invalid"); 
      fgets(input, sizeof(input), stdin); 
     } 
    } 
    int h = 100; 
    while(int h > 0) 
    { 
     printf("%d", h); 
     h = h - 1; 
    } 
} 
+3

你不能在C中使用'elif',你應該使用'else if'。還有更多的錯誤...... – MikeCAT

+2

'input'沒有初始化,像'input == 1'這樣的比較沒有任何意義。您可能想要將'input'的類型更改爲'int',並使用'scanf'來讀取輸入。 – MikeCAT

+0

哦,哇......在newb可以做出的許多問題中,這可能相當高......雖然非常感謝,但是if和else都是C/C++,所以我幾乎找不到每個教程很多時候(糟糕的藉口)...非常感謝!還有一件事,scanf的參數是什麼? –

回答

1
  • 不能使用elif在C.你應該使用else if代替。
  • printf,%s不適用於打印整數。您應該使用%d
  • With char input[15];input == 1等比較沒有意義。您可以使用int char;
  • input未初始化。你應該閱讀一些數據。
  • recources未定義。它應該是resources的錯字。
  • 我改變的input類型int,把scanf分支之前,所以刪除fgets(input, sizeof(input), stdin);
  • int money = money - 6;int resources[8] = resources[8] + 2;while(int h > 0)
  • 的參數不用於去除多餘的int S,所以更改int main(int argc, char *argv[])int main(void)。 (可選,以避免警告)

好的,現在編譯錯誤消失了。

#include <stdio.h> 

int main(void) 
{//setup changing variables 
    int X = 0; 
    int money = 300; 
    int resources[10]; 
    resources[0] = 100; 
    resources[1] = 200; 
    printf("Welcome!\nFirst we will choose the extra supplies for your shelter!"); 
    while(X < 1) 
    { 
     //Setup the input 
     int input; 
     //Introduction: 
     printf("You have $%d dollars\n1: Cards ($4)\n2: Ounce of Gold ($20)\n3: 10 Pounds of Spare Parts($20)\n4: Ham Radio ($75)\n5: Calendar ($5)\n6: Book of Blueprints ($10)\n7: (2 Gallons) Extra Water Storage ($6)\n8: (1 gallon) Fuel ($10)\n9: Check Current Supplies\n10:Start\n", money); 
     //Have player buy Items 
     if(scanf("%d", &input) != 1) return 1; 
     if(input == 1){ 
      if(money > 3){ 
       money = money - 4; 
       resources[2] = resources[2] + 1; 
       printf("You have purchased a deck of cards...\n"); 
      } 
      else{ 
       printf("You can not afford this item\n");  
      } 
     } 
     else if(input == 2) 
      { 
      if(money > 19) 
      { 
       money = money - 20; 
       resources[3] = resources[3] + 1; 
       printf("You have purchased an Ounce of Gold...\n"); 
      } 
      else 
      { 
       printf("You do not have enough money\n"); 
      } 
     } 
     else if(input == 3){ 
      if(money > 19){ 
       money = money - 20; 
       resources[4] = resources[4] + 10; 
       printf("You have purchased 10 pounds of Scrap Parts...\n"); 
      } 
      else{ 
       printf("You do not have enough money\n"); 
      } 
     } 
     else if(input == 4){ 
      if(money > 74){ 
       money = money - 75; 
       resources[5] = resources[5] + 1; 
       printf("You have purchased 1 Ham Radio...\n"); 
      } 
      else{ 
       printf("You do not have enough money.\n"); 
      } 
     } 
     else if(input == 5) 
     { 
      if(money > 4) 
      { 
       money = money - 5; 
       resources[6] = resources[6] + 1; 
       printf("You have just purchased a calendar...\n"); 
      } 
      else 
      { 
      printf("You can not afford the calendar.\n"); 
      } 
     } 
     else if(input == 6) 
     { 
      if(money > 9){ 
       money = money - 10; 
       resources[7] = resources[7] + 1; 
       printf("You have just purchased a Book filled with Blueprints...\n"); 
      } 
      else{ 
       printf("You can not afford the Book of Blueprints.\n"); 
      } 
     } 
     else if(input == 7){ 
      if(money > 5){ 
       money = money - 6; 
       resources[8] = resources[8] + 2; 
       printf("You have purchased 2 extra gallons of water storage..."); 
      } 
      else{ 
       printf("You do not have enough money..."); 
      } 
     } 
     else if(input == 8){ 
      if(money > 9){ 
       money = money - 10; 
       resources[9] = resources[9] + 1; 
       printf("You have purchased one gallon of fuel..."); 
      } 
      else{ 
       printf("You can not afford the fuel..."); 
      } 
     } 
     else if(input == 9){ 
      printf("You currently have: \n%d Pounds of Food\n%d Gallons of Water\n%d Decks of Cards\n%d Ounces of Gold\n%d Pounds of Spare Parts\n%d Ham Radios\n%d Calendars\n%d Books of Blueprints\n%d Gallons of Fuel", resources[0], resources[8] + resources[1], resources[2], resources[3], resources[4],  resources[5], resources[6], resources[7], resources[9]); 
     } 
     else if(input == 10){ 
      break; 
     } 
     else 
     { 
      printf("Input Invalid"); 
     } 
    } 
    int h = 100; 
    while(h > 0) 
    { 
     printf("%d", h); 
     h = h - 1; 
    } 
} 

Enjoy!

對不起,我不喜歡,但惱火。

+0

所以對不起......我真的只是不能爲我的生活弄清楚這一點......正如我所說,總noob ... –

0

在c elif不存在。所以,它給出了這個錯誤。 將elif更改爲else並進行驗證。

+0

我會盡力,非常感謝! –

相關問題