|
发表于 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;
} |
|