小程序、、输出不对劲、、

baiye1134 2010-06-19 10:03:42
#include<stdio.h>
double vol(double r,double h)
{
double v;
double pi=3.1415926;
v=pi*r*r*h;
return v;
}
int main()
{
double r,h,v;
printf("请输入半径和高:");
scanf("%d%d",&r,&h);
v=vol(r,h);
printf("v=%d",v);
return 0;
}

我左看右看,还是觉得我编的应该没有问题啊。。为什么又是输出负数呢。。想不通、、、
...全文
232 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
baiye1134 2010-06-24
  • 打赏
  • 举报
回复
忘了结贴了。。晕、、
jadyzdr 2010-06-22
  • 打赏
  • 举报
回复
%d不对,应该是lf
_Minzey 2010-06-21
  • 打赏
  • 举报
回复
double 和 float 输出的时候都是 %f,但是输入时double 应该是 %lf,float是%f.
sxiaohui8709253 2010-06-21
  • 打赏
  • 举报
回复
xuei
jianuMan 2010-06-21
  • 打赏
  • 举报
回复
数没有读入到 变量中

#include "stdafx.h"


#include<stdio.h>
double vol(double r,double h)
{
double v;
double pi=3.1415926;
v=pi*r*r*h;
return v;
}
int main()
{
double r,h,v;
printf("请输入半径和高:");
scanf("%lf%lf",&r,&h);
v=vol(r,h);
printf("v=%lf",v);
return 0;
}

crossfire_sli 2010-06-21
  • 打赏
  • 举报
回复
lf 或者 le乃正解
legendtao 2010-06-21
  • 打赏
  • 举报
回复
类型不匹配,应该是数据截断
forster 2010-06-21
  • 打赏
  • 举报
回复
printf("v=%d",v);
赵4老师 2010-06-21
  • 打赏
  • 举报
回复
printf Type Field Characters
The type character is the only required format field ; it appears after any optional format fields. The type character determines whether the associated argument is interpreted as a character, string, or number. The types C and S, and the behavior of c and s with printf functions, are Microsoft extensions and are not ANSI-compatible.
Table R.3 printf Type Field Characters
Character|Type |Output Format
c |int or wint_t |When used with printf functions, specifies a single-byte character; when used with wprintf functions, specifies a wide character.
C |int or wint_t |When used with printf functions, specifies a wide character; when used with wprintf functions, specifies a single-byte character.
d |int |Signed decimal integer.
i |int |Signed decimal integer.
o |int |Unsigned octal integer.
u |int |Unsigned decimal integer.
x |int |Unsigned hexadecimal integer, using "abcdef."
X |int |Unsigned hexadecimal integer, using "ABCDEF."
e |double |Signed value having the form [ - ]d.dddd e [sign]ddd where d is a single decimal digit, dddd is one or more decimal digits, ddd is exactly three decimal digits, and sign is + or -.
E |double |Identical to the e format except that E rather than e introduces the exponent.
f |double |Signed value having the form [ - ]dddd.dddd, where dddd is one or more decimal digits. The number of digits before the decimal point depends on the magnitude of the number, and the number of digits after the decimal point depends on the requested precision.
g |double |Signed value printed in f or e format, whichever is more compact for the given value and precision. The e format is used only when the exponent of the value is less than -4 or greater than or equal to the precision argument. Trailing zeros are truncated, and the decimal point appears only if one or more digits follow it.
G |double |Identical to the g format, except that E, rather than e, introduces the exponent (where appropriate).
n |Pointer to integer |Number of characters successfully written so far to the stream or buffer; this value is stored in the integer whose address is given as the argument.
p |Pointer to void |Prints the address pointed to by the argument in the form xxxx:yyyy where xxxx is the segment and yyyy is the offset, and the digits x and y are uppercase hexadecimal digits.
s |String |When used with printf functions, specifies a single-byte-character string; when used with wprintf functions, specifies a wide-character string. Characters are printed up to the first null character or until the precision value is reached.
S |String |When used with printf functions, specifies a wide-character string; when used with wprintf functions, specifies a single-byte-character string. Characters are printed up to the first null character or until the precision value is reached.


Cniao_zhi 2010-06-21
  • 打赏
  • 举报
回复
没的说了 只能接分了
GGS_521 2010-06-21
  • 打赏
  • 举报
回复
格式转换中很有可能出现错误,还是C++的用法安全。
ForestDB 2010-06-21
  • 打赏
  • 举报
回复
用%lf。
mikithebest 2010-06-21
  • 打赏
  • 举报
回复
整型和双精度浮点型当然不匹配啦
yidasoft 2010-06-20
  • 打赏
  • 举报
回复
格式问题,学习
zyl1988 2010-06-20
  • 打赏
  • 举报
回复
输入,输出应用%lf。。。。
向立天 2010-06-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 baiye1134 的回复:]
悲剧了、、、

原来是这样、、

想问一下。那个lf 和f有什么区别。我用f的时候好像也会出错呢、、
[/Quote]
lf就是long float
canshui 2010-06-19
  • 打赏
  • 举报
回复
lf%格式对应double型,8字节……

f%格式对应float型,一般4字节……
mashangdenglu1 2010-06-19
  • 打赏
  • 举报
回复
#include<stdio.h>
#define PI 3.1415926
float vol(float r,float h)
{
float v;
v=PI*r*r*h;
return v;
}
float main()
{
float r,h,v;
printf("请输入半径和高:");
scanf("%f%f",&r,&h);
v=vol(r,h);
printf("v=%.2f\n",v);
return 0;
}

qvbnlaw 2010-06-19
  • 打赏
  • 举报
回复
lf 是长浮点。。。。。f就是浮点。。。他们的范围是不同的,lf大!!
xjoooo 2010-06-19
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zjf30366 的回复:]

C/C++ code

#include<stdio.h>
double vol(double r,double h)
{
double v;
double pi=3.1415926;
v=pi*r*r*h;
return v;
}
int main()
{
double r,h,v;
printf("请输入半径和高:");
scanf("%lf%lf",&……
[/Quote]


%Lf 和 %lf 有区别??我用%Lf时 gcc 编译有警告,vc没有~~~
加载更多回复(10)

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧