2015-09-17 3 views
1
#include <stdio.h> 
#include <math.h> 
#include <stdlib.h> 

int main() 
{ 
    int a, result; 
    float b; 
    printf("**This is a simple arithmetic calculator.** \n"); 
    printf("\n Please enter an integer: "); 
    scanf("%i ", a); 
    printf("Please enter a floating point number: "); 
    scanf("%f", b); 

    result = a + b 

    printf("Output: "); 
    printf("%i + %f = %lf \n", a, b, result); 
    printf("%i - %f = %lf \n", a, b, result); 
    printf("%i * %f = %lf \n", a, b, result); 
} 

Мне нужно убедиться, что ваша программа не выйдет из строя, если пользователь вводит неверный ввод.Как отобразить сообщение или ответить на недопустимый ввод в C

+0

как вы предлагаете 'result' будет рассчитываться? автоматически? :) –

+0

Каково возвращаемое значение [scanf] (http://linux.die.net/man/3/scanf)? – LPs

+0

ваша программа имеет ошибки/ошибки/опечатки, один из них - scanf («% i», a); –

ответ

3

scanf - функция, которая также имеет возвращаемое значение, которое указывает, сколько входов было вставлено правильно. Таким образом, вы можете просто сделать что-то вроде:

while (scanf("%i ", a) != 1) 
{ 
    printf("wrong input, try again"); 
} 
+0

Хороший ответ. В качестве дополнительной заметки я бы добавил: заголовок вопроса явно запрашивает стандартный шаблон C, чтобы сообщать об ошибках. Поэтому вы должны печатать на stderr: 'fprintf (stderr,« неправильный ввод », повторите попытку \ n»); ' –

0

использования в то время как петли или если для зсапЕ

while(scanf("%i ", a) !=1){ 
    printf("invalid input.\n"); 
} 

и

while(scanf("%f", b) !=1){ 
    printf("invalid input.\n"); 
}