2010-08-13 3 views
0

Это дополнительная программа сверления с ошибкой, которую я не могу исправить. Я не могу вводить символы Y/N в программе, пожалуйста, помогите мне меня исправить.Ошибка в программе сверления добавок

#include <conio.h> 
#include <stdio.h> 

main() 
{ 
int answer, count; 
int ch; 
ch = getche(); 

for(count=1; count<11; count++) { 
    printf("What is %d + %d? ", count, count); 
    scanf("%d", &answer); 
    if(answer == count + count) printf("Right!\n"); 
    else{ 
    printf("Sorry, you're wrong\n"); 
    printf("Would you like to try again? Y/N: \n"); 
    scanf("%c", &ch); 

    if(ch=='Y') { 
    printf("\nWhat is %d + %d? ", count, count); 
    scanf("%d", &answer); 
    if(answer == count+count) printf("Right!\n"); 
    else 
    printf("Wrong, the answer is %d\n", count+count); 
    } 

    else 
    printf("The answer is %d\n", count+count); 
    } 
    } 
    return 0; 
} 
+3

Что произойдет, если вы введете «Y»? Анна"? Другой не-numeic характер? И что вы ожидаете? –

+3

Это рушится? Или висит? Что именно он делает (или не делает)? Вы пытались добавить printf() после каждого scanf(), чтобы убедиться, что он правильно читает, что вы вводите? – Jason

+0

Не принимает вход Y/N, если результат неверен. есть ли кто-нибудь, кто может мне помочь? Я не могу это исправить. – Sharifhs

ответ

-1
else{ <<<< I think this might be the issue... Everything is within this else ... maybe try to minimize nesting? 
    printf("Sorry, you're wrong\n"); 
    printf("Would you like to try again? Y/N: \n"); 
    scanf("%c", &ch); 

    if(ch=='Y') { 
    printf("\nWhat is %d + %d? ", count, count); 
    scanf("%d", &answer); 
    if(answer == count+count) printf("Right!\n"); 
    else 
    printf("Wrong, the answer is %d\n", count+count); 
    } 

    else 
    printf("The answer is %d\n", count+count); 
    } <<<<< I think this might be the issue... 
1
scanf("%c", &ch); /* ch should be a char not an int ! */ 

Другая проблема должна быть Scanf ("% С"): есть буферная-проблема, вы должны очистить буфер ввода после этого.

+0

Если я использую char как тип данных, то я получаю сообщение об ошибке, поэтому я использовал int в sted из char – Sharifhs

+0

, который вы используете ch для getche() И для scanf («% c» ...), возьмите по одному var для каждой функции ; "scanf ("% c ", & charactervariable)" не может потерпеть крах; conio.h не являются стандартами C. – user411313

Смежные вопросы