C /操作不需要';Don’别给我结果
大家好,基本上我有一个C语言的计算器,但每当我尝试4/8,它就会给我0.000000。有什么帮助吗C /操作不需要';Don’别给我结果,c,C,大家好,基本上我有一个C语言的计算器,但每当我尝试4/8,它就会给我0.000000。有什么帮助吗 #include <stdio.h> int main() { char action; int number,number1; float resultat; do { printf ("Choisit votre opérateur logique\n"); scanf("%c", &action); } whil
#include <stdio.h>
int main()
{
char action;
int number,number1;
float resultat;
do
{
printf ("Choisit votre opérateur logique\n");
scanf("%c", &action);
} while (!((action == '/') ||(action == '-') ||(action == '+') ||(action == '*') ));
switch (action)
{
case '/':
scanf("%d %d", &b,&c );
resultat = number / number1;
printf("Votre opéation a donné comme un résultat : %f ", resultat);
break;
#包括
int main()
{
炭作用;
整数,数字1;
浮动结果;
做
{
printf(“Choisit votre opérater logique”);
scanf(“%c”、&action);
}而(!((action='/')|(action='-')|(action='+')|(action='*'));
开关(动作)
{
案例“/”:
scanf(“%d%d”、&b和&c);
结果=数字/数字1;
printf(“对结果的意见:%f”,结果);
打破
(代码未完成,因为重置工作正常,不需要任何帮助)感谢在“C”中,整数之间的除法(或进行任何其他数学运算)将执行整数运算。对于除法,它将截断结果。您可以通过将其中一个参数强制转换为浮点(或双精度)来强制计算为浮点)
如果没有强制转换,代码首先计算4/8,得到(整数)0,然后将其转换为浮点0
case '/':
scanf("%d %d", &b,&c );
d = ((float) b) / c;
printf("Votre opéation a donné comme un résultat : %f ", d);
break;
代码中的
b
和c
是整数,因此程序正在执行整数除法,这将给出整数结果
如果要执行浮点除法,则需要在执行除法时将值强制转换为浮点:
d = (float)b / (float)c;
整数除法给出整数结果-如果
b
和c
都是整数且b
,则b/c
将产生0
将所有b
、c
和d
声明为double
,并使用%lf
读取b
和c
:
double b, c, d;
...
scanf("%lf %lf", &b,&c );
d = b / c;
4/8
是整数算术世界中的0
。既然您正在与其他人共享此代码,您应该对其进行编辑,以便不太熟悉的人更容易阅读(这包括您自己,因为您肯定会忘记今天上午的想法)例如,a
应该是operation\u symbol
,b
和c
可以是operan1
和operan2
,d
可以是结果
,等等。如果您正在编写计算器,请使用double
。事实上,当您需要浮点变量时,请使用double
,除非有很好的理由不这样做。捕捉得好。printf
和scanf
之间的不对称有时会让人恼火。