2016-01-06 3 views
0

Как использовать символ q для выхода? Как использовать q как выход из этого кода. Он перемещается до тех пор, пока не получит значения ASCII q. `Как использовать символ для выхода из цикла на языке c?

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

int main() 
{ 
    int pos=0,neg=0,zero=0,i=0,num; 
    printf("Input numbers."); 
    scanf("%d",&num); 
    for(i=0;num!="q";i++) 
    { 

     if(num>0) 
     { 
      pos++; 
     } 
     if(num<0) 
     { 
      neg++; 
     } 
     if(num==0) 
     { 
      zero++; 
     } 
    } 
    printf("You entered \n\tpositive number::: %d times\nNegative number:::%d times\nZero:::%d times",pos,neg,zero); 


} 

`

+0

Вы имеете в виду, вы хотите, чтобы программа 'Е (" Вы ввели \ N \ tpositive число :::% г ....) ', а затем бросить курить, после того, как пользователь ввел„Q“в терминале ? Если в этом случае вы должны запросить ввод внутри цикла, я уверен, что вы можете это увидеть. – aurelienC

ответ

0

Вы должны переместить Scanf линию внутри цикла.

for(i=0;num!="q";i++) 
{ 
    scanf("%d",&num); 
    ... 
0
scanf("%d",&num);  /*  <-- for initializing num before using */ 
for(i=0;num!='q';i++) /*  <-- compare with 'q' and not with "q" */ 
{ 
    scanf("%d",&num); /*  <-- take input       */ 
    //your code 
} 

Comapare с 'q' (характером), а не с строковым литералом "q" который comparises из 'q' и '\0' (принимают к сведению одинарных кавычек).

А также вы должны принять вход внутри цикла или другое значениеnumне изменяется в цикле.

0

Попробуйте изменить время и место scanf внутри цикла.

scanf("%d",&num); 
while(num!="q") 
{ 
    if(num>0) 
    { 
     pos++; 
    } 
    if(num<0) 
    { 
     neg++; 
    } 
    if(num==0) 
    { 
     zero++; 
    } 
    scanf("%d",&num); 
} 
0

Сначала вы должны на самом деле цикл:

while(1) { // infinite loop 
... 
} 

... отсканировать для целых внутри цикла:

while(1) { // infinite loop 
scanf("%d",&num) 
... 
}; 

... то помните, что, ой, пользователь может введите «q», то есть не a число

while(1) { // infinite loop 
char input[100]; 
scanf("%s", input); 
if(strcmp(input, "q") == 0) { 
    break; 
} 
else { 
    sscanf(input, "%d", &num); 
} 
... 
} 

... затем добавить тесты

while(1) { // infinite loop 
    char input[100]; 
    scanf("%s", input); 
    if(strcmp(input, "q") == 0) { 
     break; 
    } 
    else { 
     sscanf(input, "%d", &num); 
    } 

    if(num>0) { 
     pos++; 
    } 
    if(num<0) { 
     neg++; 
    } 
    if(num==0) { 
     zero++; 
    } 
    } 
0

Я хотел бы сделать это таким образом:

int fldCnt = scanf("%d", &num); 
while (fldCnt == 1) 
{ 
    // your code 
    fldCnt = scanf("%d", &num); 
} 

При вводе "Q", нулевые поля преобразуются в %d.

0
#include <stdio.h> 

int main(void){ 
    int pos=0, neg=0, zero=0; 
    int i, ch, num; 

    printf("Input numbers.\n"); 
    do { 
     while(1 == scanf("%d", &num)){//input into inside loop 
      if(num > 0) 
       pos++; 
      else if(num < 0) 
       neg++; 
      else //if(num==0) 
       zero++; 
     } 
     ch = getchar();//q not allow `scanf("%d", &num)` 
    } while(ch != 'q' && ch != EOF); 
    printf("You entered \n\tpositive number:::%d times\n\tNegative number:::%d times\n\tZero:::%d times\n",pos,neg,zero); 
} 
Смежные вопросы