为什么不留在循环中,在c中做

时间:2014-11-02 23:46:20

标签: c loops do-while

这是我的代码

int main()
{
  char komut,komut2;
  do{
    scanf("%c",&komut);
    switch(komut){
    case 's':
    case 'S':
      kare();
    case 'r':
    case 'R':
      dikdortgen();
    case 't':
    case 'T':
      scanf("%c",&komut2);
      if(komut2=='u' || komut2=='U')
        ust_ucgen();
      if(komut2=='d' || komut2=='D')
        alt_ucgen();
    }
  }while(komut==!'e'||komut==!'E');

  return 0;
} 

问题是程序只运行1输入ı希望它运行直到ı给e或E输入怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

这应该适合你:

首先,您的case语句必须以break;结束!

然后您还必须将==!更改为!=,并且在do...while循环中,您必须将条件从||更改为&&

#include <stdio.h>

int main() { 

    char komut, komut2;

    do{ 
        scanf(" %c", &komut); 

        switch(komut){ 
            case 's': 
            case 'S': 
                kare();
                 break;
            case 'r': 
            case 'R': 
                dikdortgen();
                break; 
            case 't': 
            case 'T': 
                scanf(" %c", &komut2); 

                if(komut2 == 'u' || komut2 == 'U') 
                    ust_ucgen(); 
                if(komut2 == 'd' || komut2 == 'D') 
                    alt_ucgen();
                break; 
        } 
    } while (komut != 'e' && komut != 'E'); 

    return 0;

}  

答案 1 :(得分:0)

while(komut==!'e'||komut==!'E');是不正确的部分。您应该使用!=来表示不平等。

使用==!使其成为komut == (!'e'),这意味着komut is equal to not 'e',即komut == 0