我正在尝试编写一个非常简单的程序,将几夸脱的水(用户输入)转换为C中的水分子.
#include <stdio.h>
#include <float.h>
int main(void)
{
float water_quarts;
float water_grams = (water_quarts*950.00);
float water_molecules = (water_grams/3e-23F);
printf("Enter an amount of water in quarts: \n");
scanf("%f", &water_quarts );
printf("%f quarts is %f grams of water.\n", water_quarts, water_grams );
printf("%f grams is %f molecules of water.\n", water_grams, water_molecules );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我编译并运行它时,它给了我:
Enter an amount of water in quarts:
15
15.000000 quarts is 0.000000 grams of water.
0.000000 grams is 0.000000 molecules of water.
Run Code Online (Sandbox Code Playgroud)
我不完全确定我做错了什么.我在lubuntu 14.10上使用gcc 4.9.1,通过VirtualBox运行.
您需要将值分配给water_grams和water_molecules你把输入后water_quarts从用户(也就是你以后scanf()).
#include <stdio.h>
#include <float.h>
int main(void)
{
float water_quarts;
printf("Enter an amount of water in quarts: \n");
scanf("%f", &water_quarts );
float water_grams = (water_quarts*950.00);
float water_molecules = (water_grams/3e-23F);
printf("%f quarts is %f grams of water.\n", water_quarts, water_grams );
printf("%f grams is %f molecules of water.\n", water_grams, water_molecules );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
或者
float water_quarts;
float water_grams ;
float water_molecules ;
printf("Enter an amount of water in quarts: \n");
scanf("%f", &water_quarts );
water_grams = (water_quarts*950.00);
water_molecules = (water_grams/3e-23F);
Run Code Online (Sandbox Code Playgroud)
否则,您要为它们分配未初始化的值,这就是您获得意外输出的原因.
当你声明一个变量时,它会有一些垃圾值(除非你为它赋值一些),并且由于这个原因,当你做
float water_grams = (water_quarts*950.00);
float water_molecules = (water_grams/3e-23F);
Run Code Online (Sandbox Code Playgroud)
water_quarts 有一些垃圾值,因此,你只是给其他变量分配一些垃圾.
| 归档时间: |
|
| 查看次数: |
59 次 |
| 最近记录: |