2012-08-15 415 views
0

我正在做一个简单的程序,从输入的ID中获取用户余额。出于某种原因,被输入从所述listof_ID阵列的ID时for循环不执行:为什么不执行此循环?

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

int main() 
{ 
    int cntr; 
    int ID; 

    int listof_ID[] = {001, 002, 003, 004, 005}; 
    float listof_BAL[] = {338.90, 745.87, 897.32, 665.36, 102.45}; 

    puts("**Check Your Balance** \n"); 
    printf("**Please Enter Your ID >> "); 
    scanf("%d", &ID); 
    for(cntr = 0; cntr > 5; cntr++) 
    { 
     if(ID == listof_ID[cntr]) 
     { 
      puts("Your balance is "); 
      printf("%.2f", listof_BAL[cntr]); 
      break; 
     } 
    } 

    return 0; 
} 
+5

cntr> 5将不会发生,因为它被初始化为0 – squiguy 2012-08-15 20:36:58

+5

您是否意识到您正在使用八进制文字初始化listof_ID []?在这种情况下,这并不重要,但仍然看起来好像你可能没有意识到这一点。 – 2012-08-15 20:38:32

+0

@EdS。我不确定是否是这种情况,因为数字前面是两个零而不是通常的零。 – TheZ 2012-08-15 20:40:21

回答

7
for(cntr = 0; cntr > 5; cntr++) 

应该是

for(cntr = 0; cntr < 5; cntr++) 

循环执行,而条件cntr > 5是真实的。如果cntr开始于0那么它显然不会大于5,所以循环的主体从不执行。

0

在您的for循环中,cntr = 0的第一个值,这意味着cntr < 5.但是在这种情况下,您正在检查cntr> 5,这是不正确的。所以,循环不启动。