| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 829 人关注过本帖
标题:给定一浮点数和整数n, 编写一函数把浮点数进行四舍五入以保留n位小数
收藏  订阅  推荐  打印
独行者123
Rank: 1
等级:新手上路
帖子:17
积分:354
注册:2008-5-1
给定一浮点数和整数n, 编写一函数把浮点数进行四舍五入以保留n位小数

不知道该如何入手啊,希望大家帮忙解答一下,拜托了
搜索更多相关主题的帖子: 小数  四舍五入  整数  点数  给定  
2008-5-13 21:23
hellbelial
Rank: 1
等级:新手上路
帖子:33
积分:494
注册:2008-4-29

不用写函数了。
程序代码:
#include <stdio.h>
int main()
{
    float f=1;
    int i=10;
    printf("%.5f\n",f);
    printf("%.2f\n",(float)i);
    return 0;
}
附件: 只有本站会员才能下载或查看附件,请您 登录注册
2008-5-13 21:33
独行者123
Rank: 1
等级:新手上路
帖子:17
积分:354
注册:2008-5-1
回复 2# 的帖子

不是啦,浮点数和n都是任意给的,而且已经要求要用函数了啊,不过还是谢了哦
2008-5-13 21:38
hellbelial
Rank: 1
等级:新手上路
帖子:33
积分:494
注册:2008-4-29

代码:
程序代码:
#include <stdio.h>
#include <math.h>

float Format(float f, int n)
{
    int i = (int)f;
    int p = pow(10.0f, n);
    float ft = (f - i) * p;
    if((ft-(int)ft)>0.4)ft += 1;
    return i+((int)ft)/(float)p;
}

int main()
{
    float f = 0;
    while(scanf("%f", &f) != EOF)
        printf("%f\n", Format(f,4));
    return 0;
}
2008-5-13 23:29
qinxinhai
Rank: 3Rank: 3
来自:湖南长沙
等级:中级会员
帖子:237
积分:2562
注册:2008-4-27


看不懂!

我秀我自己
2008-5-13 23:50
广陵绝唱
Rank: 4
等级:高级会员
威望:1
帖子:822
积分:9688
注册:2008-2-15


程序代码:
/******************************************************************

        为了使可以转换的数字位数更多,所以使用字符数组来作。
    如有不足之处,欢迎批评。谢谢。

******************************************************************/
#include<stdio.h>
#include<string.h>
#define X {char c;while(c=getchar()!='\n');}
#define N 1000
int ch(char a[],int n)
{
        char *p;
        int i,b;
        b=strlen(a);  /* 测出字符串长度 */
        for(i=0;i<b;++i)
                if(a[i]=='.')
                        break;  /* 找出小数点的位置 */
        if(b-i<n)    /* 当小数点后的位数小于要保留的位数时 */
        {
                printf("对不起,您输入的数字与所要保留的位数不符,请重新输入.\n");
                sleep(1);   /* ~~暂停屏幕1秒 */
                return 0;  /* 返回 0 ,要求重新输入 */
        }
        p=a+i+n+1;    /* 指针指向要保留的字符位数后一位 */
        if(*p>'4')
        {
                *(p-1)+=1;
                *p='\0'; /* 如果保留字符后的数字大于4,保留字符加1,并在后*/
        }                /* 面加上结束标记 */
        else    *p='\0'; /* 如果保留字符后的数字小于4,直接将它重新赋为结束标记*/
        return 1;       /* 如果四舍五入成功,返回 1 */
}
int main(void)
{
        char a[N];
        int n,b;
        do
        {
                system("cls");      /* 当输入出错后返回时,清屏 */
                printf("请输入想要保留的小数后位数:\n");
                scanf("%d",&n);
                X;          /* 清除键盘缓存 */
                printf("\n请输入您的数字:\n");
                gets(a);   /* 输入字符串*/
                b=ch(a,n); /* 调用函数四舍五入 */
        }
        while(!b);
        printf("\n四舍五入后的数字为:\n");
        puts(a);


        getch();
}
        
2008-5-14 01:33
独行者123
Rank: 1
等级:新手上路
帖子:17
积分:354
注册:2008-5-1
回复 6# 的帖子

能否写的简单点啊,貌似很多语句都看不太懂啊,我才刚开始学C 不久,指针还没接触啊

[ 本帖最后由 独行者123 于 2008-5-14 09:23 编辑 ]
2008-5-14 09:22
netsolo
Rank: 3Rank: 3
等级:中级会员
帖子:118
积分:2062
注册:2008-3-6

直接用printf函数就可以了

printf("%.*f\n", n, f);

[ 本帖最后由 netsolo 于 2008-5-14 09:38 编辑 ]
2008-5-14 09:29
独行者123
Rank: 1
等级:新手上路
帖子:17
积分:354
注册:2008-5-1
回复 8# 的帖子

什么意思啊,听不懂啊,能否写出程序啊,谢了啊,不要用指针啦,我还没开始交指针,刚上完函数
2008-5-14 09:37
netsolo
Rank: 3Rank: 3
等级:中级会员
帖子:118
积分:2062
注册:2008-3-6

哪用到指针了???
printf函数格式字符串里的%后门的*表示这个位置的数字由后面参数指定
2008-5-14 09:40
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.067229 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved