Если нет причин, по которым вы хотите использовать% .2f для сканирования, сработает только использование% f
#include
#include
#define PI 3.14
int main() {
float r,a,c;
printf("enter radius: \n");
scanf("%f",&r);
c = r * PI * 2;
a = r * r * PI;
printf("area:%.2f circumference:%.2f \n",c,a );
return 0;
}
Пример:
daniel@daniel-FX503VM:~/Documents/test$ ./zero
enter radius:
1
area:6.28 circumference:3.14
.2 в printf спецификатор формата печати, и он не должен влиять на scanf
Когда вы помещаете .2 в scanf, на самом деле это поле ширины, которое указывает максимальное количество символов, которые нужно прочитать в текущая операция чтения (опционально). Однако в этом контексте .2 символа в качестве ширины не имеют смысла, поскольку ширина должна быть целым числом.
Если на самом деле вы пытаетесь прочитать только 2 символа, вы можете сказать
scanf("%2f", &r);
Но имейте в виду, что «.» также будет считаться как символ. Если вы просто хотите, чтобы выходные данные были двумя десятичными знаками, то предложенного выше кода должно быть достаточно. Если вы хотите округлить его внутри, я бы посоветовал вам прочитать этот пост
Попробуйте это:
i = 5
ii = 10
if i == 5 and ii == 10:
print "i is 5 and ii is 10"
Редактирование : О, и Вам не нужна та точка с запятой на последней строке (редактирование для удаления его из моего кода).
Как указано, "&"; в Python выполняет поразрядное и операцию, как это делает в C#. and
соответствующий эквивалент &&
оператор.
, Так как мы имеем дело с булевскими переменными (i == 5
True
и ii == 10
, также True
), можно задаться вопросом, почему это или не работало так или иначе (Верный рассматриваемый, поскольку целочисленное количество должно все еще означать Истинный & Верный Истинное значение), или выдайте исключение (например, путем запрещения битовых операций на булевых типах)
, причиной является приоритет оператора." and
" оператор связывает более свободно, чем ==
, таким образом, выражение: "i==5 and ii==10
" эквивалентно: "(i==5) and (ii==10)
"
Однако поразрядно &
имеет более высокий приоритет, чем" ==
" (так как Вы не хотели бы, чтобы выражения как" a & 0xff == ch
" означали" a & (0xff == ch)
"), таким образом, выражение будет на самом деле интерпретироваться как:
if i == (5 & ii) == 10:
, Который использует объединение в цепочку оператора Python для значения: делает значение ii, внесенного с 5 равными и я и 10. Очевидно, это никогда не будет верно.
Вы на самом деле получили бы (по-видимому) правильный ответ при включении скобок для принуждения приоритета, таким образом:
if (i==5) & (ii=10)
заставил бы оператор быть распечатанным. Это - неправильный поступок, однако -" &
" имеет многих другая семантика к" and
" - (приоритет, короткий-cirtuiting, поведение с целочисленными аргументами и т.д.), таким образом, удачно, что Вы поймали это здесь вместо того, чтобы дурачиться, пока это не произвело менее очевидные ошибки.
Корректный оператор, который будет использоваться, является ключевыми словами 'или' и 'и', которым в Вашем примере, корректный способ выразить это было бы:
if i == 5 and ii == 10:
print "i is 5 and ii is 10"
можно отослать детали в раздел "Boolean Operations" в ссылке языка .
Можно также протестировать их как пару.
if (i,ii)==(5,10):
print "i is 5 and ii is 10"
&
используется для поразрядного сравнения. используйте and
вместо этого. и btw, Вам не нужна точка с запятой в конце оператора печати.
В Python используйте and
вместо &&
как это:
#!/usr/bin/python
foo = True;
bar = True;
if foo and bar:
print "both are true";
Это печатает:
both are true