fabulist丶 发表于 2021-8-9 15:40:19

S1E8课后作业

我不知道为什么我的答案跟小甲鱼的不一样我输入45出来的是-17.78,我感觉除了变量命名不一样,其他好像都一样啊= =
这是小甲鱼的:
#include <stdio.h>

int main()
{
      float fah, cel;

      printf("请输入华氏度:");
      scanf("%f", &fah);

      cel = (fah - 32) * 5 / 9;
      printf("转换为摄氏度是:%.2f\n", cel);

      return 0;
}
这是我的:
#include <stdio.h>

int main()
{
          double f;
          double c;
          
          printf("请输入华氏度 : ");
          scanf("%.2f", &f);
          
          c = (f - 32) * 5 / 9;
          printf("转换为摄氏度是 : %.2f\n", c);
          
          return 0;
}
还有就是为什么这个程序不需要#include <math.h>这个指令- -

大马强 发表于 2021-8-9 15:44:45

scanf("%.2lf", &f);

大马强 发表于 2021-8-9 15:45:16

double型的要用 %lf 输入

shriek 发表于 2021-8-9 16:00:57

他们都答完了我来水一波。
不用math是因为你里面没有数学方法(比如pow())

fabulist丶 发表于 2021-8-9 18:07:53

大马强 发表于 2021-8-9 15:44


但是我改了之后答案还是错的啊...

fabulist丶 发表于 2021-8-9 18:10:01

大马强 发表于 2021-8-9 15:44


就是不管填多少,出来都是17.78

fabulist丶 发表于 2021-8-9 18:10:55

fabulist丶 发表于 2021-8-9 18:10
就是不管填多少,出来都是17.78

-17.78

大马强 发表于 2021-8-9 18:21:26

fabulist丶 发表于 2021-8-9 18:10
-17.78

好像不能用
scanf("%.2lf", &f);
原因未知,就算是输入 45.00也是,f没有被赋值
这样就可以了
scanf("%lf", &f);

大马强 发表于 2021-8-9 18:25:09

另外在使用 scanf 时还必须注意以下几点:
1. scanf 函数中没有精度控制,如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数部分为2位的实数。
2. 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格, TAB或回车作间隔。 C 编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时, A 即为非法数据)时即认为该数据结束。
3. 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符
转自https://blog.csdn.net/z13717741865/article/details/78912006?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162850453616780357223621%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162850453616780357223621&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-2-78912006.first_rank_v2_pc_rank_v29&utm_term=c%E8%AF%AD%E8%A8%80%E6%A0%BC%E5%BC%8F%E5%8C%96%E8%BE%93%E5%85%A5%E4%B8%8D%E8%83%BD%E6%9C%89%E7%B2%BE%E5%BA%A6&spm=1018.2226.3001.4187
页: [1]
查看完整版本: S1E8课后作业