2015-11-09 3 views
-7

, вы вводите число, и программа найдет, если номер является простым или нет , поэтому, когда я вводим номер 7 в первый раз, он покажет вам, что «число простое» то я вхожу в 8, и он покажет вам, что «номер не является простым» после этого я повторно номер 7, и он покажет вам, что «номер не является простым» Я не знаю, где проблема , пожалуйста, помогите мне an example photo from here и мой код:программа, которая сообщает, если число является простым

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

int main (void){ 
int n; 
int t; 
int isPrime=0; 
char var; 

while(var!='q'){ 
    printf("q=quit p=prime :"); 
    fflush(stdin); 
    scanf("%c",&var); 
    if(var=='p'){ 
     printf("plz put the number value :"); 
     scanf(" %d",&n); 
     for(t=2;t<=n/2;t++){ 
      if (n%t==0){ 
       isPrime=1; 
       break; 
      } 
     } 
     if(isPrime==0){ 
      printf("%d is a prime number\n",n); 
     } 
     else{ 
      printf("%d is not a prime number\n",n); 
     } 
    } 
    else if(var=='q'){ 
     printf("thank you bye\n"); 
     break; 
    } 
    else{ 
     printf("a wrong letter\n"); 
    } 
} 
return 0; 
} 
+0

Что такое 'fflush (STDIN)' –

+0

Вы спрашивали об этом раньше. Я знаю, потому что вы использовали то же самое * очень плохое название ... Пожалуйста, прочитайте [Как я могу задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask) - и, всякий раз, когда вы получили минуту, прочитайте [тур]. – usr2564301

+0

@EdHeal: Это идиосинкразия Microsoft. –

ответ

2

Вы должны установить isPrime до 0 каждый раз, когда пользователь вводит число. В противном случае он по-прежнему сохраняет значение с предыдущего номера.

Перемещение объявление переменной

int isPrime = 0; 

внутри цикла while.

BTW, разве это переменное имя назад? Вы устанавливаете его на 1 (т. Е. true), когда вы обнаруживаете, что есть число, которое делит его одинаково. Но это когда число не prime.

0

Вы забыли сбросить isPrime обратно к нулю внутри цикла while.

Похоже, похоже, что вы делаете это как учебное упражнение. Это хорошо, нет лучшего способа узнать, чем попробовать.

Вот подсказка в C, любое ненулевое значение рассматривается как «истина», а ноль считается «ложным». Таким образом, вместо этого:

if (myFlag==1) { ... do something } 

Просто напишите это:

if (myFlag) { ... do something } 
Смежные вопросы