2015-12-15 2 views
-1

Хорошо, что я полностью застрял здесь, и я извиняюсь, если это неудобно для вас, ребята, но мне нужна ваша помощь.C Программирование - Среднее

В настоящее время я изучаю C самостоятельно и медленно добираюсь туда, начал вчера. Поэтому я подумал, что поставил бы себе задачу, когда пользователь вводит 3 номера, и программа должна будет найти среднее число между этими тремя.

Вот мой код:

#include <stdio.h> 

int main() { 

    int firstnum, secnum, thirnum, finalnum; 

    printf("Enter the first number \n"); 
    scanf("%f",&firstnum); 

    printf("Enter the second number \n"); 
    scanf("%s",&secnum); 

    printf("Enter the third number \n"); 
    scanf("%t",&thirnum); 

    finalnum = (firstnum +secnum+thirnum)/3; 
    printf("The average value is: " finalnum); 

return finalnum; 

} 
+0

' "% D"' является соответствующий описатель формата 'scanf' или' 'printf' в int'. –

+0

Используйте 'printf (« Среднее значение:% d », finalnum);', но будьте осторожны, что вы выполняете целочисленное деление (http://mathworld.wolfram.com/IntegerDivision.html). Рассмотрим поплавки. – harre

+0

Итак, я бы поместил float в «final num»? –

ответ

0

Чтение целых чисел или плавает: Правильный формат спецификатор

Для целых чисел вам необходимо %d и для двойников %lf. Узнайте больше об этом в другом месте.

E.g.

scanf("%d",&firstnum); 

печати целые или поплавки

Э.Г.

printf("The average value is: %d", finalnum); 

Избегайте целочисленное деление: литьем или все плавает

См http://mathworld.wolfram.com/IntegerDivision.html

Э.Г.

double finalnum = (firstnum +secnum+thirnum)/3.0; 

Или используйте поплавки для всех типов.

double firstnum, secnum, thirnum, finalnum; 

Возврат 0 для успеха в главном

return 0; 
0

Я нашел затруднительное связывающую с замечаниями, сделанными harre и Klas Lindbäck. Спасибо вам обоим.

Я изменил спецификаторы формата на% d, как было предложено. Затем я немного изменил мою строку printf.

Я тогда попытался сделать поплавок с моим int> finalnum, но это не сработало. Все это продолжало возвращать среднее значение как «0», поэтому я положил finalnum назад как int.Это как код выглядит сейчас:

#include <stdio.h> 

int main() { 

    int firstnum, secnum, thirnum; 
    int finalnum; 

    printf("Enter the first number \n"); 
    scanf("%d",&firstnum); 

    printf("Enter the second number \n"); 
    scanf("%d",&secnum); 

    printf("Enter the third number \n"); 
    scanf("%d",&thirnum); 

    finalnum = (firstnum + secnum + thirnum)/3; 
    printf("The average value is: %d", finalnum); 

return finalnum; 

} 

Спасибо всем :)

+0

Это еще не то, что вы хотите. Вы все еще делаете целое подразделение здесь. Чтобы сделать то, что вы хотите, попробуйте следующее: 1) Замените все 'int' на' float'. 2) Замените все '% d' на'% f'. 3) Замените '3' на' 3.0' (хотя эта часть не является строго необходимой, но технически корректной). Затем код будет вести себя так, как вы ожидаете. – Samidamaru

+0

Да, поплавок теперь работает по какой-то причине. Извлеченный урок - используйте float, если не выполняете целочисленное деление. Спасибо –

0

Использование плавать вместо междунар, чтобы получить десятичную точность иначе finalnum бы получить закругленную

использовать это для печати поплавок printf ("Среднее значение:% f", finalnum);

больше на Printf вы можете обратиться по этой ссылке http://www.tutorialspoint.com/c_standard_library/c_function_printf.htm

+0

Это не проблема с округлением, а результат целочисленного деления. – harre

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