2016-11-15 2 views
-3

EDIT: Проблема решена, я постараюсь сделать ее как можно более ясной.C Программа автоматически завершается

Когда я делал программу для вычисления площади круга, я назначил «3.1415926535» постоянному плавучести Pi. Когда я использовал его в своей программе как радиус области Circle = Pi * radius *, где радиус был целым числом, а areaCircle - плавающим, программа напечатала что-то вроде «7.000000». Я ожидал, что он возвращает десятичное, такие как «7.123456» или что-то

EDIT: Это код, если вы, ребята, это нужно:

int radius 
float circumference,areaCircle; 
const int PI = 3.14159265358979323846264338327; 
printf("Enter the radius of the circle: \n"); 
scanf("%d",&radius); 
circumference = PI*2*radius; 
areaCircle = PI*radius*radius; 
printf("The circumference of a circle with radius %d is %f and its area is %f\n",radius,circumference,areaCircle); 
+0

ОК, так в чем проблема? Что за вопрос? –

+0

Слишком плохо. Если вы хотите, чтобы мы показали вам, почему это произошло, вам необходимо предоставить код, который вы скомпилировали и выполнили. – nvoigt

+3

Добро пожаловать в переполнение стека! Вы хотите создать [___MCVE___] (http://stackoverflow.com/help/mcve)? –

ответ

0

В коде вы публикуемую вы объявили PI как int. Попробуйте:

const float PI = 3.14159265358979323846264338327; 
+1

Наверное, предпочитаю 'double' для' float' вообще (я знаю, что Daniel использовал 'float' в своем вопросе, так что это также применимо), потому что они дают больше точности, в значительной степени столь же дешевы по времени для большинства современных единиц с плавающей точкой, и, хотя они занимают больше места, для большинства приложений пространство не является проблемой. – Muzer

+0

@Muzer: Большинство реализаций с плавающей запятой даже на современных процессорах не поддерживают двойную точность или должны использовать (возможно, частичную) эмуляцию программного обеспечения для нее. Это связано с тем, что большинство процессоров во встроенных системах и в лучшем случае имеют FPU с одной точностью **. – Olaf

+0

ОК, взятый пункт, не считал, что это может быть вопросом для встроенных устройств. – Muzer

0

Это будет очень хорошо, если вы сделаете свой вопрос более четко.

Хотя у меня есть несколько предложений ...

  • Ваша программа показывает areaCircle Value as floating data, потому что, areaCircle является поплавок. И он также вычисляет число с плавающей точкой.

  • Logically -Radius can't be Integer тип.

  • Вы можете установить all data types as float/double.

  • И также может использовать этот оператор в качестве контрольных цифр после десятичной точки %.2f или %.0f или любого значения, которое вам нужно.

+0

Переменная * only * в коде, которая является «неправильным» типом, это 'PI'. Все остальное работает, помимо возможного арифметического переполнения при вычислении области и периметра (что может случиться с любым типом переменной). –

+0

вы можете использовать cos (-1) вместо pi :) – Ashraful

+0

Я думаю, вы имеете в виду 'acos (-1)'. –

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