关于scanf 使用上的问题
请问,为什么在scanf里面有\n,运行了输入数据后,换行了也没有输出我的值,需要打一个数字在换行才输出值?把scanf里面的\n删掉就没有这个问题了,但这是为什么呢?)
代码如下:
#include<stdio.h>
#include<math.h>
int main()
{
double r,h;
double pi = 3.14; //圆周率取3.14
printf("请输入半径和高 :\n");
scanf("%lf %lf\n",&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;
} 在 scanf 的格式字符串中,使用空格或换行符来分隔输入的数据。它们都会被视为分隔符,并告诉 scanf 继续读取下一个输入项。
当您将换行符 \n 放在 scanf 格式字符串中时,它会读取并忽略任何连续的空白字符,包括空格、制表符和换行符,直到找到下一个非空白字符。所以在输入数据时,您需要输入一个非空白字符(如数字),以便 scanf 能够继续读取输入并将其分配给变量。
如果您删除 scanf 格式字符串中的换行符 \n,则 scanf 将不会跳过任何空白字符,而是直接读取输入并将其分配给变量。这可能会更容易理解和使用,因为您可以直接输入数据并按 Enter 键结束输入,而不需要再次输入数字以便 scanf 能够继续读取输入。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:} 问题出在 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;
} Mike_python小 发表于 2023-11-4 00:25
在 scanf 的格式字符串中,使用空格或换行符来分隔输入的数据。它们都会被视为分隔符,并告诉 scanf 继续读 ...
明白了,感谢大佬 isdkz 发表于 2023-11-4 00:26
问题出在 scanf 函数的格式字符串中的 "\n"。scanf 函数的格式字符串用于指定输入的格式,其中的空格、制表 ...
懂了懂了谢谢大佬!
页:
[1]