a_common_people 2020-10-20 23:18 采纳率: 0%
浏览 120

双精度数组的输入为什么会出现错误?

#include
int main()

{

int i = 0;
double data[9];
while (i < 9)

{
    scanf_s("%f", &data[i]);
    printf("%f\n", data[i]);
    i++;
}

}


今天输入双精度数组时,发现打印出来的不是输入的数,而是一串不知道是什么的数字,但当我把double换成int型又正确了,希望有大佬解答下问题。
![图片说明](https://img-ask.csdn.net/upload/202010/20/1603207058_266176.png)


输出的结果
  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-25 01:51
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在C语言中,scanf_s()函数用于读取标准输入,并使用%f格式化字符串来接收浮点数。由于scanf_s()是通过字符流进行读取的,因此它不能直接处理双精度浮点数。

    为了正确地将双精度浮点数转换为整数并打印出来,你需要修改你的程序如下:

    #include <stdio.h>
    #include <math.h>
    
    int main()
    {
        double data[9];
        int i;
    
        for(i = 0; i < 9; i++)
        {
            scanf_s("%lf", &data[i]);
            printf("%d\n", (int)data[i]); // 将double数据转换为int类型并打印
        }
    
        return 0;
    }
    

    在这个版本的程序中,我们创建了一个循环,遍历整个数组,每次迭代都将一个元素从输入中读取,并将其转换为整数。然后,我们将这个整数值打印到屏幕上。这样做的目的是确保每个元素都被正确地读取和处理,而不是尝试打印出不正确的结果。

    评论

报告相同问题?

悬赏问题

  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊