2015-11-08 18 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创建一个宏,它是标识符 或参数化标识符与标记字符串的关联。在宏定义为 之后,编译器可以用源文件中标识符的每个 替换标记字符串。