| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 918 人关注过本帖
标题:初学者学习时的一点困惑
只看楼主 加入收藏
zxcaaaaavvv
Rank: 1
等 级:新手上路
帖 子:20
专家分:7
注 册:2013-7-14
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
初学者学习时的一点困惑
程序代码:
#include <stdio.h>
float aa(float a)
{
    float b;
    b=a*3.14*2;
    return b;
}
float main()
{
    float e,f;
    scanf("%d",&e);
    f=aa(e);
    printf ("%d",f);
}
这个根据半径求圆周长的程序运行后输入什么都会输出0
但是把a、e声明为int型后程序就运行正常了,请问这是为什么呢?
2013-07-25 08:54
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:4 
以下是引用zxcaaaaavvv在2013-7-25 08:54:51的发言:

#include <stdio.h>
float aa(float a)
{
    float b;
    b=a*3.14*2;
    return b;
}
float main()
{
    float e,f;
    scanf("%d",&e);
    f=aa(e);
    printf ("%d",f);
}这个根据半径求圆周长的程序运行后输入什么都会输出0
但是把a、e声明为int型后程序就运行正常了,请问这是为什么呢?

把scanf语句里面的%d改为%f,把printf语句的%d也改为%f

思考赐予新生,时间在于定义
2013-07-25 09:09
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:3 
scanf("%d",&e);
谁教的,拖出去砍死

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-07-25 09:10
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:3 
以下是引用zxcaaaaavvv在2013-7-25 08:54:51的发言:

#include <stdio.h>
float aa(float a)
{
    float b;
    b=a*3.14*2;
    return b;
}
float main()
{
    float e,f;
    scanf("%d",&e);
    f=aa(e);
    printf ("%d",f);
}这个根据半径求圆周长的程序运行后输入什么都会输出0
但是把a、e声明为int型后程序就运行正常了,请问这是为什么呢?

把scanf语句里面的%d改为%f,或者把e声明为int,把printf语句的%d也改为%f

[ 本帖最后由 love云彩 于 2013-7-25 09:12 编辑 ]

思考赐予新生,时间在于定义
2013-07-25 09:11
pangshch
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:2
帖 子:443
专家分:1966
注 册:2013-4-9
收藏
得分:5 
你的代码中,所有的变量都声明为 float 型,也就是带小数点的.
而你的输入语句: scanf("%d",&e);和输出语句:printf ("%d",f);
中的数据格式是  "%d",  是整数格式,
编译器在格式转换过程中产生错误,导致结果不对,
你把  "%d" 改为" %f",或者把 声明float,改为int
声明和输入输出的格式要一致.

2013-07-25 09:21
liuleix157
Rank: 1
等 级:新手上路
帖 子:34
专家分:4
注 册:2013-7-16
收藏
得分:2 
程序代码:
#include <stdio.h>
float aa(float a)
{
    float b;
    b=a*3.14*2;
    return b;
}
int main()
{
    float e,f;
    scanf("%f",&e);
    f=aa(e);
    printf("%g",f);
}
2013-07-25 11:06
yjx543543
Rank: 1
等 级:新手上路
帖 子:7
专家分:3
注 册:2013-7-23
收藏
得分:3 
float是单精度浮点型
所以
scanf("%f",&e);
printf("%f",f);
2013-07-25 11:21
丶弱水彡千
Rank: 5Rank: 5
来 自:地狱十九层
等 级:职业侠客
威 望:2
帖 子:203
专家分:369
注 册:2013-6-16
收藏
得分:0 
这谁教的。。。。

这个怎么玩
2013-07-25 12:04
Mirob
Rank: 4
来 自:农村
等 级:业余侠客
帖 子:191
专家分:264
注 册:2012-7-20
收藏
得分:0 
楼主要注意细节啊
2013-07-25 12:49
qjw2719
Rank: 2
等 级:论坛游民
帖 子:21
专家分:33
注 册:2012-3-15
收藏
得分:0 
2013-07-25 13:14
快速回复:初学者学习时的一点困惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026450 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved