Не в состоянии рассчитать в C. Как вы рассчитываете в C? - PullRequest
0 голосов
/ 04 июня 2018

Я новичок в C, и я действительно не знаю, что я делаю неправильно.

Проблема, с которой я столкнулся, заключается в том, что я должен задать 3 вопроса пользователю, использующему scanf.Я должен спросить пользователя целое число, положительное действительное число и неотрицательное число, а затем вычислить числа в XX.XX, используя %.2f.

                    //pre-processor directives


 #include <stdio.h>
 #include <math.h>



                    //main function
int main()

{
 //declare variables
int smp1,smp2, smp3,total;


printf("sample 1?\n");  // positive integer
scanf("%d", &smp1);


printf("sample 2?\n");  //positive real number
scanf("%f",&smp2);


printf("sample 3?\n");  // non negative number
scanf("%u", &smp3);


total = (smp1 + smp2 / smp3);              
printf("The final result is %.2f",total);

                        //end of main
    return 0;
 }

Независимо от того, что я положил втам мой результат заканчивается 0.00.Это даже не будет простым сложением, и я не знаю достаточно, чтобы понять почему.

1 Ответ

0 голосов
/ 04 июня 2018

Ваша основная проблема заключается в том, что вы объявляете все свои переменные как int s, но smp2 и total должны содержать значения с плавающей запятой.

Измените ваши объявления на

int smp1;
double smp2, total;
unsigned int smp3;

Таким образом, типы переменных совпадают со спецификаторами преобразования, используемыми в вызовах printf и scanf.

Типы имеют значение в C, и вам решать, совпадают ли типы аргументов в каждом вызове printf и scanf со спецификаторами преобразования.

Проверьте документацию компилятора о том, как включить предупреждения (еще лучше, чтобы все предупреждения рассматривались как ошибки).Большинство компиляторов должны предупреждать о несоответствиях типов, как это, но иногда вам нужно установить флаг, чтобы эти предупреждения появлялись.

...