2015-11-08 42 views
-4

這是我的程序的輸出。即使條件已經滿足,它仍然不會退出循環enter image description hereC編程(程序不會出現循環)

這是我的程序。第一個while循環詢問用戶是否擁有汽車。

#include <stdio.h> 
#include <conio.h> 
#define TRANSPORT 1 


int main() 
{ 
    char PrivateVehicle; 

    printf("DRIVING ANF FLYING CARBON FOORPRINT \n"); 

    printf("I. LAND \n"); 

    printf("A. PRIVATE OWNED \n"); 

    while (TRANSPORT==1) 
    { 
     do 
     { 
      printf("Question 1: \n"); 
      printf("Do you have your own private vehicle? [Y/y]-Yes, [N/n]-No \n"); 
      printf("Note: Only the letters Y, y for yes and N, n for no would be accepted \n"); 
      scanf (" %c", &PrivateVehicle); 

      if (PrivateVehicle!='Y' && PrivateVehicle!='y' && PrivateVehicle!='N' && PrivateVehicle!='n') 
       printf("Inavlid \n"); 
     } while (PrivateVehicle!='Y' && PrivateVehicle!='y' && PrivateVehicle!='N' && PrivateVehicle!='n'); 

     if (PrivateVehicle=='Y'|| PrivateVehicle=='y') // should go out of the loop after condition is met 
      printf("Y/y\n"); //For checking 

     else if (PrivateVehicle=='N'|| PrivateVehicle=='n') // should go out of the loop after condition is met 
      printf("N/n\n"); //For checking 

     TRANSPORT==0; 

    } 

    printf("Out"); //For checking 

    printf("B. PUBLIC TRANSPORT \n"); 
} 
+0

該程序似乎沒有輸出圖像。我沒有檢查,但如果你的'輸出'是普通的純文本,就把它放在你的文章中。 – usr2564301

回答

2

您不能分配於宏標識符與

TRANSPORT == 0; 

(甚至當「固定」的===)。如果您需要更改某個值,您需要使用一個變量,例如int TRANSPORT = 0;而不是#define指令。

的原因是非終止循環是宏展開後,你有

while (1==1) 

這是總是如此。

+0

謝謝!該程序現在正常工作 – TheYellowOcean

1

符號TRANSPORT是一個預處理宏,它不能在運行時更改。實際上,在生成的代碼中根本沒有提及TRANSPORT符號,一旦預處理器將代碼中的替換掉,它就不存在。

0

TRANSPORT被定義爲預處理器宏 - 您將其更改爲變量。 然後,你還是會需要changehe計算結果爲TRANSPORT==0;是一個分配TRANSPORT=0;

0

您不能使用#define TRANSPORT 1,而是使用int TRANSPORT = 1或類似的東西。

#define創建一個宏,它是標識符 或參數化標識符與標記字符串的關聯。在宏定義爲 之後,編譯器可以用源文件中標識符的每個 替換標記字符串。