鱼C论坛

 找回密码
 立即注册
查看: 2217|回复: 4

[已解决]关于scanf 使用上的问题

[复制链接]
发表于 2023-11-4 00:26:00 | 显示全部楼层
问题出在 scanf 函数的格式字符串中的 "\n"。scanf 函数的格式字符串用于指定输入的格式,其中的空格、制表符和换行符都会被用来跳过输入中的空白字符。所以当你输入数据后按下回车键时,scanf 函数会读取并丢弃掉这个换行符,然后继续等待下一个非空白字符的输入。

在你的代码中,当 scanf 函数的格式字符串为 "%lf %lf\n" 时,它会先读取两个 double 类型的值,然后跳过一个换行符。所以当你输入完两个数后按下回车键,scanf 函数会读取并丢弃掉这个换行符,然后继续等待下一个非空白字符的输入。因此,你需要再输入一个数字并按下回车键,才能让程序继续执行并输出结果。

解决这个问题的方法是将 scanf 函数的格式字符串改为 "%lf %lf",即去掉末尾的换行符。这样,scanf 函数会读取两个 double 类型的值,并且不会跳过任何换行符。这样你就可以直接输入两个数并按下回车键,程序就会继续执行并输出结果了。

修改后的代码如下:

#include<stdio.h>
#include<math.h>
int main()
{
    double r,h;
    double pi = 3.14; //圆周率取3.14  
    printf("请输入半径和高 :\n");
    scanf("%lf %lf",&r,&h);
    printf("圆周长=%.2f\n",2.00*pi*r);
    printf("圆面积=%.2f\n",pi*r*r);
    printf("圆球表面积=%.2f\n",4.00*pi*r*r);
    printf("圆球体积=%.2f\n",4.00/3.00*pi*r*r*r);
    printf("V圆柱体积=%.2f\n",pi*r*r*h);
    return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-9-21 02:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表